私はWinFormsを使用してC#でアプリケーションを作成しています。C#基本クラスのEventArgsを消費する方法
私が欲しいもの:
サイドに矢印の付いたボタンが欲しいです。矢印付きのボタンの一部が押されると、ドロップダウンが表示されますが、ボタンの他の部分が押された場合、マウスクリックイベントがトリガーされます。私は助けを必要と何
:
私は、マウスの位置を用いて、マウスの位置確認を行うことができます確信していますが、どのように私は、ボタンのインスタンスのイベントハンドラが唯一の「マウスを使用していることを確認することができますクリックされたボタンの主要部分だったときに「ボタンダウン」イベントが発生しましたか?私。ベースハンドラーでイベントをどのように食べたら、派生イベントに決して到達しないのですか?
は私が持っている:
次のように私のコード構造(簡素化)は(Windows.Forms button with drop-down menuから取られた)である:
// Button class:
public class ButtonWithDropDown : Button
{
protected override void OnClick(EventArgs e)
{
// Check for when the mouse is on the button and dispose of the
// event if it's over the 'arrow' part of the button.
}
}
// Event handler:
private void btnClickMe_Click(object sender, EventArgs e)
{
MouseEventArgs mevent = (MouseEventArgs)e;
if (mevent.Button == System.Windows.Forms.MouseButtons.Left)
MessageBox.Show("Only shown when clicking the main part of the button");
}
感謝。
あなたは 'base'を呼び出さない空の' override'を持っています。 –
@David Pineサンプルコードのように? (私の実際のコードは 'base.OnClick(e)'を呼び出す)残念ながら私はそれを削除しようとしたが、それでもイベントを通過させる。 – Edward
'.Click'イベントがリスナーを持たないようにしようとしていますか、あるいは' override void OnClick'が完全に呼び出されないようにしようとしていますか? –