2

カスタム DataGridView コントロールがあり、デザイナー (CellStyle ビルダー) でカスタム列のテキスト形式を設定したいと考えています。

テキスト形式を大文字にしたいとしましょう。これについて検索した後、新しいイベントを追加してからテキスト形式を変更することでいくつかの解決策を見つけましたが、これは私が望むものではありません。デザインされたすべての列に新しいプロパティを追加し、そこでテキスト形式を設定または変更したいと考えています。

これを行う方法?

ありがとうございます。

4

3 に答える 3

9

残念ながら、テキストを希望どおりにフォーマットするための標準プロパティはありません。

さまざまな 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; 
    } 
}

このコードをプロジェクトに含めます。これを行うと、DataGridViewUpperCaseTextBoxColumn 型の DataGridView に新しい DataGridViewColumn を追加できるようになります。この新しい DataGridViewColumn は、列の TextBox コンポーネントに入力されたすべてのテキストを大文字にします。

また、イベントを使用しないという決定を再検討する必要があります。やり方はとても簡単です。たとえば、dataGridView1 という名前の DGV がある場合、次のように 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;
     }
}
于 2010-01-04T20:16:37.960 に答える
8

大文字でセルを編集する簡単な方法は、DataGridViewに「EditingControlShowing」イベントを追加することです。

このイベントでは、DataGridViewEditingControlShowingEventArgsパラメーターに付属するコントロールで「CharacterCasing」プロパティを設定できます。

このコントロールはテキストボックスに基づいているため、テキストボックスのように機能します。

列のタイプがDataGridViewTextBoxColumnと異なる場合、コントロールのベースにはおそらくプロパティ'CharacterCasing'があります。

私はあなたを助けてくれることを願っています。

Italo

于 2010-04-06T13:30:48.613 に答える
0

DataGridView EditingControlShowing "Event" でこの単純なメソッドを使用します

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
于 2016-01-25T12:13:57.090 に答える