2011-12-25 52 views
0

我已經在application settings中設置了我的Form text的名稱,我需要rewrite它。它可能是因爲它告訴我它只是一個readonly在Windows窗體中重寫設置

我知道我們可以簡單地通過使用me.text="" 來改變它但我在我的應用程序中有一個問題,因爲我有下面的代碼,每次窗體加載時它都會擦除文本。

Protected Overrides Sub OnLayout(ByVal e As System.Windows.Forms.LayoutEventArgs) 

     MyBase.OnLayout(e) 
     'Me.Text = CStr(Val(Me.Text) + 1) 
     FillList() 

     MyBase.OnLayout(e) 
     If FontColor.Items.Count = 0 Then 
      FontColor.Items.AddRange(Known_Color) 
      FontColor.MaxDropDownItems = 20 
     End If 


     MyBase.OnLayout(e) 
     If OutlineColor.Items.Count = 0 Then 
      OutlineColor.Items.AddRange(Known_Color) 
      OutlineColor.MaxDropDownItems = 20 
     End If 



     MyBase.OnLayout(e) 
     If BorderColor.Items.Count = 0 Then 
      BorderColor.Items.AddRange(Known_Color) 
      BorderColor.MaxDropDownItems = 20 
     End If 


     MyBase.OnLayout(e) 
     If BackgroundColor.Items.Count = 0 Then 
      BackgroundColor.Items.AddRange(Known_Color) 
      BackgroundColor.MaxDropDownItems = 20 
     End If 
    End Sub 

是否有任何解決方法可以做到這一點?

+0

你爲什麼要打電話MyBase.OnLayout(E)的5倍? – TheBoyan 2011-12-25 18:52:42

+0

我想繪製組合框的顏色方案和字體,如邊框顏色,字體顏色,背景顏色。 – coder 2011-12-25 18:54:50

回答

1

在您的應用程序設置爲只讀時回答有關您的表單文本的問題。看看這個MSDN Page

從上面的鏈接:

有兩種類型的應用程序設置的基礎上,範圍:

  • 應用範圍設置可用於信息,如Web服務或URL數據庫連接字符串。這些值 與應用程序相關聯。因此,用戶在運行時不能更改 。
  • 用戶範圍設置可用於諸如保持表單的最後位置或字體首選項等信息。用戶可以在運行時更改這些值,如

您可以使用Scope屬性更改設置的類型。

簡而言之,如果您的應用程序設置爲應用程序範圍,您不能在運行時更改它,您必須使用用戶範圍設置或滾動自己的存儲。

編輯:添加到@Bojan的答案。 事件將在InitializeComponent()方法期間觸發,每次您調整窗體大小或更改控件大小時。我親自將您的初始化移動到Form_Load eventNew()

Public Sub New() 

    ' This call is required by the designer. 
    InitializeComponent() 

    ' Add any initialization after the InitializeComponent() call. 
    Me.Text = "Hello World" 
End Sub 
+0

感謝馬克它運作良好!併爲鏈接+1。 – coder 2011-12-26 11:34:50

2
MyBase.OnLayout(e) 

很可能這是你的錯誤所在。

您正在設置文本,然後您正在調用基類OnLayout事件,這可能導致文本恢復爲默認值。如果你想在你調用case類事件處理程序後做些改變。

如果您只是試圖更改表單的文本,爲什麼不使用事件處理程序而不調用基本事件處理程序。

相關問題