2015-06-18 6 views
0

Я работаю над приложением WinForm в VB.NET 4,0TextBox.Text связывание с MySettings не работает

я связать свойство MySetting к TextBox он работает нормально, пока я не изменить значение в TextBox; программа продолжает читать старое значение, даже если я делаю перезагрузку перед чтением.

Я помню, что не нужно обновлять сохранение или перезагрузку, потому что я сделал еще одно приложение WinForm, и значение обновляется без необходимости добавлять кодекс.

Когда значение обновляется в MySetting после того, как я изменил значение в TextBox? Когда TextBox потерял фокус?

+0

Можете ли вы объяснить немного больше? Или показать немного кода/скриншота о том, что происходит? – Sastreen

+0

Если я выбираю TextBox во время разработки, на панели свойств у меня есть свойство ApplicationSetting -> PropertyBinding. Поэтому я привязываю свойство Text к переменной MySetting. После этого. вся идея состоит в том, что если я изменю текстовое значение, теперь во время выполнения, это значение автоматически сохраняется в настройках приложения без какого-либо кода. Но это не работает, потому что приложение продолжает видеть старое значение. Поэтому я не знаю, почему не работает так, как ожидалось. –

+0

Хмм, это задает вопрос, откуда взялось «старое значение». По-видимому, он когда-то работал. Мой хрустальный шар говорит, что вы сделали что-то, что не позволяет приложению нормально закрываться. Подобно использованию Environment.Exit() или ключевого слова VB.NET 'End' или скрывающих исключения. –

ответ

0

My.settings.Save()

Это сохраняет все настройки, которые вы установили. Например.

My.Settings.txbVal = txbName.text 
My.Settings.Save() 
+0

в C# это 'Свойства.Settings.Default.Save();' – DiscipleMichael

+0

Спасибо, я использую VB.NET. Я знаю, о чем вы говорите, но я делаю это без кода. Пожалуйста, прочтите мой ответ на Састрина здесь. –

+0

Я считаю, что привязка просто устанавливает источник данных и не будет автоматически обновлять (и сохранять) значение, если вы не вызываете функцию сохранения. Я скажу, что я не уверен в этом на 100%, но я бы добавил обработчик события с измененным текстом или другим событием, чтобы вызвать метод save, чтобы проверить его. Возможно, вам не нужно устанавливать значение, просто вызовите метод сохранения. – DiscipleMichael

1

I have a property called ApplicationSetting --> PropertyBinding. So I Bind the Text property to a MySetting variable.

Application области видимости Настройки являются ReadOnly, поэтому VB не собирается обновлять значение в настройках из-под контроля и в результате они никогда не обновляются. Вы можете увидеть, как они обрабатываются в коде конструктора:

Public ReadOnly Property AppFoo() As String 
    Get 
     Return CType(Me("AppFoo"), String) 
    End Get 
End Property 

Сравнить с User контекстными установки:

Public Property UserFoo() As String 
    Get 
     Return CType(Me("UserFoo"), String) 
    End Get 
    Set(value As String) 
     Me("UserFoo") = value 
    End Set 
End Property 

Изменение настроек для пользователя с областью, поэтому он может быть обновлен. Для привязки к пользовательской настройке выполняется только одна строка кода и позволит VB App Framework автоматически обновлять и сохранять.

' in form load: 
TextBox1.DataBindings.Add("Text", My.Settings, "UserFoo") 

Bound таким образом, изменения в текстовом поле будет обновлять соответствующую величину в My.Settings и VB App Framework сохранит их, когда приложение завершает работу в обычном режиме.

+0

Да ... Забыл об этом тоже. Вы абсолютно должны использовать область пользователя, если вы меняете значения во время выполнения. – DiscipleMichael

+0

Если вы не знаете, вы можете изменить область действия параметра, щелкнув поле dropDown в столбце «Область» вашего конкретного параметра в меню настроек «Свойства» проекта. – DiscipleMichael