Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过父级/TabControl访问嵌套DataGridview->;选项卡页_C#_Winforms_Datagridview_Nested Controls - Fatal编程技术网

C# 通过父级/TabControl访问嵌套DataGridview->;选项卡页

C# 通过父级/TabControl访问嵌套DataGridview->;选项卡页,c#,winforms,datagridview,nested-controls,C#,Winforms,Datagridview,Nested Controls,我现在正在创建一个Windows窗体应用程序,我想从一个数据库中获取数据,该数据库将与我在特定表中可以找到的尽可能多的目标数据库同步 为此,我在我的表格1中创建了一个TabControl,为每个目标数据库创建了TabPages。对于每个TabPage,我创建一个DataGridview来存储数据,并让用户选择要同步的记录 foreach (DataRow row in targetDatabases.Rows) { //Checking for target databases that

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

为此,我在我的
表格1
中创建了一个
TabControl
,为每个目标数据库创建了
TabPages
。对于每个
TabPage
,我创建一个DataGridview来存储数据,并让用户选择要同步的记录

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
    }
}
for(int i=0;i

请宽容我,因为我是一名学徒,这是我在这里的第一篇帖子:)

您可以在每个选项卡页面中迭代控件,如果控件是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();
                }
            }
        }