- - PR -
DataGridViewのカレントセルの位置を座標で取得する方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-09-03 14:05
いつもお世話になっております。
DataGridViewのカレントセルに、コンボボックスを重ねる動作をしたいのですが、 どのように座標を取得すればよいのかわからず困っています。 このような事を行いたい理由は、データグリッドの 入力に、手入力可のコンボボックスを使用したいからです。 DataGridViewのセルタイプで指定できるコンボボックスでは 手入力を許可する際、手入力した値をリストに追加しないとエラーになると知りました。 ですが、リストには反映しないで、リストにない値の手入力も許可したいのです。 そこで、該当セルにフォーカスが移動した際に、該当セルの位置に セルと全く同じ大きさのコンボボックスを表示させて、 そのコンボボックスで入力を行い、Enterキー押下時には 入力値を該当セルに反映、コンボボックスを非表示にする・・・ という苦肉の策を思いついたのです。 実際VB6.0だかVB5.0だかの時代にMSFlexGridに対して、 入力用テキストボックスを表示させるような動作をした記憶が あるのですが・・・。 いかがでしょうか? なにかアドバイスがあれば、よろしくお願い致します。 |
|
投稿日時: 2007-09-03 15:17
件名の質問への回答としては、
使ったことはないですが、DataGridViewCell.ContentBounds プロパティで取得できると思います。 ただし、DataGridView のセルの編集コントロールを拡張したい場合に、 むりやり重ねるのは得策とは言えません。 以下の記事が参考になると思います。 方法 : Windows フォーム DataGridView Cells でコントロールをホストする |
|
投稿日時: 2007-09-03 15:40
KIさん、親切なご回答有難うございます。
早速アドバイス頂いた「コントロールをホストする」 方法を試してみようと思います。 結果は改めて報告させていただきます。 本当にありがとうございました。 |
|
投稿日時: 2007-09-03 15:57
過去ログに同じ話題がありましたので。
DataGridViewのカレントセルの表示位置が知りたい - Insider.NET DataGridView.GetCellDisplayRectangleメソッドでも可能ですね。 これでセルのクライアント座標が取得できます。 |
|
投稿日時: 2007-09-04 09:01
Ahfさん、ご回答ありがとうございます。
私もそれを見てやってみたのですが・・・。 なんだか変な位置にコンボボックスが出てきちゃって(泣) でも、それを試してみた事も記述するべきでしたね。 大変失礼しました。これから気をつけます。 |
|
投稿日時: 2007-09-04 13:19
解決の報告です。
KIさんにご紹介頂いた 「Windows フォーム DataGridView Cells でコントロールをホストする」 で、無事希望の処理を行う事が出来ました。 皆様有難うございました。 今後ともよろしくお願い致します。 |
1