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

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

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

Re[7]: Buttonコントロールの枠線を消したい


(過去ログ 107 を表示中)

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

■63583 / inTopicNo.1)  Buttonコントロールの枠線を消したい
  
□投稿者/ まる (1回)-(2012/09/09(Sun) 12:23:00)

分類:[VB.NET/VB2005 以降] 

当初は、Labelコントロールで、枠線のないボタンを表現していたのですが、
Labelコントロールのクリックイベントにかなりのタイムラグがあることに気付き、
Buttonコントロールで実装しなおすことにしました。
(なんでLabelコントロールのクリックイベントはおそいんでしょう?)

なので、Buttonコントロールの枠線をどうにかして消したいのです。
Paintメソッドをオーバーライドして、
枠線を背景と同じような色で描画してみましたが、どうもしっくりきません。

@枠線を消す良い方法はないでしょうか?

それか、

AそもそもLabelコントロールで、クリックイベントの反応を早くする方法があったら
 教えていただきたいです。

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



引用返信 編集キー/
■63584 / inTopicNo.2)  Re[1]: Buttonコントロールの枠線を消したい
□投稿者/ オショウ (16回)-(2012/09/09(Sun) 14:06:15)
> 当初は、Labelコントロールで、枠線のないボタンを表現していたのですが、
> Labelコントロールのクリックイベントにかなりのタイムラグがあることに気付き、
> Buttonコントロールで実装しなおすことにしました。
> (なんでLabelコントロールのクリックイベントはおそいんでしょう?)

  通常、Buttonコントロールのイベントが一番遅くなるはずです。
  オーナードローとかフォームや他のコントロールに重い処理されてません?

  理由は簡単、マウスのクリック動作で、ボタンの押下の描画をしないといけ
  ないから。ラベルやフォーム上のクリックなら再描画しないといけない処理
  を独自に行っていない限り、最速でイベントが起きる。

  SPY++でイベントのログ取ってみて下さい。

> AそもそもLabelコントロールで、クリックイベントの反応を早くする方法があったら
>  教えていただきたいです。

  フォームのクリックイベントで、マウスの位置から換算すれば?

以上。参考まで
引用返信 編集キー/
■63585 / inTopicNo.3)  Re[2]: Buttonコントロールの枠線を消したい
□投稿者/ まる (2回)-(2012/09/09(Sun) 14:42:52)
返答ありがとうございます。

>   通常、Buttonコントロールのイベントが一番遅くなるはずです。
>   オーナードローとかフォームや他のコントロールに重い処理されてません?
>   フォームのクリックイベントで、マウスの位置から換算すれば?

試しに、
Formに、TextBoxコントロール、Buttonコントロール、Labelコントロールだけを配置し、
Form、Button、Labelそれぞれのクリック時にTextBoxに、文字列 "あ" を追加していくコードを書いてみました。

やはり、Labelコントロールのクリックにはタイムラグが発生します。
また、Formクリックイベントでも同様にタイムラグが発生します。
連続でクリックするとそれが顕著に現れます。
イベントを受け付けない時間が存在するのでしょうか?

引用返信 編集キー/
■63586 / inTopicNo.4)  Re[3]: Buttonコントロールの枠線を消したい
□投稿者/ オショウ (17回)-(2012/09/09(Sun) 15:11:30)
> やはり、Labelコントロールのクリックにはタイムラグが発生します。
> また、Formクリックイベントでも同様にタイムラグが発生します。

  あなたの環境が他のPCと同じではないという前提で話をしましょう!
  私の環境では、タイムラグがあることすら計測できないレベルで反応
  してます。

> イベントを受け付けない時間が存在するのでしょうか?

  あなたのPCにインストールされた他の常駐ソフトの影響か・・・
  あなたのPCの性能が悪いか・・・

  同じソフトウェアをあなたの周辺の他のPCでも実験してみて下さい。

以上。
引用返信 編集キー/
■63587 / inTopicNo.5)  Re[4]: Buttonコントロールの枠線を消したい
□投稿者/ まる (3回)-(2012/09/09(Sun) 15:31:55)
>   同じソフトウェアをあなたの周辺の他のPCでも実験してみて下さい。

PC,開発環境を含め検証してみました。

windows7 home corei7
Visual Studio 2010 PROFESSIONAL

windows7 pro corei5
Visual Studio 2010 Ultimate

どちらも、同じ現象が発生しました。

クリック時の反応は、Label、Buttonともに早いのですが、
イベント終了してから、次のイベント発生までが遅いように感じます。。。

Button 10回高速連打→"ああああああああああ"
Label  10回高速連打→"あああああ"

やはり、コントロールが怪しいので、こちらを調べてみます。

引用返信 編集キー/
■63588 / inTopicNo.6)  Re[5]: Buttonコントロールの枠線を消したい
□投稿者/ まる (4回)-(2012/09/09(Sun) 15:43:18)
解決しました。

連打した際に、ダブルクリックイベントが発生しているのが原因でした。

Labelが連打されると、ダブルクリックだと判断し、クリックイベントが
発生しない場合があったようです。

Buttonにも、ダブルクリックイベントがありますが、
いくら連打しても、ダブルクリックイベントは発生せず、
クリックイベントで処理されました。

これらの違いが、クリックイベントの反応の差につながったようです。

ためしに、Labelのダブルクリックイベントにも同様の処理を記述したところ、
問題なく動作しました。

ありがとうございました。

解決済み
引用返信 編集キー/
■63590 / inTopicNo.7)  Re[6]: Buttonコントロールの枠線を消したい
□投稿者/ Azulean (30回)-(2012/09/09(Sun) 16:21:10)
2012/09/09(Sun) 16:22:23 編集(投稿者)

今後のためにと言うことで。

最初の質問文のどこにも「連打」と書かれていません。この状態でダブルクリックイベントの影響を推測するのは困難です。
次の投稿では「連続でクリックするとそれが顕著に現れます」と書かれているので伝わるかもしれませんが、最初の投稿で「シングルクリック」だと思い込んでいると読み落とされる恐れがありますし、ダブルクリックと認識されない時間の間隔で連続してクリックと解釈される可能性があります。(個人的には「連打」だと現象がわかりやすいと思いました)

自分と相手は知っている情報が違うということを大前提として、きちんと伝えていきましょう。
解決済み
引用返信 編集キー/
■63591 / inTopicNo.8)  Re[7]: Buttonコントロールの枠線を消したい
□投稿者/ まる (5回)-(2012/09/09(Sun) 16:28:02)
No63590 (Azulean さん) に返信
> 2012/09/09(Sun) 16:22:23 編集(投稿者)
>
> 今後のためにと言うことで。
>
> 最初の質問文のどこにも「連打」と書かれていません。この状態でダブルクリックイベントの影響を推測するのは困難です。
> 次の投稿では「連続でクリックするとそれが顕著に現れます」と書かれているので伝わるかもしれませんが、最初の投稿で「シングルクリック」だと思い込んでいると読み落とされる恐れがありますし、ダブルクリックと認識されない時間の間隔で連続してクリックと解釈される可能性があります。(個人的には「連打」だと現象がわかりやすいと思いました)
>
> 自分と相手は知っている情報が違うということを大前提として、きちんと伝えていきましょう。
引用返信 編集キー/
■63592 / inTopicNo.9)  Re[8]: Buttonコントロールの枠線を消したい
□投稿者/ まる (6回)-(2012/09/09(Sun) 16:38:22)
投稿失敗しました。

>最初の質問文のどこにも「連打」と書かれていません。この状態でダブルクリックイベントの影響を推測するのは困難です。

申し訳ありません。
私も当初は、シングルクリック動作に原因があるものと思っていたため、
このような形になってしまいました。
ダブルクリックイベントが、高速に連打しなくても、発生していたため
シングルクリックに問題があると、思いこんでしまっていました。。。

以後、もっと検証を行ったうえで、明確に質問をさせていただきます。


引用返信 編集キー/
■63596 / inTopicNo.10)  Re[7]: Buttonコントロールの枠線を消したい
□投稿者/ とおりすがり (1回)-(2012/09/09(Sun) 17:16:56)
No63590 (Azulean さん) に返信

> 最初の質問文のどこにも「連打」と書かれていません。この状態でダブルクリックイベントの影響を推測するのは困難です。

ダブルクリックイベントは、連打しなくても発生すること、
ボタンと、ラベルで挙動が違うことから
質問者さんも気づかないのは仕方ないと思います。

そもそも、ダブルクリックを推測できるなら自己解決しているでしょう。
実際、自己解決されていますしね。

容易に、再現するにもかかわらず、環境のせいにされると
質問者さんのほうが可哀想です。

最初から、それ言えよってことが良くありますが、
それをふまえて解決に導いてあげることが重要ではないでしょうか。

解決済みにしておきます

解決済み
引用返信 編集キー/
■63597 / inTopicNo.11)  Re[9]: Buttonコントロールの枠線を消したい
□投稿者/ Azulean (31回)-(2012/09/09(Sun) 18:08:24)
No63592 (まる さん) に返信
> ダブルクリックイベントが、高速に連打しなくても、発生していたため
> シングルクリックに問題があると、思いこんでしまっていました。。。

ダブルクリックと認識される時間は、マウスのプロパティの設定によります。
これが長く設定されていると、高速に連打しなくても発生することになります。
これは環境差なので、短い時間でしか認識されないと思い込んでると確かに難しいかもしれませんね。

以下のどれかを情報として取り出せると推測しやすいかもしれませんね。
(推測しやすくなった結果、自己解決につながるとは思います)


・遅延(ラグ)ではなく、取りこぼしである。
・4 回連続で等間隔でクリックすると、2 回しか入力されない。
・クリック間隔に十分な長い時間をおくと 100% とれる。


実のところ、私は最初に質問文を見たとき、「ラベルだけ遅延(ラグ)が大きい」と書かれていて、「そんなわけないだろう」と受け取ってスルーしていました。(間違った推測で簡略化された投稿になっていたので、解決は難しいなと見ていました)
No63587 までくるとかなり推測できる材料が出てきています。なるべく早い段階で、何を確かめたか(事実)、それによってどのように考えたか(推測)をきちんと書いていただければ、よかったのかなと後になって思います。
(何を確かめたかは最初の投稿に出てきていなかったため)


No63596 (とおりすがり さん) に返信
> 容易に、再現するにもかかわらず、環境のせいにされると
> 質問者さんのほうが可哀想です。

少なくとも No63585、できれば No63587 の情報がなければ、再現は容易とは言えません。
No63583 の投稿では何を確かめたかも明らかにされていませんので、環境要因とか、そんなことはないという論調を招くのは致し方ないと思います。

> 最初から、それ言えよってことが良くありますが、
> それをふまえて解決に導いてあげることが重要ではないでしょうか。

その流れを否定するつもりはありません。
ただ、本当の問題を見つけ出すところからうまく聞き出すことになり、解決に時間がかかるので、こういったことも考えてみましょうと次の質問に際して助言することはあってもよいのではないでしょうか?
助言が足りない、あるいは実現不可能だという指摘であればその旨ご指摘いただければ幸いです。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -