gpt4 book ai didi

c# - 使用自定义数据源时如何隐藏DataGridView的列?

转载 作者:IT王子 更新时间:2023-10-29 04:15:07 33 4
gpt4 key购买 nike

我有一个用 C# 编写的小应用程序,它有一个使用以下方法填充的 DataGridView:

grid.DataSource = MyDatasource 数组;

MyClass 保存列的结构,它看起来像这样:

class MyDatasource
{
private string column1;
private string column2;

public MyDatasource(string arg1, string arg2)
{
this.column1 = arg1;
this.column2 = arg2;
}

public string column1
{
get
{
return this.column1;
}
set
{
this.column1 = value;
}
}

public string column2
{
get
{
return this.column2;
}
set
{
this.column1 = value;
}
}
}

一切正常,DataGridView 中填充了正确的数据,但现在我想隐藏 column2。我尝试在列声明上方添加 [Browsable(false)] ,这将隐藏它,但我还需要从代码访问列值,当我使用 [Browsable(false) ] 并尝试阅读它在该列不存在时表现得像的内容。如果我不使用它,我可以毫无问题地阅读该列,但它在 DataGridView 中可见。

如何隐藏该列但仍然能够从代码中读取其内容?

最佳答案

在某些情况下,先将列添加到 DataGridView 然后再隐藏它可能不是一个好主意。

例如,我有一个类,它有一个 NHibernate 代理,用于公司 Logo 的 Image 属性。如果我访问该属性(例如,通过调用其 ToString 方法以在 DataGridView 中显示该属性),它将从 SQL 服务器下载图像。如果我有一个 Company 对象列表并将其用作 DataGridView 的数据源,那么(我怀疑)它会在我隐藏该列之前下载所有 Logo 。

为了防止这种情况,我使用了自定义属性

 [System.ComponentModel.Browsable(false)]

在图像属性上,以便 DataGridView 忽略该属性(不创建列并且不调用 ToString 方法)。

 public class Company
{
...
[System.ComponentModel.Browsable(false)]
virtual public MyImageClass Logo { get; set;}

关于c# - 使用自定义数据源时如何隐藏DataGridView的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6960739/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com