Programa en C# para leer un archivo: El botón no funciona

Aquí está mi código, por alguna razón, el botón dos no se dispara, el botón uno sí y cuando coloco el código del botón 2 en uno, funciona allí. ¿Qué me estoy perdiendo de la sintaxis para que los botones uno y dos funcionen al hacer clic? Llevo aproximadamente 2 semanas aprendiendo c #, por lo que todo esto es nuevo para mí, no veo por qué este código no debería funcionar.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{

    public partial class Form1 : Form
    {
        string filePath = null;
        public Form1()
        {
            InitializeComponent();
        }

        //Method to check database connection
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("button1.Click was raised.");
        }

        //Method to select a file
        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog file = new OpenFileDialog();
            if (file.ShowDialog() == DialogResult.OK)
            {
                filePath = file.FileName;
            }
        }
    }
}

preguntado el 08 de marzo de 13 a las 21:03

¿Ha asignado el evento de clic al método button2_click? -

El código publicado está incompleto, no hay señales de que se estén asignando eventos. El programa está usando un .designer.cs archivo, que no está publicado, y por lo tanto es imposible para nosotros ayudarlo. -

2 Respuestas

Supongo que el controlador de eventos no está suscrito (más). Así que echa un vistazo a la clase parcial de Form1 en el archivo generado automáticamente Form1.Designer.cs. Debe haber en algún lugar esto:

this.button1.Click += new System.EventHandler(this.button1_Click);
// is this missing?
this.button2.Click += new System.EventHandler(this.button2_Click);

Cómo: suscribirse y darse de baja de eventos (Guía de programación de C#)

respondido 08 mar '13, 21:03

Gracias, no sabía que tenía que registrar todos esos controladores de eventos en sus archivos designer.cs. Esta es una forma genial de mantener limpio tu código. Me gusta mucho C# - Zach M.

@ZachM.: Normalmente se agregan automáticamente, por ejemplo, cuando hace doble clic en el botón. Pero tal vez lo has renombrado. Tenga en cuenta que no debe usar designer.cs para inicializar sus controles, ya que es un archivo generado automáticamente. Sus cambios se pueden sobrescribir. - Tim Schmelter

Asegurarse button2 está atado.

Desde el diseñador, seleccione el botón y luego vaya a la ventana de propiedades. Haga clic en el rayo y asegúrese de que el evento de clic esté vinculado a button2_Click.

El método alternativo es hacer clic derecho en InitializeComponent() y seleccione "Ir a definición" (lo lleva a Form1.designer.cs) y busque lo siguiente:

button2.OnClick += new EventHandler(button2_Click);

Si ha confirmado que está vinculado, necesitaremos ver más de lo que ha mostrado para determinar el problema.

respondido 08 mar '13, 21:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.