2012-07-02 271 views
0

我試圖覆蓋Form.Text以便在窗體出現之前修改Title覆蓋Form.Text屬性

由於概念證明我創造了這個類,它將在適當位置使用從Form直接繼承:

public class FormWithVersionNumber : Form 
{ 
    [SettingsBindable(true)] 
    public override string Text 
    { 
     get 
     { 
      return "tester"; 
     } 

    } 
} 

我會一直期待各種形式,從這個繼承有標題"tester"但相反,它總是空白。我已經經歷了斷點,並且看不出爲什麼會發生這種情況。那麼是什麼原因?

+0

入住這部分[*當重寫在派生類中的Text屬性,使用基類的Text屬性來擴展基實現。否則,你必須提供所有的實現。您無需重寫Text屬性的get和set訪問器;如果需要,你可以只覆蓋一個。*](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.text.aspx) – V4Vendetta

+0

所以你應該使用'base.Text'設置值,然後返回相同的 – V4Vendetta

回答

2

因爲實際的Title未從Text收回,而是從內部財產WindowText收到Control

這裏是你如何能做到的例子:

public partial class FormWithVersionNumber : Form 
{ 
    public override sealed string Text 
    { 
     get 
     { 
      return base.Text + " 1.0.0.0"; 
     } 
     set 
     { 
      base.Text = value + " 1.0.0.0"; 
     } 
    } 


    public FormWithVersionNumber() 
    { 
     InitializeComponent(); 

     Text = "Some Title"; 
    } 
} 
+0

謝謝你@Filip - 問題是我仍然希望能夠在派生類中設置標題,這似乎並未啓用(它只是被忽略) –

+0

@ m.edmondson,爲什麼不把它設置在構造函數中? –