c如何把事件或表示式當引數來傳遞

2022-11-14 04:15:23 字數 5021 閱讀 1167

1樓:

事件是委託被封裝後的狀態  在外部呼叫的時候只能被限制了+=和-=運算子

不能作為一個右值引數被使用

acceptstring("你好");這種寫法也是不科學的  你應該專門寫一個方法去觸發事件 比如:

protected void onacceptstring(string str)

}外部呼叫時直接使用onacceptstring("你好") 這樣可以達到一種安全呼叫的目的

不直接使用事件為引數就方便多了  後面就是你想要的答案:

外部呼叫時直接  doinvoke(()=>);  即可達到目的 (當然如果在類內部還可以直接呼叫事件)

2樓:鳶梨的小布丁

不能將表示式作為一個引數傳遞進去,只能在方法裡面預製一些表示式,然後在傳遞引數的時候,指定引數傳遞到哪個表示式。

舉例 dim a as integer =1public sub b(byval i as integer ,byval j as integer)

select case i

case 1

j=j+3

messagebox.show(j)

case 2

j=j*3

messagebox.show(j)

end select

end sub

這樣的話,當呼叫b的時候

b(1,i)時,彈出的視窗顯示的是4

b(2,i)時,淡出的視窗顯示的是3

c#怎麼將表示式作為引數傳遞給一個方法

3樓:匿名使用者

你並不能將表示式作為一個引數傳遞進去,只能在方法裡面預製一些表示式,然後在傳遞引數的時候,指定引數傳遞到哪個表示式

舉例 dim a as integer =1public sub b(byval i as integer ,byval j as integer)

select case i

case 1

j=j+3

messagebox.show(j)

case 2

j=j*3

messagebox.show(j)

end select

end sub

這樣的話,當呼叫b的時候

b(1,i)時,彈出的視窗顯示的是4

b(2,i)時,淡出的視窗顯示的是3

4樓:

雖然不太清楚你想做什麼 不過 可以用匿名委託才傳遞表示式public bool checktry(funcfunc, string s)

類似這樣的方式來呼叫

var a = new func(s => );

checktry(a,"11");

5樓:匿名使用者

定義委託,用委託才可以把方法當作引數傳遞

c#在click事件中怎麼傳遞一個自定義的引數,舉個例子

6樓:匿名使用者

pb[i].tabindex = i.tostring();

public override void pb_click(object sender,eventargs e)

這是baiwinform

借用du

控制元件zhi的屬性

dao傳版值。權

7樓:匿名使用者

menuitemfolder.click += (sender, e) => yourmethod(owner, datatype);

public void yourmethod(owner, datatype){}

[100分]c# 如何向事件的**函式中傳遞引數?

8樓:

click事件使用者無法自主呼叫(都是由系統呼叫的),即便能傳遞引數,你又如何傳進去呢?

routedeventhandler委託已經第二個引數是事件引數,如果你需要自定義事件,可以用eventhandler或擴充套件eventhandler重新定義事件,

那要怎樣取消匿名函式的訂閱呢?

匿名方法無法取消訂閱,如果你需要取消訂閱的功能,使用命名方法,

9樓:

需要明白的概念是vc中的**函式在c#中是用委託的方式實現,兩者都是呼叫函式的規範,表示了呼叫本函式會有什麼引數和返回值,事件是用委託簽名的函式,因為事件就有與簽名函式一樣的引數和返回值,事件有windows時間和自定義事件,其根本解決的問題就是當系統或物件內部產生訊息後,需要由外部進行處理而產生的外部呼叫機制,明白了原理,你才能明白他的運作機制,就自然明白他為什麼這樣,為什麼不能那樣。。。

10樓:

如果單純想要傳遞引數,不需要固定在這個層面的方法。

你可以再定義一個方法public void mybtn_click(object sender, routedeventargs e,string mystr)

然後再在btn_click 方法中呼叫自己的方法。

mybtn_click(sender, e,mystr);

如果你做的基類,那就要繼承eventargs類,自定義一個引數型別。

11樓:匿名使用者

個人想法,你的btn不是孤立的,它是作為一個窗體裡的物件存在的

那麼你是不是可以通過btn.form之類的方法獲取到這個窗體,從而獲取到窗體裡的相應屬性之類

如果不是公共的,可以通過反射來實現

routedeventhandler事件的引數是已經固定了的,就是object sender, routedeventargs e

所以你無法增加你需要的引數,

不過這個sender,就是觸發事件的物件,也就是那個btn,你可以變通一下,給那個btn的某些屬性賦值成你希望傳遞的引數,比如btn.text = 引數

然後在:btn_click方法裡,把sender轉換為btn物件,並獲取text屬性

12樓:你是誰

1..net的事件驅動設計其實體現了觀察者設計模式。而觀察者模式又有pull和push兩種,.net的事件驅動結合了這兩種方式。

(1).被訂閱者通過將資訊封裝到xxeventargs將資訊推送給訂閱者

(2).訂閱者可以主動從sender讀取資訊。

2.在樓主舉的情形下一般是不需要傳遞額外的引數的,因為頁面或窗體的資訊都可以直接或者通過sender來得到。

3.如果是自己想設計這樣的一個事件訂閱,可以考慮將要作為引數傳遞的資訊封裝到xxeventargs裡

13樓:匿名使用者

c# 裡面這個東西一般指某個委託.其實也可以是介面.

delegate void workdone();

void working(workdone callback)void workdonehandler()void do()

也就是相當把某個方法(workdonehandler())當作引數傳遞給另外一個方法(working(workdone callback)).

這樣做的好處在於,可以動態的指定執行哪個方法.

比如在do()方法中,我們指定的callback 是workdonehandler 當然也可以是其它匹配的方法. 而working()方法 更本不需要知道自己最後執行的是哪個handler.

14樓:休平凡

btn_click (null,null)

15樓:匿名使用者

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.text;

using system.windows.forms;

namespace windowsformdelegate

public delegate string getadvancequerysqlhandler(string foreignkey);

public event getadvancequerysqlhandler getadvancequeryevent;

private delegate void myhandler();

private event myhandler myevent;

private string getadvancequerya(string foreignkey)

private string getadvancequeryb(string foreignkey)

private void mymethod1()

private void mymethod2()

private void button1_click(object sender, eventargs e)

private void button2_click(object sender, eventargs e)

string sql = string.empty;

if (getadvancequeryevent != null)

}messagebox.show(sql);}}}

c# 事件傳遞

16樓:陽光的雷咩咩

a需要定義相應的事件來傳遞b的事件

17樓:射手小小王

form 直接註冊類庫b的事件

c# 控制元件如何當成引數傳給方法、 並且在方法裡面使用它?

18樓:斯內科

public static void textboxclearall(textbox tb) 設立一個引數 為textbox型別

改成public static void textboxclearall(textbox tb) 設立一個引數 為textbox型別

關於逗號表示式的問題,C語言逗號表示式

x 4,y 11 第三行和第四行都是逗號表示式,但是有區別 第三行中x a 1是逗號表示式的第一個式子,b 6是第二個式子 所以x a 1 4 第四行中的a 1和b 6組成逗號表示式,逗號表示式的值付給y,所以b 6等於11付給y。我想可能是這樣 x 4,y 11 逗號好像是最低階的,那x a 1 ...

寫出下列變化的文字表示式或化學符號表示式,並註明反應型別(化

抄1 硫在空氣中燃燒生襲成二氧化硫,屬於化合反應,文字表示式為 硫 氧氣點燃 二氧化硫 化合反應 2 電解水生成氫氣和氧氣,屬於分解反應,文字表示式為 水通電氫氣 氧氣 分解反應 3 過氧化氫在二氧化錳的催化作用下生成水和氧氣,屬於分解反應,文字表示式為 過氧化氫二氧化錳 水 氧氣 分解反應 寫出下...

c中,如何通過正規表示式(或其他方法)獲取字串中數字

from match m in regex.matches 北京天安門到人民大會堂向東走500.9434324米,在第二個路口向東走789.3434324324米 d d select math.round double.parse m.value 1 toarray 擷取字串中數字型別的自定義函式...