首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象引用未设置为对象的实例。[NullReferencceException未被处理]

问对象引用未设置为对象的实例。[NullReferencceException未被处理]
EN

Stack Overflow用户
提问于 2013-05-10 06:47:21
回答 2查看 680关注 0票数 0

与本专题有关:

if condition for MDI Parent Control

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

这导致:

frmMain.cs:

代码语言:javascript
复制
private DtexteditoR a;
        public frmMain(Form callingForm)
        {
            a = callingForm as DtexteditoR;
            InitializeComponent();
        }

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

DtexteditoR.cs

代码语言:javascript
复制
public string lblcl //rich
        {
            get { return lblcountline.Text; }
            set { lblcountline.Text = value; }
        }

但问题是,这个错误总是表明:

​

我该怎么做才能消除这个错误呢?请帮忙,非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2013-05-10 06:52:56

检查以下内容:

1-检查变量a在构造函数中不为空。

2-在InitializeComponent之后,您可以获得设计对象:

代码语言:javascript
复制
public frmMain(Form callingForm)
{
InitializeComponent();
a = callingForm as DtexteditoR;
}

3-您的任务双方似乎都是相同的: a.lblcl = lblcountline.Text,意思是:

代码语言:javascript
复制
lblcountline.Text = lblcountline.Text  : lblcountline.Text = value !!

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

代码语言:javascript
复制
public frmMain(Form callingForm)
{
InitializeComponent();
a = callingForm as DtexteditoR;
timer1.enabled=true;
}
票数 1
EN

Stack Overflow用户

发布于 2016-06-21 16:19:26

您不能期望a = callingForm as DtexteditoR从计时器或按钮中得到填充,因此当您将它作为frmMain()函数的第一行调用时,单击它的速度不会为空。跳过这些。相反,您必须在旧的callingForm表单代码隐藏中填充变量,然后才能在frmMain()中的新表单中调用它。假设lblcountline在callingForm上,您将在该代码中设置a.lblcl = lblcountline.Text;,然后,在您的frmMain()中,它应该对您可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16476668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档