2010-12-16 3 views
0

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

private void button1_Click(object sender, EventArgs e) 
    { 
     Form1 frm = new Form1(); 
     frm.ABC = "HI"; 
    } 

«ABC» является общественной строкой на форме, а именно:

public string ABC 
    { 
     set { listBox1.Items.Add (value); } 
    } 

выше строка прекрасно работает, когда я использую его формирование кнопки на form, и он добавляет значение в lsitbox, но когда я его использую, кнопка пользовательского элемента управления изменяет текст значения, но он не добавляет элемент в поле списка. Я также пытаюсь использовать его в таблице, но не помогает. Я изменяю Modifires из ListBox1 от частного к публичному, но он не работает. Вышеупомянутая функция хорошо работает в форме, но не может работать из пользовательского элемента управления.

Спасибо.

ответ

-1

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

EX:

public class CustomControl 
{ 
    private Form1 _form; 

    public CustomControl(Form1 form) 
    { 
     _form = form; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     _form.ABC = "HI"; 
    } 
} 
+0

Простой, но дерьмовый. События - это путь. – 2010-12-16 20:02:16

-1

То, что я думаю, вы должны использовать это

this.ParentForm 

Так что в вашем случае это должно быть:

public string ABC 
{ 
    set { this.ParentForm.listBox1.Items.Add (value); } 
} 
1

Expose событие ("ItemAdded" или независимо) в форме ребенка, с которой может справиться ваша основная форма. Передавайте данные любому абоненту события через объект, созданный EventArgs. Теперь ваша основная форма может обновить пользовательский интерфейс, если он не требует жесткой связи между двумя классами. Один класс не должен знать о расположении пользовательского интерфейса другого, это плохая привычка вступать (тот, который каждый, кажется, предлагает, когда этот вопрос возникает).

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