当前位置:编程学习 > C#/ASP.NET >>

C# 关于委托 要搞死我了

--------------------编程问答-------------------- tabControl(true);
=>
if (tabControl != null) tabControl(true);

防止设计器或者编写的代码没有挂接这个事件。 --------------------编程问答-------------------- 版主你好,这个判断我之前也加过,但是加上之后就不会走tabControl(true)这个里面了!一直都是为NULL的 --------------------编程问答-------------------- 你调用的时候看看ucDocDiagnoseInput1是否就是this,如果不是,自己看看错哪里了 --------------------编程问答--------------------

关键代码, --------------------编程问答-------------------- 给 tabControl 赋值的代码应该先执行,不然就是 null --------------------编程问答--------------------
引用 5 楼 tcmakebest 的回复:
给 tabControl 赋值的代码应该先执行,不然就是 null


具体是指的哪个地方的赋值啊,是frmOutPatientOrder 中的,还是ucDocDiagnoseInput中的 --------------------编程问答-------------------- tabControl为null 是因为没有对委托进行New操作吗? --------------------编程问答--------------------
引用 3 楼 wuyazhe 的回复:
你调用的时候看看ucDocDiagnoseInput1是否就是this,如果不是,自己看看错哪里了


我看了 是this,因为在frmOutPatientOrder中我已经声明过ucDocDiagnoseInput1 = new ucDocDiagnoseInput --------------------编程问答-------------------- --------------------编程问答-------------------- this.ucDocDiagnoseInput1.tabControl += new Neusoft.HISFC.Components.HealthRecord.CaseFirstPage.ucDocDiagnoseI这句可能有问题! --------------------编程问答-------------------- private void f1_mushan(bool mushan)
{
    tabControl1.SelectedIndex = 0;
}
--------------------编程问答--------------------
引用 楼主 mushanxiaozhupipi 的回复:
frmOutPatientOrder 是父窗口,ucDocDiagnoseInput 是父窗口Tab页中的一个窗口,想操作完ucDocDiagnoseInput 实现tab页面的跳转。


在这个类public partial class ucDocDiagnoseInput 里面定义了委托:

public delegate void ChangeTabcontrol(bool mushan);
public event ChangeTabcontrol tabControl;

在类ucDocDiagnoseInput 里调用 tabControl(true);

在类frmOutPatientOrder中定义:

this.ucDocDiagnoseInput1.tabControl += new Neusoft.HISFC.Components.HealthRecord.CaseFirstPage.ucDocDiagnoseInput.ChangeTabcontrol(f1_mushan);

private void f1_mushan(bool mushan)
{
    this.tabControl1.SelectedIndex = 0;
}

问题:
在类ucDocDiagnoseInput 调用 tabControl(true) 的时候,提示未将对象进行实例化。调试 tabControl为null.哪位高手能帮小弟解答一下这个问题,在下感激不尽!

我最近刚做了个类似的。两个窗体之间的通讯,主窗体是列表显示,另外一个窗体做添加,添加完成后,刷新主窗体列表。 关键代码如下:


    public delegate void ReftaskEveHand();

    /// <summary>
    /// 刷新通知类
    /// </summary>
    public class RefreshDev
    {



        #region 事件
        private  static event ReftaskEveHand _onRefresh;

        /// <summary>
        ///刷新任务列表事件
        /// </summary>
        public event ReftaskEveHand OnRefresh
        {
            add
            {
                _onRefresh += value;
            }
            remove
            {
                _onRefresh -= value;
            }
        }
        #endregion

主窗体加载事件代码
    RefreshDev refDev = new RefreshDev();
            refDev.OnRefresh += new ReftaskEveHand(GetFullTaskList);

--------------------编程问答-------------------- http://download.csdn.net/detail/hellboy419/5623069 --------------------编程问答-------------------- 看不懂哦/疑问 --------------------编程问答-------------------- 检查你的this.ucDocDiagnoseInput1.tabControl += xxx这句是否被执行,断点打在这个位置,如果从未触发断点,就是没有被执行过,自然不会触发相关事件。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,