Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态创建按钮并向其添加事件_C#_Windows Forms Designer - Fatal编程技术网

C# 动态创建按钮并向其添加事件

C# 动态创建按钮并向其添加事件,c#,windows-forms-designer,C#,Windows Forms Designer,我需要动态创建按钮(一个用于循环)并在其上添加“onClick”和“doubuleClick”事件 我是这样做的: Button bt = new Button(); bt.Click += bt_Click; bt.DoubleClick += bt_DoubleClick; private void bt_Click(object sender, EventArgs e) { label1.Text = this.Text; }

我需要动态创建按钮(一个用于循环)并在其上添加“onClick”和“doubuleClick”事件

我是这样做的:

  Button bt = new Button();

  bt.Click += bt_Click;         
  bt.DoubleClick += bt_DoubleClick;

  private void bt_Click(object sender, EventArgs e)
  {
        label1.Text = this.Text;
  }

  private void bt_DoubleClick(object sender, EventArgs e)
  {
        //some code
  }
首先:我的“bt_Click”方法得到“label1”中的“main form”文本。在调试器中,我看到发送方是一个按钮。怎么了

第二:我的“bt_双击”事件根本没有反应,我是不是做错了什么


感谢您的帮助

您应该将发送者转换为按钮以获取bt。文本:

Button bt = new Button();
bt.Click += bt_Click;
bt.Text = "click me";
bt.Location = new Point(100,100);
this.Controls.Add(bt);

private void bt_Click(object sender, EventArgs e)
{
    label1.Text = (sender as Button).Text;
}

按钮不会对双击事件做出反应。您可以详细阅读。

您应该将发送者转换为按钮,以获取bt。文本:

Button bt = new Button();
bt.Click += bt_Click;
bt.Text = "click me";
bt.Location = new Point(100,100);
this.Controls.Add(bt);

private void bt_Click(object sender, EventArgs e)
{
    label1.Text = (sender as Button).Text;
}

按钮不会对双击事件做出反应。您可以详细阅读。

如果我理解正确,请回答第一个问题。在
this.Text
中,
this
指的是表单,因为方法
bt\u Click
是主表单类的成员。我想你可能想做:

private void bt_Click(object sender, EventArgs e)
  {
        label1.Text = (Button)sender.Text;
  }

第二:这只是bt_Click处理程序触发两次的情况吗?

如果我理解正确的话,回答第一个问题,在
这个文本中,
这个
指的是表单,因为方法
bt_Click
是主表单类的成员。我想你可能想做:

private void bt_Click(object sender, EventArgs e)
  {
        label1.Text = (Button)sender.Text;
  }

第二:这只是bt_Click处理程序触发两次的情况吗?

最简单的方法是使用“datagrid”。 Datagread非常支持所有事件和项目(图像、文本等)的组织。
我制作了“保存”或“打开”对话框表单来浏览来自远程SFTP服务器的内容,使用datagrad非常简单,但我在使用按钮或标签时遇到了一个问题

最简单的方法是使用“数据网格”。 Datagread非常支持所有事件和项目(图像、文本等)的组织。
我制作了“保存”或“打开”对话框表单来浏览来自远程SFTP服务器的内容,使用datagrad非常简单,但我在使用按钮或标签时遇到了一个问题

谢谢大家!!第一个问题已由cast sender to Button解决。我能做些什么来即兴创作“双击”吗?我需要它来制作表单,双击时打开文件夹内容(如在windows中)。双击可以使用标签或图像,恐怕你不能使用按钮。它与标签一起工作。标签的小问题是很难将标签样式化(文本旁边的图像,如窗口中的文件夹)。标签没有“TextImageRelation”方法。谢谢!第一个问题已由cast sender to Button解决。我能做些什么来即兴创作“双击”吗?我需要它来制作表单,双击时打开文件夹内容(如在windows中)。双击可以使用标签或图像,恐怕你不能使用按钮。它与标签一起工作。标签的小问题是很难将标签样式化(文本旁边的图像,如窗口中的文件夹)。标签没有方法“TextImageRelation”。