切换选项卡重置数据绑定选择

时间:2010-02-02 19:38:03

标签: c# data-binding datagridview

我一直致力于使用TabControl的C#项目。我有DataTable绑定,使用相同的DataView到两个不同的实体,一个标签中有ListBox,另一个标签中有DataGridView

我已经开始在发布之间保存用户对这些控件的选择。启动时,ListBoxDataGridView都设置为正确的值。当标签切换发生时,如果我没有更改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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

希望this有所帮助:

  

控件上不会发生DataBinding   直到创建控件。一个   TabPage仅创建子控件   TabPage制作完成后   可见。要使DataBinding发生,   你需要强迫孩子   要创建的TabPage上的控件   你可以做到的一种方法是   显示/隐藏TabPage(就像你一样)   已经发现了。)