2011-12-25 71 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类事件处理程序后做些改变。

如果您只是试图更改表单的文本,为什么不使用事件处理程序而不调用基本事件处理程序。