2

カスタムボタンコントロールがあります。その中には明らかにテキスト用のラベルがあり、ラベルをクリックしても、クリック、イベント、mouseenter、mouseleaveのボタンは表示されません。私がする必要があるのは、ラベルをそこにさえないように動作させることです(クリックスルー可能)。私が以前行ったことは次のとおりです。

base.Click += value;
foreach (Control i in Controls) {
    i.Click += value;
}

これは以前は正常に機能していましたが、今ではマウスをボタンの上に置くたびにボタンのラベルが異なるコルコになっているので、ボタンにカーソルを合わせると1つの色(たとえば赤)になり、ラベルにカーソルを合わせると緑色になり、ラベルのない部分に戻り、黄色になります。これはかなり悪いように見えるので、ラベルをすべて無視する必要があります。

4

2 に答える 2

3

ラベルは使用しないでください。あまりにも多くの苦痛とあまりにも高価です。ボタンのOnPaint()メソッドをオーバーライドして、テキストを描画します。

于 2012-04-20T19:49:41.497 に答える
0

動作を均一にする方法はありますが、同じように型破りに見えるかもしれません。

まずFlatStyle、ボタンのプロパティをに設定しますFlat。これにより、マウスのホバリングで発生するデフォルトの視覚効果がなくなります。

次に、FlatAppearance.MouseDown and MouseHoverプロパティを設定します(デザイナーで実行できます)。好みの色を設定します。

第三に、ラベルにはプロパティがないため、ラベルのイベントとイベントをFlatAppearanceフックして手動で設定し、必要な色を設定する必要があります。(ボタンとラベルの両方にマウスを置いていない場合は、最初にボタンと同じラベルを付けてください)。MouseHoverMouseLeaveBackColor

MouseHover第4に、ボタンとイベントをフックしてMouseLeave、ラベルを必要な色に設定する必要もあります。

かなりハックっぽい..クリック部分は今は大丈夫だと思います。

于 2012-04-20T19:22:29.617 に答える