全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2106
推到 Plurk!
推到 Facebook!

VC2005自製元件的事件問題…

尚未結案
ychch0819
一般會員


發表:25
回覆:29
積分:15
註冊:2006-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-11 11:32:52 IP:59.120.xxx.xxx 訂閱
我用VC++2005的控制項程式庫自製一個簡單的元件…當要開一個新的windowsform專案來試元件時,在Event方面遇到一些問題…(在元件的事件欄有成功看到Event的欄位)
第一個問題是如果使用者只想在程式中改變某屬性的值,但卻不想引發屬性改變的事件…自製元件的程式要怎麼更改…
(目前遇到的狀況是如果使用者更改屬性的值,而沒有引發改變屬性的事件會出現Exception)

第二個問題是使用者如果在屬性欄直接更改某屬性值,則會出現"無效的屬性值"對話框,但明明都是int…(應該是有引發到屬性改變的事件)
我的自製元件部份程式如下:

property int MAX
{
int get()
{
return max;
}
void set (int val)
{
if (max!=val)
{
max=val;
OnMAXChanged(this, EventArgs::Empty);

Invalidate();
}
}
}


event EventHandler^ MAXChanged
{
void add (System::EventHandler ^ value){
OnMAXChanged = value;
}
void remove(System::EventHandler ^ value) {
OnMAXChanged-=value;
}

}
fPhoenix
一般會員


發表:0
回覆:20
積分:19
註冊:2005-08-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-17 18:04:33 IP:220.229.xxx.xxx 訂閱
設定事件的時候我沒有加上add和remove,我記得.NET是不允許使用者自行加上這兩個函式的@@
這樣子使用上並沒有遇上你所遇到的問題,
不過我所使用的程式碼非常簡單就是了。
[code cpp]
private:
int m_Value;
public:
event EventHandler^ MyEvent;
property int MyProperty
{
int get()
{
return m_Value;
}
void set(int value)
{
m_Value = value;
MyEvent(this, EventArgs::Empty);
Invalidate();
}
}
[/code]
系統時間:2024-12-04 15:53:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!