c# - 如何使用设计人员友好的预绑定(bind)数据源创建派生组合框?

标签 c# winforms combobox datasource designer

我想从 System.Windows.Forms.ComboBox 创建一个派生控件,该控件绑定(bind)到我从数据库中检索到的对象列表。想法是其他开发人员可以将此控件放在他们的表单上,而不必担心数据源、绑定(bind),除非他们愿意。

我尝试扩展组合框,然后在构造函数中设置 DataSource、DisplayMember 和 ValueMember。

public class CustomComboBox : ComboBox
{
    public CustomComboBox() 
    {
        this.DataSource = MyDAL.GetItems(); // Returns List<MyItem>
        this.DisplayMember = "Name";
        this.ValueMember = "ItemID";
    }
}

在我运行时工作,但一旦将它添加到任何表单,就会在 Visual Studio 中抛出很多错误。我得到的错误是:

"Code generation for property 'Items' failed. Error was: 'Object reference not set to an instance of an object"

完成此任务的正确方法是什么(C#、Winforms、.NET 2.0+)?

最佳答案

问题是设计者实际上在与正常运行程序略有不同的上下文中进行了一些编译和执行。

在构造函数中,您可以将代码包装在:

if (!DesignMode)
{
  //Do this stuff
}

这将告诉设计人员在设计时不要运行任何初始化代码。

关于c# - 如何使用设计人员友好的预绑定(bind)数据源创建派生组合框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451058/

相关文章:

c# - Xamarin.Forms:如何设置 NavigationPage 栏的背景图片

c# - 大写方法名称的 C# 标准是什么?

c# - 在 winform 中使用 COM 组件时出错

python - 如何从字典键设置 tkinter 组合框的值

javascript - 填充 dojo dijit 组合框

c# - 登录后如何返回之前的网址? ( Ajax )

c# - 正确退出使用 .NET 4.0 任务的 .net 控制台应用程序

c# - 移植WinForms拖拽到WPF拖拽

c# - WPF 中的文本框文本更改事件

选择的 Html 选择选项不起作用