Добавить полосу прокрутки в 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 это накладывается на фактический контроль.

Другие вопросы по тегам