我一直致力于使用TabControl
的C#项目。我有DataTable
绑定,使用相同的DataView
到两个不同的实体,一个标签中有ListBox
,另一个标签中有DataGridView
。
我已经开始在发布之间保存用户对这些控件的选择。启动时,ListBox
和DataGridView
都设置为正确的值。当标签切换发生时,如果我没有更改ListBox
中的所选项目,则DataGridView
上的所选行设置为null
,然后SelectedIndexChanged
调用ListBox
的回调,相信列表中的第一项被选中。但是,如果我在启动时强制显示DataGridView
的标签,则不会出现此问题。
显示或输入时,控件和选项卡都没有任何回调。我在这里没有想法。
示例代码:
/// <summary>
/// Updates several on-screen controls based on the currently selected item.
/// </summary>
private void updateDisplay()
{
Console.WriteLine("Selection (ListBox): " + myListBox.SelectedIndex);
Console.WriteLine("Selection (DataGridView): " + ((myDataGridView.SelectedRows.Count > 0) ? (""+myDataGridView.SelectedRows[0].Index) : ("null"));
// Update the various labels and textboxes.
}
/// <summary>
/// Callback when the selected index of myListBox changes.
/// </summary>
private void myListBox_SelectedIndexChanged(object sender, EventArgs e)
{
updateDisplay();
}
/// <summary>
/// Callback when the selected row of myDataGridView changes.
/// </summary>
private void myDataGridView_SelectionChanged(object sender, EventArgs e)
{
updateDisplay();
}
结果:
//发布时
选择(ListBox):1
选择(DataGridView):1
//标签更改后
选择(ListBox):0
选择(DataGridView):null
有什么想法吗?
答案 0 :(得分:0)
希望this有所帮助:
控件上不会发生DataBinding 直到创建控件。一个 TabPage仅创建子控件 TabPage制作完成后 可见。要使DataBinding发生, 你需要强迫孩子 要创建的TabPage上的控件 你可以做到的一种方法是 显示/隐藏TabPage(就像你一样) 已经发现了。)