0

与此主题相关:

MDI 父控件的 if 条件

我需要将我在DtextEditoR (form) 中的标签中的文本调用到frmMain (form) 中的另一个标签。我使用计时器而不是按钮,因为我在这里遵循答案: Communicate between two windows forms in C#

这导致:

frmMain.cs:

private DtexteditoR a;
        public frmMain(Form callingForm)
        {
            a = callingForm as DtexteditoR;
            InitializeComponent();
        }

        private void timercountline_Tick(object sender, EventArgs e)
        {
                a.lblcl = lblcountline.Text;
        }

文本编辑器R.cs

public string lblcl //rich
        {
            get { return lblcountline.Text; }
            set { lblcountline.Text = value; }
        }

但问题是这个错误总是显示: 在此处输入图像描述

我应该怎么做才能消除该错误?请帮助非常感谢!

4

2 回答 2

1

检查以下内容:
1-检查构造函数中的变量 a 不为空
2-在 InitializeComponent 之后,您可以获得设计对象:

public frmMain(Form callingForm)
{
InitializeComponent();
a = callingForm as DtexteditoR;
}

3-双方的任务似乎相同:a.lblcl = lblcountline.Text 这意味着:

lblcountline.Text = lblcountline.Text  : lblcountline.Text = value !!

4-检查计时器间隔并在 InitializeComponent 之后启用它(在设计中设置为 false )

public frmMain(Form callingForm)
{
InitializeComponent();
a = callingForm as DtexteditoR;
timer1.enabled=true;
}
于 2013-05-10T06:52:56.820 回答
1

当您将其作为函数的第一行调用时,您不能期望a = callingForm as DtexteditoR从计时器或按钮单击中获得足够快的填充,以使其不为空frmMain()。跳过这些。相反,您必须先在旧callingForm表单代码隐藏中填充变量,然后再在新表单中调用它frmMain()。假设lblcountline是 on callingForm,您将a.lblcl = lblcountline.Text;在该代码中设置,然后,在您的 中frmMain(),它应该可供您使用。

于 2016-06-21T16:19:26.033 回答