2012-01-05 49 views
0

私はそれによってホストされるコントロールとしてtextboxを持つdatagridviewcellを持っています。今では、コードの他の部分でプログラムのコントロールの種類を取得するにはどうすればよいですか?どのようにdatagridview/datagridviewcellの編集コントロールを取得するには?

私はこのような列を追加します。その列の

DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn(); 
col.ReadOnly = false; 
col.Name = "Status"; 
col.HeaderText = "Status"; 
dgv.Columns.Add(col); 

すべての細胞は今テキストボックスを持っています。

private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    if (dgv.CurrentCell.ColumnIndex == 5 && e.Control is TextBox) 
    { 
     //something 
    } 
} 

がどのように私は別の場所で細胞内のホストされるコントロールの種類を得るのです:私はこのようなテキストボックスなどのコントロールを得ることができますか?私のようなものを行うことができるようにどのようにコードの他の部分からe.Controlを取得する:

((TextBox)dgv[i, j].EditinControl).AutoCompleteSource = AutoCompleteSource.CustomSource; 
((TextBox)dgv[i, j].EditinControl).AutoCompleteCustomSource = someSource; 
((TextBox)dgv[i, j].EditinControl).AutoCompleteMode = AutoCompleteMode.SuggestAppend; 

などの上の行にEditinControlは何を置き換えることができます..?

答えて

8

セルが編集モードにない限り、セルの編集コントロールにアクセスすることはできません。私はセルが編集モードに入るまで、編集コントロールを持っていないと思う。これはおそらく、セルにEditingControlプロパティが存在しないが、DataGridViewが1つ存在するためです。

セルのEditTypeプロパティを使用してセルの編集コントロールのタイプを取得できます。DataGridView.EditingControlプロパティで現在の編集コントロールを取得できます。

if (dgv.CurrentCell.EditType == typeof(DataGridViewTextBoxEditingControl))  
{   
    ((TextBox)dgv.EditingControl).AutoCompleteSource = 
     AutoCompleteSource.CustomSource; 
} 
+0

おかげで、あなたはdatagridviewsの専門家であるように見える – nawfal

+0

..私はそれを見てみましょう:) – nawfal

+1

いや、私の知識はせいぜい中間体です。ほとんどの人のようにちょうどつまずく。 :) –

関連する問題