Я создал представление сетки с помощью кода и хочу изменить текст кнопки для выбранной строки с + на -, когда пользователь нажимает на нее. Я проверил несколько кодов ниже, код, который я сейчас использую, и пытаюсь изменить текст с + на - и наоборот ниже ParentGrid_CellContentClick
private void InitializeParentGrid()
{
parentGrid = new DataGridView
{
Dock = DockStyle.Fill,
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
RowHeadersVisible = false,
AllowUserToAddRows = false,
ColumnHeadersVisible = false // Hide column headers
};
// Add Expand button column
var expandColumn = new DataGridViewButtonColumn
{
Name = "Expand",
HeaderText = "",
Text = "+",
UseColumnTextForButtonValue = true,
Width = 30, // Set a small width
AutoSizeMode = DataGridViewAutoSizeColumnMode.None,
};
expandColumn.UseColumnTextForButtonValue = true;
parentGrid.Columns.Add(expandColumn);
// Add Year column
var yearColumn = new DataGridViewTextBoxColumn
{
Name = "Year",
HeaderText = "Year",
DataPropertyName = "Year"
};
parentGrid.Columns.Add(yearColumn);
// Add Parent Grid to GroupBox1
groupBox1.Controls.Add(parentGrid);
// Parent grid events
parentGrid.CellContentClick += ParentGrid_CellContentClick;
}
И здесь я меняю значение ячейки сетки + на – после клика
private void ParentGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0) return;
if (e.ColumnIndex == 0)
{
var buttonCell = (DataGridViewButtonCell)parentGrid.Rows[e.RowIndex].Cells[0];
if (expandedRowIndex == e.RowIndex)
{
// Collapse if already expanded
RemoveChildGrid();
expandedRowIndex = -1;
// Change the button text back to "+"
buttonCell.Value = "+"; // Change button text for the clicked row
}
else
{
// Collapse any existing child grid first
RemoveChildGrid();
// Expand new child grid
expandedRowIndex = e.RowIndex;
AddChildGrid(e.RowIndex);
// Change the button text to "-"
buttonCell.Value = "-"; // Change button text for the clicked row
}
// Force the DataGridView to redraw this specific cell
parentGrid.InvalidateCell(buttonCell);
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ndows-form
Текст кнопки в сетке не меняет форму окна ⇐ C#
Место общения программистов C#
1736848625
Anonymous
Я создал представление сетки с помощью кода и хочу изменить текст кнопки для выбранной строки с + на -, когда пользователь нажимает на нее. Я проверил несколько кодов ниже, код, который я сейчас использую, и пытаюсь изменить текст с + на - и наоборот ниже ParentGrid_CellContentClick
private void InitializeParentGrid()
{
parentGrid = new DataGridView
{
Dock = DockStyle.Fill,
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
RowHeadersVisible = false,
AllowUserToAddRows = false,
ColumnHeadersVisible = false // Hide column headers
};
// Add Expand button column
var expandColumn = new DataGridViewButtonColumn
{
Name = "Expand",
HeaderText = "",
Text = "+",
UseColumnTextForButtonValue = true,
Width = 30, // Set a small width
AutoSizeMode = DataGridViewAutoSizeColumnMode.None,
};
expandColumn.UseColumnTextForButtonValue = true;
parentGrid.Columns.Add(expandColumn);
// Add Year column
var yearColumn = new DataGridViewTextBoxColumn
{
Name = "Year",
HeaderText = "Year",
DataPropertyName = "Year"
};
parentGrid.Columns.Add(yearColumn);
// Add Parent Grid to GroupBox1
groupBox1.Controls.Add(parentGrid);
// Parent grid events
parentGrid.CellContentClick += ParentGrid_CellContentClick;
}
И здесь я меняю значение ячейки сетки + на – после клика
private void ParentGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0) return;
if (e.ColumnIndex == 0)
{
var buttonCell = (DataGridViewButtonCell)parentGrid.Rows[e.RowIndex].Cells[0];
if (expandedRowIndex == e.RowIndex)
{
// Collapse if already expanded
RemoveChildGrid();
expandedRowIndex = -1;
// Change the button text back to "+"
buttonCell.Value = "+"; // Change button text for the clicked row
}
else
{
// Collapse any existing child grid first
RemoveChildGrid();
// Expand new child grid
expandedRowIndex = e.RowIndex;
AddChildGrid(e.RowIndex);
// Change the button text to "-"
buttonCell.Value = "-"; // Change button text for the clicked row
}
// Force the DataGridView to redraw this specific cell
parentGrid.InvalidateCell(buttonCell);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79354411/button-text-in-gridview-is-not-changing-windows-form[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия