【问题标题】:WinForms button click event not firingWinForms 按钮单击事件未触发
【发布时间】:2023-11-19 23:45:01
【问题描述】:

我没有从 Visual Studio 中得到任何错误,所以我认为代码是正确的。当我运行代码时,我按下按钮 (button1),但没有任何反应。

private void button1_Click(object sender, EventArgs e)
{       
    int a = 0;
    int b = 1;
    int c = 1;

    listBox1.Text += a.ToString();
    listBox1.Text += b.ToString();

    for (int i = 0; i < 20; i++)
    {
        c = b;
        b = a + b;
        a = c;

        listBox1.Text += b.ToString();
    }
}

【问题讨论】:

  • ListBox 从 Control 继承的 Text 属性没有有意义的实现。它在“属性”窗口中隐藏的原因。它显示多个字符串,而不仅仅是一个。使用它的 Items.Add() 方法或使用标签。

标签: c# winforms events for-loop


【解决方案1】:

Listbox 的Text 属性在这种情况下不起作用,因为它仅用于设置或获取列表框中的选定项,添加到每个数字的 itemsource 上,然后它就会起作用

 private void button1_Click(object sender, EventArgs e)
        {
            int a = 0;
            int b = 1;
            int c = 1;
            StringBuilder finalstring = new StringBuilder();
            listBox1.Text += a.ToString();
            listBox1.Text += b.ToString();

            for (int i = 0; i < 20; i++)
            {
                c = b;
                b = a + b;
                a = c;
                listBox1.Items.Add(b);
            }

        }

【讨论】:

  • 添加b到列表框项时不需要调用'.ToString()'。
【解决方案2】:

button 是否将button1_Click 注册为事件?

您可以通过添加button1.Click += button1_Click 或在表单设计器中双击它来通过您的代码进行操作。

如果还是不行,在代码上打个breakpoint看是否执行。

【讨论】:

  • 我猜这不是 OP 面临的问题!
  • 我会把它留给未来的搜索者,+1 给你