2016-05-16 862 views
0

DataGridViewが動的に作成されています。それは2列を含んでいます。最初のものはヘッダーで、2番目の列はユーザ​​ー入力を可能にするものです。 2番目の列は、DataGridViewCellsとDataGridViewComboBoxCellの混合です。 各行には、DataGridViewCell内で許可される文字数の制限があります。DataGridViewCellの文字数を制限する

私がしたいのは、そのセルのKeyPressで、入力可能な文字数を制限し、長さが制限を超えている場合はメッセージをポップアップします。誰もこれのためのサンプルコードを持っていますか?

私はあなたが私が思うあなた自身のDatagridViewColumnクラスを構築することができますC#のは、Visual Studio 2010の

答えて

1

カラムタイプがDataGridViewTextBoxColumnの場合は、入力テキストの長さを制限するプロパティMaxInputLengthを設定するだけです。 DataGridViewため

TextBox columnTextBox; // Form field 

private void DataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
{ 
    if (columnTextBox != null) 
     columnTextBox.KeyPress -= TextBox_KeyPress; 
} 

private void DataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    columnTextBox = e.Control as TextBox; 

    if (columnTextBox != null) 
     columnTextBox.KeyPress += TextBox_KeyPress; 
} 

private void TextBox_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    var textBox = (TextBox)sender; 
    // here your logic with textBox 
} 

設定イベントハンドラ:手動で次のことを試してくださいKeyPressイベントハンドラ用のコードを追加するには

var column2 = new DataGridViewTextBoxColumn(); 
column2.MaxInputLength = 5; 
dataGridView.Columns.Add(column2); 

dataGridView.EditingControlShowing += DataGridView_EditingControlShowing; 
dataGridView.CellEndEdit += DataGridView_CellEndEdit; 
+0

@ alexsander-petrov、私は特定のDataGridViewTextBoxColumn列を持っていません。私はそれに2列を追加するDataGridViewを持っています。最初はヘッダーです。 2番目はユーザーがデータを入力する場所ですが、セルの種類は動的に作成されるヘッダーのフィールドの種類に依存します。フィールドのフィールドタイプが日付の場合、カレンダーセルが作成されます。または、特定の値のみを許可する文字列の場合は、コンボセルが作成されます。 – MapMan

関連する問題