2011-11-07 53 views
0

我想創建一個慷慨和快速在GUI中創建組件,我做的代碼是以下,但我知道他不做我想要的,我也不知道我該怎麼做。通用表單創建組件

#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,我試圖創建這個程序,只是爲了學習。 我很感激幫助。

+0

您能否更詳細地描述問題?它顯示了什麼,如果有的話?有錯誤嗎? –

+0

好的,我編輯了這個帖子...... – Alexandre

+0

我很好奇,你爲什麼試圖使用C++/CLI呢? – svick

回答

1

你已經知道如何將新的按鈕添加到窗體,你只需要添加參數方法,然後反覆調用它:

在部分的GUIpublic

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); 

(代碼使用由C++ 11 auto如果你不使用VS 2010,正好。將其替換爲實際的類型。)

+0

要在按鈕中添加一個功能手柄,例如,如果我點擊了按鈕,show de messagebox ....我怎麼能做到這一點? – Alexandre