none
有关继承画面按钮事件的问题 RRS feed

  • 问题

  • BaseForm 中有一个取消按钮
    Form1 继承自BaseForm 所以 Form1也有取消按钮

    BaseForm的取消按钮Click事件如下:
    private void btnCls_Click(object sender, System.EventArgs e)
    	{
    		DialogResult dr = MessageBox.Show("Are you Sure to Cancel?","Confirmation Dialog",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2);
    		if(dr == DialogResult.No)
    		{
    			..退出,不执行继承画面中的内容..;// 这个地方怎么写?
    		}
    	}
    
    
    
    



    Form1 的Click事件如下
    private void btnCls_Click(object sender, System.EventArgs e)
    	{			
    		MessageBox.Show("hello world!");
    	}
    
    
    
    
    希望实现的效果:
    用户点击Form1的取消按钮后会先显示 "Are you Sure to Cancel?" 的确认对话框,如果点YES的话,显示"hello world!" 如果点NO的话不显示.
    就是 点击Form1 的取消按钮会先执行被继承画面(BaseForm)取消按钮的事件中内容,如果选NO的话希望直接退出不执行Form1中取消按钮事件中的代码.

    能否实现,应该如何实现 谢谢!
    2009年6月24日 11:05

答案

  • private void button1_Click(object sender, EventArgs e)
            {

                NewMethod();

            }

            public  virtual bool  NewMethod()
            {
                DialogResult dr = MessageBox.Show("Are you Sure to Cancel?", "Confirmation Dialog", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (dr == DialogResult.No)
                {
                    //..退出,不执行继承画面中的内容..;// 这个地方怎么写?

                    return false;
                }

                return true;
            }


    //Form1
    public override bool NewMethod()
            {
                if (base.NewMethod())
                {
                    MessageBox.Show("hello world!");
                }

                return true;
            }


    http://feiyun0112.cnblogs.com/
    2009年6月24日 13:26
    版主

全部回复

  • private void button1_Click(object sender, EventArgs e)
            {

                NewMethod();

            }

            public  virtual bool  NewMethod()
            {
                DialogResult dr = MessageBox.Show("Are you Sure to Cancel?", "Confirmation Dialog", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (dr == DialogResult.No)
                {
                    //..退出,不执行继承画面中的内容..;// 这个地方怎么写?

                    return false;
                }

                return true;
            }


    //Form1
    public override bool NewMethod()
            {
                if (base.NewMethod())
                {
                    MessageBox.Show("hello world!");
                }

                return true;
            }


    http://feiyun0112.cnblogs.com/
    2009年6月24日 13:26
    版主
  • 谢谢啊
    但是 有没有可能只修改BaseForm的代码啊,override的代码中不调用base的内容

    有没有可能啊?

    像form_closing的事件中 都有e.cansel = true; 来取消事件
    click是否也可以如此取消事件啊?

    2009年6月25日 1:42
  • 知道啦 谢谢!

    2009年6月25日 6:16