【问题标题】:Working with more than 2 dynamically created datagridview使用超过 2 个动态创建的 datagridview
【发布时间】:2012-07-17 18:39:57
【问题描述】:

我正在开发一个 Windows 窗体应用程序。我的窗口窗体中有两个 tab2。在每个选项卡中,我构建了一个我将其命名为 dgvRound 的 datagridview。我将两组不同的数据加载到这两个选项卡中的两个 datagridview 中。当我从 tab1 切换到 tab2 时,我仍然看到 tab1 上的 datagridview 数据。如何更改它(货币?)以查看 tab2 中的 dgvRound,我用新数据更新 datagridview?

// tabView is my main tab page control
//  Add a new tab for a new round
string title = "Round " + Convert.ToString(intRound);
TabPage myTabPage = new TabPage(title);
tabView.TabPages.Add(myTabPage);

// set up datagridview box
DataGridView dgvRound = new DataGridView();
myTabPage.Controls.Add(dgvRound);
// set up the datagridview column and row headings
SetupTableView(dgvRound);

//load datagridview in a loop with different data from different dataset
string[] row1 = new string[] { "array of datas" };
dgvRound.Rows.Add(row1);

根据一些变量,我多次调用上述代码来创建选项卡和 dgv。每个选项卡中每个数据网格中的数据都可以。但是,当我尝试从 tab2 中的 datagridview (dgvRound) 中提取数据时,我看到的是 tab1 中的数据而不是 tab2。例如: dgvRound.Rows[0].Cells["Game 1"].Value.如何告诉它查看 tab2.dgvRound.Rows[0].Cells["Game 1"].Value?

感谢您的帮助 丹尼尔

感谢HotSoft,我终于找到了在动态创建的标签页中搜索当前datagridview的代码。我添加了这个,它现在正在工作。 TabPage CurrentTabPage = tabView.SelectedTab; // 在这里获取所有控件 Control.ControlCollection col = CurrentTabPage.Controls; // 应该只有一个 dgv foreach(在 col 中控制 myControl) { if (myControl.ToString() == "System.Windows.Forms.DataGridView") { DataGridView tempdgv = (DataGridView)myControl; tempdgv.SelectAll(); dgvRound = tempdgv; } } 再次感谢您的帮助...

【问题讨论】:

    标签: c#


    【解决方案1】:

    鉴于我看不到您在每个选项卡上动态创建 DataGridView 的代码

    看起来您在两个选项卡上都显示了相同的 DataGrid,而没有为不同选项卡上的数据网格重新加载或重新绑定不同的数据源

    更新 OP 的评论:

    您可以像这样从标签页中获取 DataGridView

    DataGridView dataGridView1 = tabPage1.Controls.OfType<DataGridView>() as DataGridView;
    DataGridView dataGridView2 = tabPage2.Controls.OfType<DataGridView>() as DataGridView;
    

    【讨论】:

    • 这是我如何创建选项卡和 dgv
    • @DanielDang 我看不到您的答案或任何链接的任何更改
    • @DanielDang 请显示从 tab1 & tab 2 的 datagridview (dgvRound) 中提取数据的代码
    • 这就是我从 dgv myNewValue = dgvRound.Rows[0].Cells["Game 1"].Value 在从 Rows[0] 到 Rows[n] 的循环中提取数据的方式.
    • 确保您选择他的答案作为您问题的答案以及@DanielDang
    【解决方案2】:

    为什么不为每个 tabPage 创建两个不同的 DataGridView? 或者,如果您只想在两个选项卡上使用 1 个 dgv,则将其清除(将数据源设置为 null)并为下一个选项卡设置新数据源。

    【讨论】:

    • 我不知道会提前创建多少个标签。每个选项卡都有一个包含不同数据集的数据网格。数据网格的结构在每个选项卡中都是相同的。现在我将它作为 dgvRound。
    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2019-05-24
    • 2018-03-09
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多