Windows Forms c# 将函数添加到运行时下的新列表框

Windows Forms c# Add functions to an new Listbox under runtime

我是 C# Windows 表单的初学者。我尝试 google 这个但不确定我是否理解这是怎么可能的。我想在 运行 时间内创建一个列表框,并成功地创建了一个这样的列表框:

      private void button3_Click(object sender, EventArgs e)
        {

            ListBox lb = new ListBox();
            
            lb.AllowDrop = true;
            lb.FormattingEnabled = true;
            lb.Size = new System.Drawing.Size(200, 100);
            lb.Location = new System.Drawing.Point(100, 250);

            this.Controls.Add(lb);
        }

但是我的列表框的函数中还需要条件,我想在设计器中添加代码以将这些也添加到列表框。我想添加这样的功能,例如:


lb.DragEnter += new System.Windows.Forms.DragEventHandler(this.lb_DragEnter);

   and 

 private void lb_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(typeof(System.String)))

                e.Effect = DragDropEffects.Move;
            else
                e.Effect = DragDropEffects.None;
        }

我希望我把我的问题解释清楚!

欢迎堆叠。

我可能误解了你的意思,但你不能直接在你的 button3_Click 方法中添加事件吗?

private void button3_Click(object sender, EventArgs e)
{
    ListBox lb = new ListBox();
        
    lb.AllowDrop = true;
    lb.FormattingEnabled = true;
    lb.Size = new System.Drawing.Size(200, 100);
    lb.Location = new System.Drawing.Point(100, 250);

    // Your event
    lb.DragEnter += new System.Windows.Forms.DragEventHandler(this.lb_DragEnter);

    this.Controls.Add(lb);
}


private void lb_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(typeof(System.String)))
        e.Effect = DragDropEffects.Move;
    else
        e.Effect = DragDropEffects.None;
}