问题 在运行时创建的控件上绑定数据源?

tim8w

知名会员
已加入
2020年9月8日
留言内容
81
编程经验
10+
我正在使用由Nish Nishant创建的自定义MultiColumnComboBox。我想,我想在运行时进行定义,而不是在设计时进行定义,并且在绑定数据源时遇到问题。这是DataTable和MultiColumnCoboBox的代码,我试图将它们绑定在一起:

C#:
                    DataTable myDataTable = new DataTable("Defaults");
                    myDataTable.Columns.Add("DefectCode", typeof(string));
                    myDataTable.Columns.Add("DefectName", typeof(string));

                    myDataTable.Rows.Add(new string[] { "A01:", "Damage Leadwires/Sleeving" });
                    myDataTable.Rows.Add(new string[] { "A01-a:", "Damaged convolute tubing" });
                    myDataTable.Rows.Add(new string[] { "A01-b:", "Damaged Insulation" });
                    myDataTable.Rows.Add(new string[] { "A01-c", "Damaged Shrink Tubing" });
                    
                    MultiColumnComboBox myMultiColumnComboBox = new MultiColumnComboBox();
                    myMultiColumnComboBox.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
                    myMultiColumnComboBox.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
                    myMultiColumnComboBox.DataBindings.Add(new Binding("Text", myDataTable, "DefectCode", true));
                    myMultiColumnComboBox.DataSource = myDataTable;
                    myMultiColumnComboBox.DisplayMember = "DefectCode";
                    myMultiColumnComboBox.ValueMember = "DefectName";
                    myMultiColumnComboBox.DrawMode = DrawMode.OwnerDrawVariable;

我的问题是,当在运行时以这种方式定义它时,DataManager是未定义的。我究竟做错了什么?我知道您可能会说要联系Nish,但他没有回应。
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
在创建控件后立即将其添加到窗体中,然后再添加数据源。

不需要为文本属性添加DataBindings,DisplayMember将显示为所选绑定项的文本。
 

tim8w

知名会员
已加入
2020年9月8日
留言内容
81
编程经验
10+
在创建控件后立即将其添加到窗体中,然后再添加数据源。

不需要为文本属性添加DataBindings,DisplayMember将显示为所选绑定项的文本。
约翰,
创建表单后,便会在运行时中添加该控件。我刚刚添加了这一行:

C#:
myMultiColumnComboBox.DataBindings.Add(new Binding("Text", myDataTable, "DefectCode", true));

最近看看是否有帮助。删除该行无济于事。代码上线时,DataManager仍然为null:

C#:
myMultiColumnComboBox.DataSource = myDataTable;
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
您必须在添加数据源之前将控件添加到窗体。
 
解决方案
最佳 底部