转载自:http://gotostreet.blog.sohu.com/308308031.html
lookUpEdit.Properties.DataSource =
this
.categoriesBindingSource;
lookUpEdit.Properties.DisplayMember =
"CategoryName"
;
lookUpEdit.Properties.ValueMember =
"CategoryID"
;
lookUpEdit.Properties.PopulateColumns();
lookUpEdit.Properties.Columns[
"CategoryID"
].Visible =
false
;
|
上述代码是隐藏CategoryID 列的标准写法,但有时不能奏效,为什么呢?因为lookUpEdit.Properties.PopulateColumns()只能在HandleCreated事 件发生后调用,所以修改如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
if
(!lookUpEdit.IsHandleCreated)
lookUpEdit.HandleCreated +=lookUpEdit_HandleCreated;
else
InitLookUpEditDataSource();
//...
void
lookUpEdit_HandleCreated(
object
sender, EventArgs e) {
lookUpEdit.HandleCreated -= lookUpEdit_HandleCreated;
InitLookUpEditDataSource();
}
void
InitLookUpEditDataSource() {
lookUpEdit.Properties.DataSource =
this
.categoriesBindingSource;
lookUpEdit.Properties.DisplayMember =
"CategoryName"
;
lookUpEdit.Properties.ValueMember =
"CategoryID"
;
lookUpEdit.Properties.PopulateColumns();
lookUpEdit.Properties.Columns[
"CategoryID"
].Visible =
false
;
}
|
另外一个方法是直接使用Columns.Add,其他列将不再显示,代码如下: lookUpEdit.Properties.Columns.Add(new LookUpColumnInfo("CategoryName")); 这样代码就能方便的进行统一管理,而不用对页面的变量进行依赖,比如lookUpEdit是 一个传入的变量,而DataSource也需要通过一个传入的变量来取值,页面上又有很多的lookUpEdit控件。这时如果不定义一个类而只是通过一个函数很难做 到代码的复用,用第二种方法就能避免情况变的如此复杂。