在VS2008中用Arraylist控制C#DataGridView
我在VS2008中使用的datagridview元素有一些问题。 这个DataGridView实际上是TabControl元素中的一个选项卡 我给了它5个柱,需要用我制作的肋骨物体的元素填充 它基本上是一个小型的库应用程序,包含一个主类和几个派生自它的类。它们都有一个ToString()方法,该方法将数据表示为包含填充datagridview所需值的关键字字符串 我只需要前5个,但有些对象将有多达12个关键字。 目前,每当我添加一个对象时,datagrid不会自动填充,相反,它会添加与特定对象的关键字数量相等的列 我目前正在做的是:在VS2008中用Arraylist控制C#DataGridView,c#,winforms,visual-studio-2008,datagridview,tabcontrol,C#,Winforms,Visual Studio 2008,Datagridview,Tabcontrol,我在VS2008中使用的datagridview元素有一些问题。 这个DataGridView实际上是TabControl元素中的一个选项卡 我给了它5个柱,需要用我制作的肋骨物体的元素填充 它基本上是一个小型的库应用程序,包含一个主类和几个派生自它的类。它们都有一个ToString()方法,该方法将数据表示为包含填充datagridview所需值的关键字字符串 我只需要前5个,但有些对象将有多达12个关键字。 目前,每当我添加一个对象时,datagrid不会自动填充,相反,它会添加与特定对象的
public void libDataGrid_Click(object sender, EventArgs e)
{
if(this.manager.Lib.LibList[0] != null)
{
libDataGrid.DataSource = this.manager.Lib.LibList;
libDataGrid.Refresh();
}
}
this.manager.Lib.LibList
返回和ArrayList,所有对象都存储在其中。ArrayList可以包含所有派生类的元素,但由于它们都是连接的,所以字符串表示将始终包含填充网格所需的元素
我不知道如何才能只过滤前五个,然后把它们放在正确的列中
还有一件事。目前,我只能通过单击DataGridView来刷新它。当我切换到Tabcontrol上的特定选项卡时,它应该会打开
我尝试为SelectedIndexChanged添加一个参数,但实际上没有任何作用。。。
或者至少,它似乎什么也没做
我的意思是我注释掉了上面的代码,并添加了以下内容:
public void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
libDataGrid.DataSource = this.manager.Lib.LibList;
libDataGrid.Refresh();
}
每次更改选项卡时,无论更改为哪一个选项卡,都会刷新该选项卡。
我不得不删除if语句,因为它给了我一个例外。可能是因为ArrayList的长度没有在初始化时设置。我只能给出部分答案,但我认为原因是
public void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
libDataGrid.DataSource = this.manager.Lib.LibList;
libDataGrid.Refresh();
}
不起作用,是因为您需要在tabControl1初始化的位置添加此行。我遇到过这样的问题,VS自己不会这样做
tabControl1.SelectedIndexChanged += new EventHandler(tabControl1_SelectedIndexChanged);
如果我理解你的问题,它似乎类似于我最近在这篇文章中努力解决的问题 请尝试拨打:
libDataGrid.Invalidate();
这将强制Windows重新绘制控件。无需重新连接数据源并刷新。(我想你可以安全地注释掉这两行。)
另外:您得到的例外情况是什么
您是否使用了“数据源配置向导”来帮助您使用dataGridView?我对这个问题有点困惑,但以下是一些想法:
DataGridView
有一个属性;如果不希望它创建自己的列,请将其设置为falseDataGridView
(在使用TypeDescriptor
的任何列表控件的cmomon中)将非常喜欢list
(对于某些T
!=对象
)到ArrayList
,因为它甚至可以为空列表获取元数据。一般来说,在2.0中使用ArrayList
是一个错误异常是ArgumentOutOfRangeException我尝试了配置向导,但这只是为了让我选择构造函数,它保存的不仅仅是ArrayList。好吧,值得一试。祝你好运