【问题标题】:ListBox with overriden CreateParams doesn't raise item events具有覆盖 CreateParams 的 ListBox 不会引发项目事件
【发布时间】:2008-12-29 17:33:06
【问题描述】:

我在here 中创建了一个自定义列表框。 问题是它不会引发任何特定于项目的事件,例如 DrawItem 和 SelectedIndexChanged。

知道为什么吗? 谢谢。

【问题讨论】:

    标签: c# winforms listbox


    【解决方案1】:

    当我尝试这段代码时它工作得很好:

      public partial class Form1 : Form {
        MyListBox mList;
        public Form1() {
          InitializeComponent();
        }
    
        protected override void OnLoad(EventArgs e) {
          mList = new MyListBox(this);
          mList.Location = new Point(5, 10);
          mList.Size = new Size(50, this.ClientSize.Height + 50);
          for (int ix = 0; ix < 100; ++ix) mList.Items.Add(ix);
          mList.SelectedIndexChanged += new EventHandler(mList_SelectedIndexChanged);
        }
    
        void mList_SelectedIndexChanged(object sender, EventArgs e) {
          MessageBox.Show(mList.SelectedIndex.ToString());
        }
    
        protected override void Dispose(bool disposing) {
          // Moved from Designer.cs file
          if (disposing) mList.Dispose();
          if (disposing && (components != null)) {
            components.Dispose();
          }
          base.Dispose(disposing);
        }
    
      }
    

    【讨论】:

    • 可能是因为我删除了设置 CreateParams 样式的行(否则我根本看不到列表框)?它有什么用?
    • Style 成员对于使课程按预期工作至关重要。如原始帖子中所述,您不能在设计器中使用它。您必须在运行时创建它。我在这篇文章中给出了如何做到这一点的示例代码。
    • 我遇到了同样的问题,根本看不到列表框 - 解决方案是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    相关资源
    最近更新 更多