У меня действительно странная проблема.У меня есть элемент управления вкладками в форме Windows с 3 вкладками.Каждая вкладка имеет идентичный DataGridView.У меня есть кнопка в столбце 5 на каждом из DataGridViews.Таким образом, идентичные вкладки, идентичные GridView, вертикально идентичный код для заполнения каждой из них, выглядит так, как показано ниже.
Однако индекс столбца работает точно так, как и ожидалось для первой вкладки, т.е.Но для второй и третьей вкладок кажется, что первый столбец виден как индекс, ошибаюсь, -1, я думаю, что он этого не видит.Но вот действительно странная и раздражающая часть… кажется, что она меняется случайным образомИногда, когда я запускаю программу, она работает как положено и принимает первый столбец как индекс 0, а иногда он отображает странное поведение, как описано, полностью игнорируя первый столбец, и считает второй столбец индексом 0. Это огромная проблема, поскольку явозьмите значения из ячеек в столбцах, чтобы заполнить другую форму - которую открывает кнопка в столбце 5.
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;
}
}