Windows Forms c#在运行时添加函数到一个新的Listbox

Posted

技术标签:

【中文标题】Windows Forms c#在运行时添加函数到一个新的Listbox【英文标题】:Windows Forms c# Add functions to an new Listbox under runtime 【发布时间】: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。 您好,感谢您提供链接和反馈。祝你有美好的一天,亲切的问候 【参考方案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;

【讨论】:

嗨,感谢您的快速回答,它的工作!我之前尝试过类似的东西,但我一定错过了一些东西,当我尝试时我错过了参考。但是您的解决方案运行良好。非常感谢。

以上是关于Windows Forms c#在运行时添加函数到一个新的Listbox的主要内容,如果未能解决你的问题,请参考以下文章

在 Parallels 8 中的 Windows 7 上运行 C# Windows Forms 应用程序错误

如何在 C# 中将文本提取/插入到 RTF 字符串中

C#选择文件对话框

C# Windows Forms Spotify API 用户授权

如何检测 C# Windows Forms 代码在 Visual Studio 中执行?

如何在非托管类中将 Tick 事件添加到 System::windows::Forms::Timer