Как установить текстовый формат столбцов DataGridView в верхний регистр, добавив новое свойство?

У меня есть пользовательский элемент управления DataGridView и я хочу установить формат текста для пользовательских столбцов в конструкторе (построитель CellStyle).

Допустим, я хочу сделать текстовый формат заглавными. После поиска об этом я нашел несколько решений с добавлением новых событий, а затем с изменением формата текста, но это не то, что я хочу. Я хочу добавить новое свойство для всех разработанных столбцов и там установить или изменить формат текста.

Как это сделать?

Спасибо и всего наилучшего.

3 ответа

Решение

Боюсь, что нет стандартного свойства для форматирования текста, как вы хотите.

Если вы действительно не хотите использовать различные события DGV для форматирования текста, вы всегда можете создать свои собственные компоненты DGV, которые будут выполнять то, что вы хотите, и использовать их вместо стандартных компонентов DGV. Эта статья о MSDN должна помочь вам начать.

РЕДАКТИРОВАТЬ

Вот запись в блоге от того, кто называет себя HanSolo и делает то, что вам нужно.

Вот код:

public class DataGridViewUpperCaseTextBoxColumn : DataGridViewTextBoxColumn { 
    public DataGridViewUpperCaseTextBoxColumn() : base() { 
        CellTemplate = new DataGridViewUpperCaseTextBoxCell(); 
    } 
}

public class DataGridViewUpperCaseTextBoxCell : DataGridViewTextBoxCell { 
    public DataGridViewUpperCaseTextBoxCell() : base() { } 
    public override Type EditType { 
        get { 
            return typeof(DataGridViewUpperCaseTextBoxEditingControl); 
        } 
    } 
}

public class DataGridViewUpperCaseTextBoxEditingControl : DataGridViewTextBoxEditingControl { 
    public DataGridViewUpperCaseTextBoxEditingControl() : base() { 
        this.CharacterCasing = CharacterCasing.Upper; 
    } 
}

Включите этот код в ваш проект. Как только вы это сделаете, вы сможете добавить новый DataGridViewColumn в ваш DataGridView типа DataGridViewUpperCaseTextBoxColumn. Этот новый DataGridViewColumn заглавными буквами вводит весь текст, введенный в компонент TextBox столбца.

Вам также следует пересмотреть свое решение не использовать события. Это довольно легко сделать. Например, если у вас есть DGV с именем dataGridView1, вы можете использовать событие CellFormatting, например:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
     // Check the value of the e.ColumnIndex property if you want to apply this formatting only so some rcolumns.
     if (e.Value != null) {
         e.Value = e.Value.ToString().ToUpper();
         e.FormattingApplied = true;
     }
}

Простой способ редактирования ячеек в верхнем регистре - добавить событие "EditingControlShowing" в свой DataGridView.

В этом случае вы можете установить свойство CharacterCasing в элементе управления, который поставляется с параметром DataGridViewEditingControlShowingEventArgs.

Этот элемент управления основан на Textbox, поэтому вы можете работать как TextBox!

Если тип столбца отличается от DataGridViewTextBoxColumn, база управления, вероятно, имеет свойство CharacterCasing.

Надеюсь, я помогу тебе.

Итало

Используйте этот простой метод в DataGridView EditingControlShowing "Событие"

Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
    If TypeOf e.Control Is TextBox Then
        DirectCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Upper
    End If
End Sub
Другие вопросы по тегам