Pequeña Duda con C#

Iniciado por Avispon99, 18 Noviembre 2017, 01:58 AM

0 Miembros y 1 Visitante están viendo este tema.

Avispon99


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:

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();
           
           
       }
   

Eleкtro

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

Cita de: Avispon99 en 18 Noviembre 2017, 01:58 AMcomo 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 (csharp,1,3) [Seleccionar]
[DefaultEvent("Click")]
public class Button {
public event EventHandler<EventArgs> Click;
   // ...
}


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'.

Cita de: Avispon99 en 18 Noviembre 2017, 01:58 AMlo 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 (csharp,3) [Seleccionar]
namespace WindowsFormsApp1 {
   public partial class Form1 : Form {
       private void button1_Click(object sender, EventArgs e) { }
   }
}


Form1.Designer.cs
Código (csharp,11) [Seleccionar]
namespace WindowsFormsApp1 {
   partial class Form1 {
       //...
       private void InitializeComponent() {
           this.button1 = new System.Windows.Forms.Button();
           this.SuspendLayout();
           //
           // button1
           //
           //...
           this.button1.Click += new System.EventHandler(this.button1_Click);
           //...
       }
       //...
   }
}


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.








Avispon99

Cita de: Eleкtro en 18 Noviembre 2017, 07:59 AM
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 (csharp,1,3) [Seleccionar]
[DefaultEvent("Click")]
public class Button {
public event EventHandler<EventArgs> Click;
   // ...
}


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 (csharp,3) [Seleccionar]
namespace WindowsFormsApp1 {
   public partial class Form1 : Form {
       private void button1_Click(object sender, EventArgs e) { }
   }
}


Form1.Designer.cs
Código (csharp,11) [Seleccionar]
namespace WindowsFormsApp1 {
   partial class Form1 {
       //...
       private void InitializeComponent() {
           this.button1 = new System.Windows.Forms.Button();
           this.SuspendLayout();
           //
           // button1
           //
           //...
           this.button1.Click += new System.EventHandler(this.button1_Click);
           //...
       }
       //...
   }
}


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.