Это может показаться глупым вопросом. У меня есть текстовое поле, которое можно использовать для добавления элементов в checklistbox во время выполнения в форме Windows. Я использую С#. Он отлично работает во время выполнения. Элемент добавляется и прочее, когда форма открыта. Но когда я закрываю и снова открываю форму, я не вижу добавленный элемент в списке ChecklistBox. Заметьте, я не использую источник данных и не хочу. Я бы не хотел ничего жестко кодировать и предпочел бы использовать ввод текстового поля в форме в качестве переменной для ввода в список коллекций. Я не мог найти способ расширить мои параметры checklistbox. Любая помощь будет оценена.
Проблемы с добавлением элементов и расширением списка коллекций checklistbox в форме Windows в С#
comment
А куда вы сохраняете добавленные предметы?
- person Adrian Godong   schedule 06.07.2009
Ответы (3)
Как вы открываете форму? Это что-то вроде:
FormName form = new FormName();
form.Show()
Единственная причина, по которой я могу думать, что это происходит, заключается в том, что вы создаете новый экземпляр формы каждый раз, когда вы его показываете, вместо повторного использования одной и той же формы.
person
djdd87
schedule
06.07.2009
Я использую обработчики событий form_load и form_closed. У меня есть программа, которая повторно заполняет проверенные элементы в списке checklistbox через свойство checkedindices, когда я запускаю форму, чтобы пользователю не приходилось каждый раз перепроверять флажки во время выполнения.
- person ; 06.07.2009
Да, но как вы открываете форму? Form_Load происходит, когда вы открываете форму, а Form_Closed происходит, когда вы ее закрываете. Пожалуйста, опубликуйте код, чтобы дать нам лучший пример.
- person djdd87; 06.07.2009
Пусть ваша форма принимает ref List<string> values
в качестве параметра. Затем сделайте это как BindingSource для CheckedListBox.
Вот код:
class MyForm : Form {
List<string> values;
BindingSource source;
public MyForm()
{
InitializeComponent();
}
public MyForm(ref List<string> values):this()
{
if (values == null)
values = new List<string>();
this.values = values;
checkedListBox1.DisplayMember = "Value";
checkedListBox1.ValueMember = "Value";
source = new BindingSource(this.values, null);
checkedListBox1.DataSource = source;
}
private void AddItemButton_Click(object sender, EventArgs e)
{
this.source.Add(textBox1.Text);
textBox1.Text = string.Empty;
}
}
person
Vivek
schedule
06.07.2009
person
schedule
Возможно, вы захотите почистить это, это совершенно нечитаемо. Отредактируйте сообщение и отметьте код как код правильно. Кроме того, покажите код, в котором вы показываете [т.е. .Show() или .ShowDialog()] форму.
- person djdd87; 07.07.2009