none
停止事件繼續執行下去 RRS feed

  • 問題

  • Q1.有沒有辦法靈活的決定是否要執行base的內容?

    UserControl

    protected override void OnMouseDown(MouseEventArgs e)
            {
                base.OnMouseDown(e);
    
                /*有時需要做的動作*/
            }

    From

    void Test(){
           UserControl uc = new UserControl();
           uc.MouseDown += UC_MouseDown;
    }
    
    void UC_MouseDown(object sender, MouseEventArgs e)
    {
       /*做其他動作,並且希望某些情況執行base的內容,某些情況不執行base的內容*/
    }


    • 已編輯 StuBoo 2019年10月14日 下午 12:48
    2019年10月14日 下午 12:48

解答

  • protected override void OnMouseDown(MouseEventArgs e)
    {
        try
        {
            base.OnMouseDown(e); //事件是在這裡面觸發的,因此如果在事件中拋出異常,則此語句後面的內容全部不執行。
            /*有時需要做的動作*/
        }
        catch { }
    }
    
    void UC_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            /*做其他動作*/
        }
        else
        {
            throw new Exception();
        }
    }

    • 已標示為解答 StuBoo 2019年10月15日 上午 03:40
    2019年10月14日 下午 03:53
  • 每個父類別的函式內部執行的工作不一定相同, 在沒有很確定父類別旳函式中執行了那一些工作的狀況下, 建議保留叫用父類別的函式的程式碼, 不要拿掉
    • 已標示為解答 StuBoo 2019年10月15日 上午 03:40
    2019年10月15日 上午 12:25

所有回覆

  • protected override void OnMouseDown(MouseEventArgs e)
    {
        try
        {
            base.OnMouseDown(e); //事件是在這裡面觸發的,因此如果在事件中拋出異常,則此語句後面的內容全部不執行。
            /*有時需要做的動作*/
        }
        catch { }
    }
    
    void UC_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            /*做其他動作*/
        }
        else
        {
            throw new Exception();
        }
    }

    • 已標示為解答 StuBoo 2019年10月15日 上午 03:40
    2019年10月14日 下午 03:53
  • 每個父類別的函式內部執行的工作不一定相同, 在沒有很確定父類別旳函式中執行了那一些工作的狀況下, 建議保留叫用父類別的函式的程式碼, 不要拿掉
    • 已標示為解答 StuBoo 2019年10月15日 上午 03:40
    2019年10月15日 上午 12:25