-1

UserControl私はC#でWinFormsを開発しています。
は本質的に、UserControlいくつかの子コントロール、たとえば、、、、などで構成される複合コントロールPictureBoxです。CheckBoxLabel

Click呼び出し元のコードから、自分のコントロールのイベントを処理できるようにしたいと思います。
ただし、ユーザーがコントロールの特定のコンポーネント(たとえば、)をクリックした場合にのみ、イベントを発生させたいと思いますPictureBox。ユーザーが私のコントロール内の他の場所をクリックした場合、イベントは発生しません。

どうやってやるの?

4

1 に答える 1

1

WinFormsを使用していると仮定します。

ClickpictureBox からのイベントを独自のイベントにデリゲートしてから、呼び出し元のコードからサブスクライブする必要があります。

public class MyControl : System.Windows.Forms.UserControl
{
    // Don't forget to define myPicture here
    ////////////////////////////////////////

    // Declare delegate for picture clicked.
    public delegate void PictureClickedHandler();

    // Declare the event, which is associated with the delegate
    [Category("Action")]
    [Description("Fires when the Picture is clicked.")]
    public event PictureClickedHandler PictureClicked;

    // Add a protected method called OnPictureClicked().
    // You may use this in child classes instead of adding
    // event handlers.
    protected virtual void OnPictureClicked()
    {
        // If an event has no subscribers registerd, it will
        // evaluate to null. The test checks that the value is not
        // null, ensuring that there are subsribers before
        // calling the event itself.
        if (PictureClicked != null)
        {
            PictureClicked();  // Notify Subscribers
        }
    }
    // Handler for Picture Click.
    private void myPicture_Click(object sender, System.EventArgs e)
    {
        OnPictureClicked();
    }
}
于 2012-10-14T15:54:48.930 に答える