2012-01-12 2 views
0

Possible Duplicate:
Best way to access a control on another form in WinForms?доступа на одной форме из другого класса

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

У меня есть основная форма и вторая форма, назовем ее формой2. form2 имеет на нем несколько меток. Я хотел бы контролировать текст этих меток из листа mainform class/cs. Независимо от того, что я пытаюсь, я не могу получить доступ к ним. Я уже установил некоторые из них для публики, и я все еще не могу «видеть» их в классе mainform.

Основная форма wpf (как и проект). form2 - обычная winform.

Если кто-то поможет мне, я буду вечно благодарен.

Спасибо,

+2

http://stackoverflow.com/questions/8566/best-way-to-access-a-control-on-another-form -in-winforms –

+0

Спасибо Уве, я уже этого и не понял. – sotiris

+0

Если вы не поняли ["создать свойство"] (http://stackoverflow.com/a/8573/366904), пришло время получить книгу на C# и изучить язык ... –

ответ

8

, как ваши этикетки являются частными, они могут быть доступны только от формы владельца. Не пытайтесь изменить их публично, это неправильный подход (общественные члены - зло).

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

form2:

public void SetTextForLabel(string myText) 
{ 
    this.myLabel.Text = myText; 
} 

MainForm:

myForm2Instance.SetTextForLabel("my text"); 
+0

Спасибо, ken, когда я поставил код, который вы предложили в mainform, я получаю волнистую красную строку под «SetTextForLabel» и следующую ошибку: Ошибка «System.Windows.Forms.Form» не содержит определения для ' SetTextForLabel 'и не может быть найден метод расширения' SetTextForLabel ', принимающий первый аргумент типа' System.Windows.Forms.Form '(вам не хватает директивы using или ссылки на сборку?) – sotiris

+0

Сообщение об ошибке означает, что вы пытаетесь использовать экземпляр типа 'Form', а не ваш собственный тип Form2. Отправьте несколько строк вокруг вашей ошибки, чтобы мы могли помочь ... – ken2k

+0

Thanks Ken. В верхней части класса я объявляю форму - public static Form WaitFormV; --- то в прогресс изменилось событие дальше вниз класса у меня --- WaitFormV = новый DBWaitForm(); WaitFormV.ShowDialog(); WaitFormV.SetTextForLabel («мой текст»); – sotiris

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