C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ListViewにボタンを表示した場合のクリックイベント範囲


(過去ログ 79 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■46126 / inTopicNo.1)  ListViewにボタンを表示した場合のクリックイベント範囲
  
□投稿者/ あぴす (1回)-(2010/01/26(Tue) 15:17:41)

分類:[C#] 

VisualStudio 2008 C# で開発しています。

ListViewの各アイテムをボタンとして表示しようとしています。
ボタンの描画はオーナードローでButtonRendererを使用しています。
また、表示は仮想モードで行っています。

各アイテムのボタンをクリックすると、アイテム内容を別のListViewに表示するというような動作にしたいのですが
ListViewのクリックの認識範囲が、アイテムの文字分の領域しか反応してくれません。
-------------------
|アイテム |
-------------------
上のようなボタンの場合、「アイテム」の右側の空白部分をクリックしてもクリックイベントが発生しません。

この認識範囲を広げるにはどのような処理が必要なのでしょうか?
それともこれは仕様なのでしょうか。

▼以下のことは分かっています
・イベントを受け付ける範囲はDrawItemの引数のe.Boundsで指定されている(この値は直接変更できない)。
・ボタンの幅をe.Boundsの幅にするとアイテムの文字数によってボタンの幅が変わってしまい見た目が良くないので
 内部的に持っているボタンの幅で描画しているために上記のような現象になることは分かっています。


「アイテム」の後に半角スペースを入れることで一応希望通りの動作はできているのですが
スマートとは言えないので、もし他に方法があるのなら教えていただきたいです。

以上、よろしくお願いします

引用返信 編集キー/
■46129 / inTopicNo.2)  Re[1]: ListViewにボタンを表示した場合のクリックイベント範囲
□投稿者/ みきぬ (742回)-(2010/01/26(Tue) 16:23:14)
No46126 (あぴす さん) に返信
> VisualStudio 2008 C# で開発しています。
>
> ListViewの各アイテムをボタンとして表示しようとしています。

素朴な疑問だけど…なんで ListView を使っているの?

例えば FlowLayoutPanel に Button を詰め込んだもので代用できれば、そのほうがめっさ楽だと思うんだけども。
引用返信 編集キー/
■46132 / inTopicNo.3)  Re[2]: ListViewにボタンを表示した場合のクリックイベント範囲
□投稿者/ alvin (43回)-(2010/01/26(Tue) 18:06:16)
2010/01/26(Tue) 18:06:39 編集(投稿者)

Button btn = new Button();
// 適切なボタンのサイズ設定
btn.Size = new Size(listView1.Width - 5, 30);
// 対応するアイテムのテキスト
btn.Text = "テスト";
// 適切なイベントハンドラ追加
btn.Click += new System.EventHandler(this.xxxxxx);

listView1.Control.Add(btn);

これじゃだめでしょうか?


引用返信 編集キー/
■46133 / inTopicNo.4)  Re[3]: ListViewにボタンを表示した場合のクリックイベント範囲
□投稿者/ あぴす (2回)-(2010/01/26(Tue) 18:53:52)
> みきぬさん
> alvinさん

返答ありがとうございます。
できれば仮想モードで作成したいと思っています。

しかし、表示数もそれほど多くはないと思いますので
alvinさんの方法をちょっと試してみたいと思います。

ちなみに、下記を参考にしました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25339&forum=7


引用返信 編集キー/
■46553 / inTopicNo.5)  Re[4]: ListViewにボタンを表示した場合のクリックイベント範囲
□投稿者/ あぴす (3回)-(2010/02/05(Fri) 10:44:50)
遅くなりました。

色々と試してみましたが
仮想モードで実行できる現状の回避策で逃げようと思います。

みきぬさん、alvinさん回答ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -