elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Pequeña Duda con C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pequeña Duda con C#  (Leído 1,601 veces)
Avispon99

Desconectado Desconectado

Mensajes: 82



Ver Perfil WWW
Pequeña Duda con C#
« en: 18 Noviembre 2017, 01:58 »


Buenas.

Ando diseñando un par de cosas en C# con Forms (ventanas). Y como ya sabran cada vez que uno clikea por error alguna herramienta de la ventana de diseño aunque sea un simple "Label" aparece un Metodo "private void" ... lo cual es bastante molesto por que el codigo queda recargado con metodos de tipo (EventArgs) que no voy a usar, y si trato de borrar esos metodos que no voy a usar oviamente el programa entra en conflicto y me toca cerrar sin guardar y volver a abrir el Visual Studio para no perder el trabajo.. Asi que quisiera saber si hay alguna forma de remover esos metodos que no me interesan, ya que tengo que presentar el codigo con una buena presentación y todos esos metodos sin usar me estorban un poco.. A continuacion les muestro el codigo para que vean que se ve recargado con metodos "private void" sin uso:

Código:
public partial class calculadora : Form
    {
        double prim, seg, resultado;
        string operacion;

        public calculadora()
        {
            InitializeComponent();
        }

        private void calculadora_Load(object sender, EventArgs e)
        {

        }

        private void c_Click(object sender, EventArgs e)
        {

        }

        private void button16_Click(object sender, EventArgs e)
        {
            operacion = "/";

            try
            {
                prim = double.Parse(caja.Text);
            }
            catch (Exception)
            {
                MessageBox.Show("Coloca el Numero a Operar Primero !  XD");
            }

            caja.Clear();
        }

        private void cero_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "0";
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void borrar_Click(object sender, EventArgs e)
        {
            caja.Clear();
        }

        private void uno_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "1";
        }

        private void dos_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "2";
        }

        private void tres_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "3";
        }

        private void cuatro_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "4";
        }

        private void cinco_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "5";
        }

        private void seis_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "6";
        }

        private void siete_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "7";
        }

        private void ocho_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "8";
        }

        private void nueve_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + "9";
        }

        private void resta_Click(object sender, EventArgs e)
        {
            operacion = "-";

            try
            {
                prim = double.Parse(caja.Text);
            }
            catch (Exception)
            {
                MessageBox.Show("Coloca el Numero a Operar Primero !  XD");
            }

            caja.Clear();
        }

        private void multiplicacion_Click(object sender, EventArgs e)
        {
            operacion = "x";

            try
            {
                prim = double.Parse(caja.Text);
            }
            catch (Exception)
            {
                MessageBox.Show("Coloca el Numero a Operar Primero !  XD");
            }

            caja.Clear();
        }

        private void igual_Click(object sender, EventArgs e)
        {
            seg = double.Parse(caja.Text);

            switch (operacion)
            {
                case "+":
                    resultado = prim + seg;
                    caja.Text = resultado.ToString();
                    break;

                case "-":
                    resultado = prim - seg;
                    caja.Text = resultado.ToString();
                    break;

                case "x":
                    resultado = prim * seg;
                    caja.Text = resultado.ToString();
                    break;

                case "/":
                    resultado = prim / seg;
                    caja.Text = resultado.ToString();
                    break;
            }
        }

        private void punto_Click(object sender, EventArgs e)
        {
            caja.Text = caja.Text + ".";
        }

        private void suma_Click(object sender, EventArgs e)
        {
          
                operacion = "+";
      
            try
            {
                prim = double.Parse(caja.Text);
            }
            catch (Exception)
            {
                MessageBox.Show("Coloca el Numero a Operar Primero !  XD");
            }

                caja.Clear();
            
            
        }
    


« Última modificación: 18 Noviembre 2017, 02:02 por Avispon99 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Pequeña Duda con C#
« Respuesta #1 en: 18 Noviembre 2017, 07:59 »

Por favor, publica las dudas sobre C# en el subforo de programación .NET.

como ya sabran cada vez que uno clikea por error alguna herramienta de la ventana de diseño aunque sea un simple "Label" aparece un Metodo "private void" ...

Estás describiendo el comportamiento por defecto al hacer DOBLE click (que no click) sobre un control en el diseñador de Forms, se autogenera el código del controlador del evento por defecto especificado en la clase del control, esto lo controla Visual Studio según el evento especificado en el atributo de clase DefaultEvent, por ejemplo:

Código
  1. [DefaultEvent("Click")]
  2. public class Button {
  3. public event EventHandler<EventArgs> Click;
  4.    // ...
  5. }

Si realmente te ocurre mucho ese "error", entonces lo que deberías hacer es no hacer doble click a un control o Form sabiendo lo que va a suceder despues, o quizás quieras probar a disminuir la velocidad de doble click en las propiedades del Mouse del Panel de Control en Windows.

...O simplemente cuando ese "error" te suceda, puedes deshacer la autogeneración del código pulsando la combinación de teclas 'CONTROL+Z'.

lo cual es bastante molesto por que el codigo queda recargado con metodos de tipo (EventArgs) que no voy a usar, y si trato de borrar esos metodos que no voy a usar oviamente el programa entra en conflicto y me toca cerrar sin guardar y volver a abrir el Visual Studio para no perder el trabajo.. Asi que quisiera saber si hay alguna forma de remover esos metodos que no me interesan

Estoy completamente de acuerdo en que es muy molesto, el problema viene a raiz de que en C#, a diferencia de VB.NET, no es suficiente con eliminar el bloque de código del controlador de un evento, sino que también se requiere eliminar la sentencia de asociación del evento que se autogenera (como es lógico, ya que C# no posee la palabra reservada Handles, y esto hace que en C# se vuelva algo molesto y nos quite productividad al programar), el cual lo puedes encontrar definido en la clase del código autogenerado del diseñador del Form...

Ejemplo:

Form1.cs
Código
  1. namespace WindowsFormsApp1 {
  2.    public partial class Form1 : Form {
  3.        private void button1_Click(object sender, EventArgs e) { }
  4.    }
  5. }

Form1.Designer.cs
Código
  1. namespace WindowsFormsApp1 {
  2.    partial class Form1 {
  3.        //...
  4.        private void InitializeComponent() {
  5.            this.button1 = new System.Windows.Forms.Button();
  6.            this.SuspendLayout();
  7.            //
  8.            // button1
  9.            //
  10.            //...
  11.            this.button1.Click += new System.EventHandler(this.button1_Click);
  12.            //...
  13.        }
  14.        //...
  15.    }
  16. }

Supongo que ha quedado claro lo que debes hacer: cuando elimines el código de un controlador de evento en la clase FormXX.cs, también debes eliminar la asociación de evento de dicho control, en el bloque del método InitializeComponent de la clase FormXX.Designer.cs

Saludos.


« Última modificación: 18 Noviembre 2017, 08:16 por Eleкtro » En línea


Avispon99

Desconectado Desconectado

Mensajes: 82



Ver Perfil WWW
Re: Pequeña Duda con C#
« Respuesta #2 en: 19 Noviembre 2017, 07:00 »

Por favor, publica las dudas sobre C# en el subforo de programación .NET.

Estás describiendo el comportamiento por defecto al hacer DOBLE click (que no click) sobre un control en el diseñador de Forms, se autogenera el código del controlador del evento por defecto especificado en la clase del control, esto lo controla Visual Studio según el evento especificado en el atributo de clase DefaultEvent, por ejemplo:

Código
  1. [DefaultEvent("Click")]
  2. public class Button {
  3. public event EventHandler<EventArgs> Click;
  4.    // ...
  5. }

Si realmente te ocurre mucho ese "error", entonces lo que deberías hacer es no hacer doble click a un control o Form sabiendo lo que va a suceder despues, o quizás quieras probar a disminuir la velocidad de doble click en las propiedades del Mouse del Panel de Control en Windows.

...O simplemente cuando ese "error" te suceda, puedes deshacer la autogeneración del código pulsando la combinación de teclas 'CONTROL+Z'.

Estoy completamente de acuerdo en que es muy molesto, el problema viene a raiz de que en C#, a diferencia de VB.NET, no es suficiente con eliminar el bloque de código del controlador de un evento, sino que también se requiere eliminar la sentencia de asociación del evento que se autogenera (como es lógico, ya que C# no posee la palabra reservada Handles, y esto hace que en C# se vuelva algo molesto y nos quite productividad al programar), el cual lo puedes encontrar definido en la clase del código autogenerado del diseñador del Form...

Ejemplo:

Form1.cs
Código
  1. namespace WindowsFormsApp1 {
  2.    public partial class Form1 : Form {
  3.        private void button1_Click(object sender, EventArgs e) { }
  4.    }
  5. }

Form1.Designer.cs
Código
  1. namespace WindowsFormsApp1 {
  2.    partial class Form1 {
  3.        //...
  4.        private void InitializeComponent() {
  5.            this.button1 = new System.Windows.Forms.Button();
  6.            this.SuspendLayout();
  7.            //
  8.            // button1
  9.            //
  10.            //...
  11.            this.button1.Click += new System.EventHandler(this.button1_Click);
  12.            //...
  13.        }
  14.        //...
  15.    }
  16. }

Supongo que ha quedado claro lo que debes hacer: cuando elimines el código de un controlador de evento en la clase FormXX.cs, también debes eliminar la asociación de evento de dicho control, en el bloque del método InitializeComponent de la clase FormXX.Designer.cs

Saludos.

Hola Parce.

En realidad ya lo habia resuelto, me disculpo por no avisar para cerrar este tema XD

En realidad no fue necesario hacer gran cosa, el problema solo era que estaba haciendo la remoción al revés :v 
 
Pero ya lo arregle. Igual gracias por la respuesta.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Una pequeña duda....
Grabadoras
Viequense 3 1,151 Último mensaje 3 Agosto 2004, 08:41
por Luis_Kano
;D Pequeña duda
Fotografía
RastonE 3 2,776 Último mensaje 13 Octubre 2005, 21:20
por Morris
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 7,538 Último mensaje 13 Febrero 2008, 21:41
por revenge1252
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines