2011-01-07 3 views
1

Я работаю на окна формы приложения в C# (версия 4.0)C# копировать объект (CheckedListBox) не ссылаться

Я хочу, чтобы скопировать CheckedListBox, но не в качестве ссылки. Я хочу, чтобы каждое изменение в CheckedListBox не должно влиять на мой объект, просто назначьте один раз, а затем ссылку.

Ниже мой код:

public struct SmartFilter 
{ 
    public int from, to; 
    public CheckedListBox cmb;    

} 
var temp = new SmartFilter(); 
    temp.from = Convert.ToInt32(cbNumber2From.SelectedItem); 
    temp.to = Convert.ToInt32(cbNumber2To.SelectedItem); 

    temp.cmb = cbNumbers2; 

, когда я добираюсь до последней строки

temp.cmb = cbNumbers2; 

Я хочу, чтобы сохранить копию в temp.cmb (CheckedListBox), но после того, что каждое изменение в окне воздействует на мой объект.

ответ

3

Вы не можете, в основном - CheckedListBox не является клонированным.

Как вы ожидаете от него статуса? Это экранное управление ... вы ожидаете, что клон не будет иметь родительского окна, а не будет на экране? Какая часть состояния CheckedListBox вас интересует? Возможно, вы должны копировать именно этот аспект, а не весь CheckedListBox.

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

+0

Я хочу сохранить только данные в этом списке, поэтому я сохраню только данные в разных полях, спасибо –

+0

@Haim: Правильно. Это имеет больший смысл. Как правило, плохой идеей является зависимость от компонента пользовательского интерфейса, если вас интересуют только данные в нем. –

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

  • Нет связанных вопросов^_^