C#为什么在选项卡控件内的我的DataGridView上列索引会随机更改
我有一个很奇怪的问题。我在Windows窗体上有一个带有3个选项卡的选项卡控件。每个选项卡都有一个相同的DataGridView。我在每个DataGridView的第5列中都有一个按钮。相同的选项卡,相同的网格视图,垂直相同的代码来填充每一个,如下所示 但是,列索引的工作方式与第一个选项卡的预期完全相同,即零索引。但对于第二个和第三个选项卡,它似乎将第一列视为索引,呃,-1,我猜是因为它没有看到它。但这里有一个非常奇怪和恼人的部分……它似乎是随机变化的。有时,当我运行程序时,它会按预期工作,并将第一列作为索引0,有时它会显示奇怪的行为,如所述,完全忽略第一列并将第二列作为索引0。这是一个巨大的问题,因为我从列中的单元格中获取值来填充另一个表单——第5列中的按钮将打开该表单C#为什么在选项卡控件内的我的DataGridView上列索引会随机更改,c#,datagridview,tabcontrol,C#,Datagridview,Tabcontrol,我有一个很奇怪的问题。我在Windows窗体上有一个带有3个选项卡的选项卡控件。每个选项卡都有一个相同的DataGridView。我在每个DataGridView的第5列中都有一个按钮。相同的选项卡,相同的网格视图,垂直相同的代码来填充每一个,如下所示 但是,列索引的工作方式与第一个选项卡的预期完全相同,即零索引。但对于第二个和第三个选项卡,它似乎将第一列视为索引,呃,-1,我猜是因为它没有看到它。但这里有一个非常奇怪和恼人的部分……它似乎是随机变化的。有时,当我运行程序时,它会按预期工作,并将
private void populateToolsDataGrid()
{
doc = XDocument.Load(XMLfilePath + "\\DataFile\\ILS_Support_TOOLS.xml"); // this works but does not allow sorting
var xmlData = from supeq in doc.Elements("data").Elements("supequi").Elements("tool")
select new
{
Name = supeq.Element("toolName").Value,
NSN = supeq.Element("toolNSN").Value,
PN = supeq.Element("toolPN").Value,
Cage = supeq.Element("toolCage").Value,
ID = supeq.Attribute("id").Value
};
GridViewTools.DataSource = xmlData.ToList();
GridViewTools.Columns["ID"].Visible = false;
if (GridViewTools.Columns.Contains("detailsButton") == false)
{
DataGridViewButtonColumn button = new DataGridViewButtonColumn();
{
button.Name = "detailsButton";
button.HeaderText = "Details";
button.Text = "Details";
button.UseColumnTextForButtonValue = true;
GridViewTools.Columns.Add(button);
}
}
if (toolDetailsButtonInitialised == false)
{
GridViewTools.CellClick += dataGridViewTools_CellClick; // click event for the button click
toolDetailsButtonInitialised = true;
}
GridViewTools.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
}
隐藏选项卡中的控件并不总是如预期的那样更新。尝试在馈送DGV之前显示选项卡!谢谢你的评论。您的意思是在填充dgv之前使用“SelectTab”,即tabControl1.SelectTab(0)还是其他“显示选项卡”的方式?是的,这就是我的意思。我觉得很刻薄,但会奏效。。