0

我目前正在创建一个 Windows 窗体应用程序,我想从数据库中获取数据,该数据库将同步到我可以在特定表中找到的尽可能多的目标数据库。

为此,我为每个目标数据库实用地创建了一个TabControl内部文件。对于每个我创建一个 DataGridview 来存储数据,并让用户选择他们想要同步的记录。Form 1TabPagesTabPage

foreach (DataRow row in targetDatabases.Rows)
{
    //Checking for target databases that aren't Master
    if (int.Parse(row["IS_MASTER"].ToString()) == 0)
    {
        //Creating a new TabPage for every target found in the Table
        TabPage newPage = new TabPage(row["CODE"].ToString());

        // I'm not sure if this should be
        newPage.Parent = tabControl;
        // or tabControl.Controls.Add(newPage)

        //Creating a new DataGridView for every target found
        DataGridView newDgv = new DataGridView();

        //Also not sure if this should be
        newDgv.Parent = newPage;
        //or newPage.Controls.Add(newDgv)

        //Setting the DataSource
        currDGV.DataSource = Model.getGridViewData(xmlpath, 0);

        //Layout settings for the DataGridView
        .
        .
        .
        }
    }
    // Return the TabControl to the View
    return tabControl;

到现在都没问题。

现在用户可以选择他想要同步哪些记录以及同步到哪个目标。

这是它的样子:

在此处输入图像描述

但是现在,我不知道如何访问每个中的数据DataGridView以将用户选择保存到文件或开始同步。

我试过这样的事情:

for (int i = 0; i < targetDatabaseCount; i++)
{
    tabPages[targetDatabaseCount] = (TabPage)inputTabControl.GetControl(targetDatabaseCount);
    foreach (TabPage tabPage in tabPages)
    {
       DataGridView tempDgv =  //don't know how to get the gridview from the TabPage
    }
}

请对我宽容,因为我是学徒,这是我在这里的第一篇文章:)

4

1 回答 1

1

您可以迭代每个标签页中的控件,如果控件是 datagridview,您可以对其进行转换和使用。

像这样:

foreach (TabPage tbp in tbctrl.TabPages)
        {
            foreach (Control ctrl in tbp.Controls)
            {
                if (ctrl is DataGridView)
                {
                    DataGridView newDgv = (DataGridView)ctrl;
                    string strValue = newDgv.Rows[0].Cells[0].Value.ToString();
                }
            }
        }
于 2013-03-27T11:37:39.597 回答