none
委托函数调用事件疑问 RRS feed

  • 问题

  • 类1 为主要窗体类

    在加载事件中

    War.CallForm = new War.callForm(AutoStart);

    也就是要委托执行的函数为AutoStart

    类2 中 声明:
    public delegate void callForm();
    public static callForm CallForm;

     

    启动调用时:类2.CallForm();

     

    以下在主窗体类1中

     //重新启动选项
            public void AutoStart()
            {
                ReSet reSet = new ReSet(this);
                reSet.ShowDialog();
            }

    在dialog窗体点击确定以后 执行下面

            //这里是委托调用的方法,里面执行主窗体的checkBox 选中事件 

            public void ReStart()
            {
                CK_OpenFullFigure_Checked(null, null);

             }

    发生的问题是 点击Ok 也就是 执行ReStart  并关闭dialog窗体。但点玩以后  也就是只要执行了CK_OpenFullFigure_Checked(null, null); 事件方法 dialog被关闭的瞬间会再次打开。 每次点OK都被重新打开dialog窗体。 如果点击一次OK后再点否 也就是不执行事件方法 直接关闭dialog窗体。就没问题了 而且刚才的ReStart方法也在第一次点OK的时候就执行完成了。

     是不是事件调用方式不对 。希望给予帮助

    希望能给出解答和解决方法。

    • 已移动 Jie BaoModerator 2011年5月17日 0:38 (发件人:Windows Presentation Foundation)
    2011年5月13日 9:11

答案

全部回复

  • 不是WPF问题,所以我会把帖子移到C#论坛。

    看你的问题,我尝试重现,不过有几个疑问,

    • 什么是"加载事件"?
    • "启动调用",具体是什么时候, 主窗体 Loaded 还是 InitializeComponent,还是Actived?
    • "在dialog窗体点击确定以后 执行下面"是在OK按钮的点击事件里吗?
    • "//这里是委托调用的方法,里面执行主窗体的checkBox 选中事件" 还有其它委托吗?

    能否分享一个完整的代码示例, 你可以把你的项目上传到SkyDrive.com 的公开目录下,然后在这里粘贴你的链接。

    我这里根据我的理解写了个测试代码,你看下:http://cid-51b2fdd068799d15.office.live.com/self.aspx/.Public/TestCase/20110517%5E_DelegateOnTwoForms%5E_TestCase.zip (下载, For VS 2010)

    Sincerely,

     

     

     


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月17日 0:38
    版主
  • 真实非常感谢您的帮助,问题已经解决了,是我范的错没有仔细检查代码。很专业 ,关于您的Demo我会研究学习下,呵 。谢谢你了。
    2011年5月23日 6:06