2017年05月 / 04月≪ 12345678910111213141516171819202122232425262728293031≫06月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2008.06.24 (Tue)

DataGridViewのコンボボックスを1クリックでドロップダウン表示させたい

DataGridViewのDataGridViewComboBoxColumnでコンボボックスを表示させられるけど、
このコンボボックスでフォーカスがないときにドロップダウンする際、
選択→ドロップダウン
とドロップダウンさせるのに2回クリックしなきゃいけない。
シングルクリックでドロップダウンさせたい場合は
DataGridViewのCellClickイベントに下記の様な感じの処理を追加すれば簡単に出来る。
※Column4がDataGridViewComboBoxColumn

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == Column4.Index)
{
// 編集モードにする
dataGridView1.BeginEdit(false);
// 編集モードにしたので現在の編集コントロールを取得
DataGridViewComboBoxEditingControl edt =
dataGridView1.EditingControl as DataGridViewComboBoxEditingControl;
// ドロップダウンさせる
edt.DroppedDown = true;
}
}


dataGridView1.BeginEdit(false);
で編集モードにさせることによって
dataGridView1.EditingControl
から簡単にEditingControlが取得できるよってこと。

コンボボックスのセルなら全部1クリックでドロップダウンさせたい!て場合は

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if(dataGridView1.Columns[e.ColumnIndex].GetType().Equals(typeof(DataGridViewComboBoxColumn)))
{
// 編集モードにする
dataGridView1.BeginEdit(true);
// 編集モードにしたので現在の編集コントロールを取得
DataGridViewComboBoxEditingControl edt = dataGridView1.EditingControl as DataGridViewComboBoxEditingControl;
// ドロップダウンさせる
edt.DroppedDown = true;
}
}

型で判定すれば楽だね。

ちなみに
dataGridView1.BeginEdit(false);
の引数は、セルの内容を全選択するか否かのフラグ。trueにしても変わりなかった。


 |  19:02  |  C#.NET  |  トラックバック(0)  |  コメント(3)  |  Top↑

Comment

●DataGridViewでまた来ました

キミはDataGridViewファンなのか・・・。

ドロップダウンリストって、
ドロップ開始の瞬間にリストを更新するのがセオリーじゃん?
だから今回もDataGridViewComboBoxColumnのイベントをキャッチしようと思って調べているうちにここに来ました。
まぁCellClickでもいいかと思って
DataGridViewComboBox.CellTemplate = 新しいCellTemplate
とか書いてみたんだけどうまくいかない。
さらによーーーーく調べると、「更新されたCellTemplateは新規アイテムにしか適用されない」らしいΣ(´Д`バグジャン!

というわけで
該当Columnを削除・新しいColumn挿入
という「無理矢理ComboBoxのアイテムを更新する作戦」にしました・・・
うまくいったけどエレガントじゃない・・・・・・(T_T)
月島ですよ |  2009.05.17(日) 18:14 |  URL |  【コメント編集】

DataGridViewファンじゃないよ!
たまたまDataGridViewにかかわってしまって、忘れそうだからメモってるだけさ。
どっちかというとListViewのほうが好きだもの。
CellTemplateがどういうものか忘れてしまったがドロップダウン時のデザイン変更的なことかな。
俺もCellTemplateの扱いで悩んだことがある気がする。
上野メモ |  2009.05.19(火) 23:21 |  URL |  【コメント編集】

デザインじゃなくて、ドロップダウンリストのアイテムね。
DataSourceプロパティに、アイテムを並べたDataTableをぶち込めば適当に解釈してくれるのはありがたいんだけど、それが適用されるのはセルが誕生したときだけらしくてね・・・(´・ω・`)

ListViewはいいねぇ。
MSのサンプルは萌える。
月島ですよ |  2009.05.23(土) 15:30 |  URL |  【コメント編集】

コメントを投稿する

URL
コメント
パス  編集・削除するのに必要
非公開  管理者だけにコメントを表示
 

Trackback

この記事のトラックバックURL

この記事へのトラックバック

 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。