Re: [問題] 已經做好的表單可能跨語言移植嗎?(VC+ …

看板C_Sharp作者 (degeneration)時間16年前 (2008/09/04 23:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
由於問題已經解決了,所以自回一下, 提供遇到相同問題的版友參考,當然也希望我所提供的是個笨方法, 能夠拋磚引玉,得到各位高手更好的解答。 假設有一個按鈕物件,名稱為add_submit,它在c++裡的code如下: private: System::Windows::Forms::Button^ add_submit; //宣告物件 void InitializeComponent(void) { this->add_submit = (gcnew System::Windows::Forms::Button()); //產生實體 // add_submit //設定屬性 this->add_submit->Location = System::Drawing::Point(9, 120); this->add_submit->Name = L"add_submit"; this->add_submit->Size = System::Drawing::Size(168, 50); this->add_submit->TabIndex = 0; this->add_submit->Text = L"新增資料"; this->add_submit->UseVisualStyleBackColor = true; this->add_submit->Click += gcnew System::EventHandler(this, &Form1::add_submit_Click); // } //宣告事件及對應方法 private: System::Void add_submit_Click(System::Object^ sender, System::EventArgs^ e){} 一個控制項的產生,一共有宣告物件,產生物件實體, 及設定物件所有屬性(大小、位置、名稱等等), 最後是設定觸發它的事件及它所執行的方法等四大步驟, 以同樣的表單名稱Form1而言,在c++版本裡,這些code都會產生在Form1.h裡, 而在c#當中,前三者會放在Form1.Designer.cs當中,最後一者才放在Form1.cs裡, 所以只要把它們複製貼上到應該對應的位置,用編輯/取代再改成c#的語法就好。 (非常好認,因為函式名稱都相同,如果真的不知道, 隨便拖曳一個按鈕到空白的Form1上頭,讓它自動產生該控制項程式碼, 就可以知道什麼東西該放哪裡。) 至於把c++語法改成c#語法,不外乎是去掉^,把->改成.,gcnew改成new… 其實如果漏了什麼的話,只要編譯看看,錯誤訊息就會提醒你。 我認為比較容易遺忘的是,有時會出現傳參考的運算子&,要將它改成ref, 可是這麼一改會連邏輯運算子的&&(而且)一起改到,所以最好把目標選取起來修改。 以及,有個地方我try了比較久才發現錯誤在哪,在c#版本裡, 「定位」和「決定控制項大小」的兩個函數, System::Drawing::Point和System::Drawing::Size前要加上new,否則會出現錯誤訊息, 可是你若點到設計檢視時,它會自動幫你修正, 只是座標和大小全部變回default值而已。 其實最可靠的方法,是如上頭所述,自己拖曳產生一個控制項後, 把code先拿來比對,確認要改哪些地方再下手。 -- 我 是 可 悲 的 廢 柴 作 家 http://bloodaugust22.spaces.live.com -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.41.88 ※ 編輯: CYBASTER 來自: 123.193.41.88 (09/04 23:02)
文章代碼(AID): #18l_VzaA (C_Sharp)