2009-10-09 4 views
0

입니다. 다른 컨트롤 (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 Stack

at Test.FormattedTextBox2.get_SelectedText() in C:\Projects\Test\FormattedTextBox2.cs:line 1042

누구나 무슨 일이 일어나고 있는지 알고 내가 저장할 때, 가까운 다음 폼을 다시 폼 디자이너는이 오류를 보여줍니다? 나는 마지막 머리카락을 꺼내려고하고있다 ...

업데이트 :
darkassisin93의 대답은 정확하지 않았지만, 내 게시 된 코드가 정확하지 않았기 때문에 그랬다. 해당 객체의 속성에 액세스하려고 시도하기 전에 base.Selection이 null인지 테스트해야했습니다. 어쨌든 그 대답은 저를 올바른 방향으로 이끌었습니다. 여기에 실제 솔루션입니다 : 그것은 기본 클래스의 SelectedText 속성이 null로 설정되어 있기 때문에 가장 가능성이 높습니다

return base.SelectedText ?? string.Empty; 

return base.SelectedText; 

를 교체

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; 
    } 
} 
+0

FormattedTextBox2.cs의 내용, 특히 1042 줄을 게시 할 수 있습니까? –

+0

게시 된 코드와 관련된 오류가 있었음을 나타내는 질문이 업데이트되어 회선이 발생했습니다. –

답변

2

보십시오.

+0

감사합니다. 이것은 그것을하지는 않았지만, 그것은 쓰기 방향으로 향했다. 실제 솔루션을 반영하도록 제 질문을 업데이트하겠습니다. 그것은 실제로 null 이슈 였고 일단 테스트를 받으면 이제는 작동합니다. –

관련 문제