看板 C_and_CPP 關於我們 聯絡資訊
兩種解法: 一、例外捕捉法 private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Pen^ myPen=gcnew Pen(Color::Black,0.1f); try { int x = Convert::ToInt32(textBox1->Text); //這行是要將textbox的內容轉成數字 Point startPt=Point(x,200); Point endPt=Point(100,200); e->Graphics->DrawLine(myPen,startPt,endPt); } catch (Exception ^e) { MessageBox::Show("請在TextBox輸入數值"); } } private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) { this->Invalidate(); } 二、if判斷法 private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Pen^ myPen=gcnew Pen(Color::Black,0.1f); if (textBox1->Text != L"") { int x = Convert::ToInt32(textBox1->Text); //這行是要將textbox的內容轉成數字 Point startPt=Point(x,200); Point endPt=Point(100,200); e->Graphics->DrawLine(myPen,startPt,endPt); } else { MessageBox::Show("請在TextBox輸入數值"); } } private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) { this->Invalidate(); } 其實我不喜歡直接給程式碼,但是大家的推文都講得差不多了... 這隻程式裡面要注意的「點」其實挺多的,譬如: (1) Form1_Paint 這個函式,在什麼時候會被呼叫?它該做什麼? (2) 為什麼要有另一個 textBox1_TextChanged 函式?它該做什麼? (在你的程式裡,它的名稱不一樣,但意義是相同的) 如果你能夠想通這兩個問題,那這個程式應該就可以理解了 另外,更進一步還可以思考,這兩種寫法到底有什麼差異,優劣是什麼? 如果有哪裡看不懂,就把程式碼註解起來跑跑看,觀察會發生什麼事 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46 ※ 編輯: james732 來自: 140.117.171.46 (12/04 00:00)
nonebelieve:非常感謝你!! 12/04 00:07
nonebelieve:我會想辦法融會貫通的!! 12/04 00:07
nonebelieve:雖然解決了問題 但是和構想的還是有差異 12/04 00:34
nonebelieve:原po能不能推薦網站給我呢? 12/04 00:34
nonebelieve:視窗程式和原本的c++ 差好多阿.. 12/04 00:35
我也是看了很多資料才稍懂的 而且其實我比較習慣是用C#寫視窗...XDD 只能說多看多學習了,加油囉 (如果板友們知道有什麼聖經可以推薦的,也拜託大家一下) ※ 編輯: james732 來自: 140.117.171.46 (12/04 00:37)
nonebelieve:剛剛兩種方法都試過了 也google了一些不懂的地方 12/04 00:47
nonebelieve:但舊的問題解決又跑出新的XDD 12/04 00:47
james732:看你要不要po板問囉 12/04 16:36