Вызов функции, которая добавляет элементы управления в форму из класса - PullRequest
0 голосов
/ 13 февраля 2012

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

В классе:

    public void AddControl(string ControlTxt)
    {
        Form1 frm1 = new Form1();
        frm1.AddButton(ControlTxt);
    }

В форме:

    public  void AddButton(string TxtToDisplay)
    {

        Button btn = new Button();
        btn.Size = new Size(50, 50);
        btn.Location = new Point(10, yPos);
        yPos = yPos + btn.Height + 10;
        btn.Text = TxtToDisplay;
        btn.Visible = true;
        this.Controls.Add(btn);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Class1 cls1 = new Class1();
        cls1.AddControl("Hello");
    }

Когда я нажал на button1, код не работает и не показывает никаких исключений. Как вызвать функцию AddButton формы из класса?

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Если ваша основная форма новая для вашего пользовательского класса Form, вы можете использовать this.AddButton ().

Теперь вы делаете новую инициализацию формы, но не показываете еегде угодно.

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

1 голос
/ 13 февраля 2012

Вы создаете новую форму с каждым кликом (вместо использования текущей формы), я бы сделал это следующим образом (пытаясь быть ближе к вашему коду):

public class SomeClass
{
    public static void AddControl(Form form, string controlTxt)
    {
        form.AddButton(form, controlTxt);
    }

    public static void AddButton(string form, string TxtToDisplay)
    {

        Button btn = new Button();
        btn.Size = new Size(50, 50);
        btn.Location = new Point(10, yPos);
        yPos = yPos + btn.Height + 10;
        btn.Text = TxtToDisplay;
        btn.Visible = true;
        form.Controls.Add(btn);
    }
}


private void button1_Click(object sender, EventArgs e)
{
    SomeClass.AddControl(this, "Hello");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...