2010-11-04 4 views
2

У меня есть класс в том же пространстве имен, что и моя форма. Можно ли мне получить доступ к методам/свойствам элементов управления формы из моего класса? Как я могу это сделать?C# как мне получить доступ к элементам управления формы из моего класса?

ответ

10

Вам необходимо сделать ваши средства управления общедоступными, однако я бы этого не сделал. Я бы предпочел выставить только то, что мне нужно от моих элементов управления. Так сказать, если мне нужен доступ к тексту в текстовом поле:

public class Form1 : Form 
{ 
    public string TextBoxText 
    { 
     get{return this.textBox1.Text;} 
     set{this.textBox1.Text = value;} 
    } 
} 
+0

У вас отсутствует закрытие} для свойства и как вещь небрежного стиля. «Это» не нужно. В противном случае все выглядит хорошо, и это намного лучше, чем прохождение всей формы. – hyprsleepy

+1

Исправлено. Это то, что вы получаете для ввода кода в большой текстовый файл. :) Что касается используемого «этого», мы можем спорить об этом навсегда, но, поскольку я не предидую своим переменным-членам с символами подчеркивания (о которых мы также можем спорить) Мне нравится отличать членов от локальных переменных с помощью «этого». – BFree

+1

Как получить доступ к этому в другом классе? Может ли кто-нибудь подать пример? – n00b

3

Одним из способов является передать форму в класс следующим образом:

class MyClass 
{ 
    public void ProcessForm(Form myForm) 
    { 
      myForm.....; // You can access it here 
    } 

} 

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

+0

Это не сработает. Все элементы управления являются закрытыми по умолчанию, поэтому, даже если вы передадите форму, вы не сможете получить доступ к каким-либо элементам управления. – BFree

+0

@BFree Yep обновленный ответ – w69rdy

2

Если вы передадите ссылку своей формы своему классу, вы сможете получить доступ к методам и свойствам вашей формы от вашего класса:

public class MyClass 
{ 
    private Form form; 

    public void GiveForm(Form form) 
    { 
     this.form = form; 
    } 
} 
0

Вам необходимо сгенерировать заглушки.

Для этого

В пользовательском классе написать конструктор

public YourClass(Main main) 
{ 
     // TODO: Complete member initialization 
     this.main = main; 
} 

затем в основной класс/класс формы, инициализировать ваш класс

YourClass yesMyClass = YourClass(this); 

Если хотите получить доступ компоненты формы на ваш пользовательский класс, то

this.main.label1.Text="I done that smartly' 
Смежные вопросы