Переписывание настроек в Windows Forms - PullRequest
0 голосов
/ 25 декабря 2011

Я установил имя моего Form text в application settings, и мне нужно rewrite. Возможно ли это, поскольку это показывает мне, что это только readonly.

Я знаю, что мы можем просто изменить его, используя 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

Есть ли обходной путь для этого?

Ответы [ 2 ]

2 голосов
/ 25 декабря 2011
MyBase.OnLayout(e)

Скорее всего, это ваша ошибка.

Вы устанавливаете текст, а затем вызываете событие базового класса OnLayout, которое, вероятно, заставляет текст вернуться к значению по умолчанию,Если вы хотите что-то изменить, сделайте это после вызова обработчика события класса дела.

Если вы просто пытаетесь изменить текст формы, почему бы просто не использовать обработчик события Form_Load без вызова базового обработчика события.

1 голос
/ 26 декабря 2011

Чтобы ответить на ваш вопрос о том, что текст вашей формы в настройках вашего приложения доступен только для чтения.Посмотрите на эту страницу MSDN .

Сверху Ссылка:

Существует два типа настроек приложения в зависимости от области действия:

  • Для информации, такой как параметры области приложения, можно использоватьв качестве URL-адреса для веб-службы или строки подключения к базе данных.Эти значения связаны с приложением.Поэтому пользователи не могут изменять их во время выполнения.
  • Параметры пользовательской области можно использовать для получения такой информации, как сохранение последней позиции формы или предпочтения шрифта.Пользователи могут изменять
    эти значения во время выполнения.

Вы можете изменить тип параметра, используя свойство Scope.

Короче говоря, если настройки вашего приложенияесли область действия приложения не может быть изменена во время выполнения, вы должны использовать настройку области пользователя или развернуть свое собственное хранилище.

Редактировать: добавить в ответ @Bojan.Событие OnLayout будет вызываться при использовании метода InitializeComponent() каждый раз, когда вы изменяете размер формы или изменяете размер элемента управления.Я бы лично переместил вашу инициализацию на Form_Load event или New().

т.е.

Public Sub New()

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

    ' Add any initialization after the InitializeComponent() call.
    Me.Text = "Hello World"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...