【问题标题】:Windows Forms c# Add functions to an new Listbox under runtimeWindows Forms c#在运行时添加函数到一个新的Listbox
【发布时间】:2021-07-22 19:31:36
【问题描述】:

我是 C# Windows 窗体的初学者。我试图用谷歌搜索,但不确定我是否理解这是怎么可能的。我想在运行时创建一个列表框,并成功地制作了一个这样的:

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

我希望我能清楚地解释我的问题!

【问题讨论】:

  • 您是在问如何在代码中订阅事件吗?那是very basic stuff
  • 您好,感谢您提供链接和反馈。祝你有美好的一天,亲切的问候

标签: c# windows forms designer


【解决方案1】:

欢迎加入。

我可能误解了你想要做什么,但你不能在你的 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;
}

【讨论】:

  • 嗨,感谢您的快速回答,它的工作!我之前尝试过类似的东西,但我一定错过了一些东西,当我尝试时我错过了参考。但是您的解决方案运行良好。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 2021-02-21
  • 1970-01-01
相关资源
最近更新 更多