我有一个控件继承自另一个控件(TxTextControl)。我有一个SelectedText属性,基本上包装基本SelectedText属性,这显然是需要的,因为我的控件正在实现与该属性的接口。代码是这样的:对象形式的设计时错误
public string SelectedText
{
get
{
return base.Selection.Text; // Error here (#1042)
}
set
{
if (base.Selection == null)
{
base.Selection = new TXTextControl.Selection(0, 0);
}
base.Selection.Text = value;
}
}
当我把这个控件放在窗体上时,没有问题。它编译并运行。一切看起来不错。然而,当我保存,关闭然后重新打开表单,表单设计器显示此错误:
Object reference not set to an instance of an object.
1. Hide Call Stackat Test.FormattedTextBox2.get_SelectedText() in C:\Projects\Test\FormattedTextBox2.cs:line 1042
任何人都知道是怎么回事?我即将拔掉我的最后一缕头发......
更新:
darkassisin93的答案并不完全正确,但那是因为我发布的代码并不完全正确。在尝试访问该对象的属性之前,我需要测试base.Selection是否为null。无论如何,这个答案让我朝着正确的方向前进。下面是实际的解决方案:
public string SelectedText
{
get
{
string selected = string.Empty;
if (base.Selection != null)
{
selected = base.Selection.Text;
}
return selected;
}
set
{
if (base.Selection == null)
{
base.Selection = new TXTextControl.Selection(0, 0);
// Have to check here again..this apparently still
// results in a null in some cases.
if (base.Selection == null) return;
}
base.Selection.Text = value;
}
}
你可以发布FormattedTextBox2.cs的内容,特别是第1042行吗? – 2009-10-10 00:03:55
已更新的问题表明错误与发布的代码有关,并且该行发生。 – 2009-10-10 00:09:45