lookUpEdit隐藏列

本文介绍如何解决 WinForms 中 LookUpEdit 控件在设置 DataSource 和隐藏某些列时出现的问题,并提供了一种替代方案,以便更好地管理和复用代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自: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控件。这时如果不定义一个类而只是通过一个函数很难做 到代码的复用,用第二种方法就能避免情况变的如此复杂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值