2012-05-09 3 views
2

Я хочу иметь возможность управлять несколькими группами настроек независимо друг от друга. Первоначально я использовал My.Settings, но было слишком много работы, чтобы вручную откатить некоторые настройки, сохраняя при этом другие.Управление привязкой к файлу настроек

Я думал, что мое решение состояло в том, чтобы использовать несколько файлов настроек, и у меня были моменты, когда это работало, но я, независимо от того, что у меня было, был периодическим и временным.

В настоящее время у меня есть два файла настроек в корне проекта; В коде я могу получить доступ к настройкам в порядке, но во многих случаях я хочу привязать отдельные настройки к элементам управления. Это должно быть быть прямым, и я напоминаю, что он работает, когда я использовал один, встроенный файл настроек.

Однако, когда я использую два новых файла настроек, он не работает. В Форматирование & Диалоговое окно расширенного привязки, я выбираю Добавить новый источник данных проекта, я просматриваю свой проект, а затем в корневое пространство имен, а затем вижу файлы форм/классов/параметров. Когда я выбираю два файла настроек и нажимаю «ОК», диалог отклоняется без возможности выбора индивидуального параметра для привязки элемента управления.

Когда я включаю Проект> Показать все файлы, я вижу, что привязка была создана; У меня есть два .datasource файлов под Мой проект> Источники данных.

Есть ли причина, по которой я не могу привязываться к этим файлам настроек? Если нет, почему я не могу получить к ним доступ к диалоговым окнам привязки данных?

Plan B - создать объект, который будет действовать как посредник между элементами управления и файлами настроек, но я бы предпочел избежать этого, если смогу.

ответ

2

Я не было никаких проблем привязки данных в файл настроек или пользовательских настроек файла, который я добавил с собственности под названием «другие»:

Public Sub New() 
    InitializeComponent() 

    TextBox1.DataBindings.Add("Text", My.Settings, "Test") 
    TextBox2.DataBindings.Add("Text", custom.Default, "other") 
End Sub 

Единственное «устройство» я нашел с помощью файла пользовательских настроек был он не будет автоматически записывать в файл настроек так, как это делал по умолчанию My.Settings. Я добавил это в свою форму:

Protected Overrides Sub OnFormClosing(ByVal e As FormClosingEventArgs) 
    custom.Default.Save() 

    MyBase.OnFormClosing(e) 
End Sub 

Затем настройки сохранялись.

+0

TBH, я не пробовал привязываться к коду - я просто предположил, что это не сработает, если привязка к дизайнеру этого не сделала. Однако он работает - это немного больше печатает, но он выполняет свою работу. – CJM

+0

Кроме того, я * думаю *, он ведет себя так же, как и для My.Settings. Независимо от того, вы можете управлять этим через объявление привязки: 'TextBox2.DataBindings.Add (« Текст », custom.Default,« other », False, DataSourceUpdateMode.OnPropertyChanged)' - но я хотел вручную управлять изменениями, чтобы я был используя событие OnFormClosing – CJM

+0

@CJM Я играл со многими этими настройками, я просто не мог получить 'custom.Default', чтобы сохранить в следующий раз, когда я запустил программу. Следовательно, 'OnFormClosing()' сохранить вызов для сохранения настройки. В первом комментарии, я нахожу, что дизайнер получает в пути больше, чем помогает, поэтому я всегда стараюсь делать что-то в коде, где у меня больше «контроль» вещей. – LarsTech

Смежные вопросы