2017-09-03 84 views
1

我在VC++中製作一個Windows窗體,我發現大量的材料討論如何將Paint事件調用到其他函數或事件中,但是這些事件往往是用C#和這似乎不適用於我,或者他們沒有解釋代碼的實際語法以供我理解。我仍然在學習更詳細的編程方面,所以只是告訴我使用Validate()對我沒有什麼好處。VC++調用Paint事件到一個按鈕事件

private: System::Void Stand_wheel_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) 

我有我的Paint事件。如果符合特定條件的陳述會改變繪畫中使用的點,

private: System::Void button3_Click_1(System::Object^ sender, System::EventArgs^ e) 

而我的按鈕點擊,我想觸發繪畫。我嘗試過使用Stand_wheel_Paint名稱,它充滿了錯誤。我已經嘗試了幾乎所有我知道的事情,以便在按鈕事件下得到它,而我卻不能。我也知道我必須'擦除'舊油漆並重做當前的工作,但是從我發現的東西往往會讓我在那裏,但是來自C#。我會愛任何人可以提供的幫助。

using (// <- I get an error on this parantheses 
var g = Graphics.FromImage(Stand_wheel.Image)) 
       { 
        e->Graphics->DrawLines(pen, points); 
        Stand_wheel.Refresh(); 
       } 

這看起來接近解決方案,但仍然有錯誤。

+0

您可能會考慮放棄任務的C++ -cli並探索其他選項/語言。 – Ron

+0

我真的會搬到C#,但唯一阻止我的是我剛開始上課學習它,所以我猶豫不決。 –

回答

0

using塊只存在於C#中,這是必需的,因爲它沒有確定性破壞。 C++/CLI,就像標準的C++一樣。如果聲明ref class類型的變量而不是跟蹤句柄,則當變量超出範圍時,將自動調用其Dispose方法。

不需要using,而C++/CLI方法比C#更強大。例如,C++/CLI確定性銷燬與類成員數據一樣可以像當地人一樣輕鬆處理。