c# - Winform 上的 C# ComboBox 是否有更新前

标签 c# winforms combobox beforeupdate

我来自 VBA 世界,记得有一个 BeforeUpdate 调用我可以在组合框上进行。现在我在使用 C#(并且很喜欢它),我想知道是否有 BeforeUpdate 调用 Winform 上的 ComboBox

我可以制作一个不可见的文本框并在其中存储我需要的信息,更新后,查看该文本框以找到我需要的信息,但我希望有一个更简单的解决方案。

最佳答案

WF 的优点之一是您可以轻松制作自己的。向您的项目添加一个新类并粘贴下面的代码。编译。将工具箱顶部的新控件拖放到窗体上。实现更新前事件。

using System;
using System.ComponentModel;
using System.Windows.Forms;

public class MyComboBox : ComboBox {
  public event CancelEventHandler BeforeUpdate;

  public MyComboBox() {
    this.DropDownStyle = ComboBoxStyle.DropDownList;
  }

  private bool mBusy;
  private int mPrevIndex = -1;

  protected virtual void OnBeforeUpdate(CancelEventArgs cea) {
    if (BeforeUpdate != null) BeforeUpdate(this, cea);
  }

  protected override void OnSelectedIndexChanged(EventArgs e) {
    if (mBusy) return;
    mBusy = true;
    try {
      CancelEventArgs cea = new CancelEventArgs();
      OnBeforeUpdate(cea);
      if (cea.Cancel) {
        // Restore previous index
        this.SelectedIndex = mPrevIndex;
        return;
      }
      mPrevIndex = this.SelectedIndex;
      base.OnSelectedIndexChanged(e);
    }
    finally {
      mBusy = false;
    }
  }
}

关于c# - Winform 上的 C# ComboBox 是否有更新前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/425241/

相关文章:

c# - 事件处理程序未在动态按钮单击时触发

C#假设浮点文字是double类型?

c# - 如何在类似于 phpMyAdmin 的 asp.net 中创建动态表/字段

c# - Windows 10 操作系统上的 Windows 窗体图形问题

c# - 如何向控件添加工具提示?

c# - Linq 的性能包含

c# - 打印导致视觉样式异常

c# - Winform 绑定(bind)下拉列表从字典将名称更改为友好名称

c# - 如果以前的记录在 ItemsSource 集合中没有匹配项,则 WPF ComboBox 绑定(bind)有效,如果有则失败

c# - 使用 MySQL 查询填充列表<string>