Универсальная форма для создания компонентов

#winforms #visual-c #c -cli

#winforms #visual-c #c -cli

Вопрос:

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

 #using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;

public ref class GUI : public Form
{
private:
    int x, y;
    String^ text;
    Button^ btm;

public:
    GUI(int _x, int _y, String^ caption)
    {
        x = _x;
        y = _y;
        text = caption;
        init_btm();
    }
    void init_btm()
    {
        btm = gcnew Button();
        btm->Location = Point(x, y);
        btm->Text = text;
        Controls->Add(btm);
    }
};

int main(array<System::String ^> ^args)
{
    Application::Run(gcnew GUI(20,20,"Ola mundo"));
    return 0;
}
  

Я пытаюсь создать что-то вроде этого…

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

 ADD_BTM^ btm;
btm->Add(20,20,"Hello 1");
btm->Add(20,20,"Hello 2");
  

Вам также может быть интересно, почему я не «спроектировал» свой интерфейс, я изучаю C / CLI, и я пытаюсь создать эту программу, просто для изучения.
Я ценю помощь.

Комментарии:

1. Не могли бы вы описать проблему немного подробнее? Что это показывает, если что-нибудь? Есть ли ошибка?

2. Мне любопытно, почему вы пытаетесь использовать C / CLI для этого?

Ответ №1:

Вы уже знаете, как добавить новую кнопку в форму, вам просто нужно добавить параметры в метод, а затем вызвать его повторно:

В public разделе GUI :

 void AddButton(int x, int y, String^ caption)
{
    auto button = gcnew Button();
    button->Location = Point(x, y);
    button->Text = caption;
    Controls->Add(button);
}
  

В main :

 auto form = gcnew GUI();

form->AddButton(20, 20, "Hello 1");
form->AddButton(40, 40, "Hello 2");

Application::Run(form);
  

(В коде используется auto из C 11. Если вы не используете VS 2010, просто замените их фактическим типом.)

Комментарии:

1. Чтобы добавить один дескриптор функции в кнопку, например, если я нажал на кнопку, покажите окно сообщений…. Как я могу это сделать?