Добавить полосу прокрутки в DataGridViewTextBoxColumn
Интересно, что в Интернете нет сообщений на этот вопрос. Как добавить полосу прокрутки для работы с DataGridViewTextBoxColumn после того, как событие MyGrid_EditingControlShowing отобразит это текстовое поле в сетке.
Я добавил ниже событие
private void MyGrid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if ((!(e.Control is TextBox)) || e.CellStyle.WrapMode == DataGridViewTriState.True) return;
var textBox = e.Control as TextBox;
textBox.ScrollBars = ScrollBars.Both;
}
но это не сработало, когда мышь прокручивалась, она прокручивалась до строки сетки, а не по ячейке
заранее спасибо
1 ответ
Это:
!(e.Control is TextBox))
никогда не будет правдой.
Вы можете попробовать это вместо этого:
if (MyGrid.CurrentCell.EditType != typeof(DataGridViewTextBoxEditingControl))
{
return;
}
Или это:
DataGridViewTextBoxEditingControl tb = e.Control as DataGridViewTextBoxEditingControl;
if (tb == null)
{
return;
}
Обратите внимание, что ScrollBars
покажет только когда Cell
находится в режиме редактирования! "Клетки" DateGridView
являются только виртуальными элементами управления или, другими словами, это просто пиксели, нарисованные на экране. У них нет модели событий и т. Д., Поэтому они не могут функционировать в интерактивном режиме. Только EditControl
это накладывается на фактический контроль.