В настоящее время я пытаюсь создать DataGridView в форме Windows для отображения пользователю списка настроек, которые они могут включать и выключать.DatGridView будет иметь два столбца, первый столбец будет описывать настройку, а второй столбец будет содержать флажок, позволяющий пользователю включить или отключить настройку.Так, например, DataGridView будет выглядеть следующим образом:
| Descriptions | Set |
---------------------------------
| Description 1 | true |
| Description 2 | false |
| Description 3 | false |
...
В моих настройках проекта у меня есть список логических значений: Pref1, Pref2, Pref3 и т. Д., Которые я хотел бы привязать к CheckBoxes в DataGridView,что им можно манипулировать автоматически, без необходимости выполнять какие-либо ручные проверки всякий раз, когда значение ячейки было отредактировано, и поэтому я могу сохранить изменения между различными экземплярами приложения.
Я попытался найти несколько решений и пришели добавьте его в конструктор форм:
// Build preference dictionary
Dictionary<String, bool> Preferences = new Dictionary<String, bool>();
preferences.Add("Description 1", Settings.Default.Pref1);
preferences.Add("Description 2", Settings.Default.Pref2);
....
// Copy dictionary to list
List<KeyValuePair<String, bool>> PreferenceList = new List<KeyValuePair<String, bool>>();
foreach (KeyValuePair<String, bool> item in Preferences)
PreferenceList.Add(item);
// Set the GridView DataSource and values displayed in each column
GridView.AutoGenerateColuns = false;
GridView.DataSource = new BindingList<KeyValuePair<String, bool>>(PreferenceList);
GridView.Columns[0].DataPropertyName = "Key";
GridView.Columns[1].DataPropertyName = "Value";
Когда форма загружается, DataGridView заполняется, как и ожидалось, но CheckBoxes во втором столбце не может быть изменено.После некоторой отладки я заметил, что второй столбец становится ReadOnly, когда я устанавливаю DataPropertyName в значение «Value», и я не могу изменить этот параметр ReadOnly без исключения.
Есть ли способ обойти эту проблему только для чтения?Я также прочитал и подумал о создании своего собственного класса Preference в соответствии с:
public Class Preference
{
public String Description { get, set }
public bool Selected { get, set }
}
И затем о создании массива этих предпочтений, связывая свойство Selected каждого предпочтения с одним из логических значений вмой класс настроек, а затем установить массив предпочтений в качестве источника данных DataGridViews.Это жизнеспособное решение или, может быть, есть еще одна альтернатива, которую я не рассматриваю / не знаю?
Извините за эссе вопроса, но я просто хотел бы попытаться объяснить все, чтобы не было путаницы в том, что япрошу:)
Заранее спасибо.