Как установить текстовый формат столбцов DataGridView в верхний регистр, добавив новое свойство? - PullRequest
2 голосов
/ 04 января 2010

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

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

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

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

Ответы [ 3 ]

9 голосов
/ 04 января 2010

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

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

EDIT

Вот запись в блоге от того, кто называет себя 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;
     }
}
7 голосов
/ 06 апреля 2010

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

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

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

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

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

Italo

0 голосов
/ 25 января 2016

Используйте этот простой метод в 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
...