2009-08-25 5 views
1

私はVisual Basic 6の開発者で、CLRに移行し、実際のnewb質問への回答が必要です。 ActiveXコントロールを持っていた場合、あなたはそのコントロールを参照してから言って、本質的に文を持つことができるのVisual Basic 6で それは何と呼ばれていますか? CLR DLLが生成する「イベント」を処理したい

公開WITHEVENTS YourControl(「WITHEVENTS」キーワードを重視)

何Visual Basicでは、そのコントロール用の一連のイベントハンドラ関数が用意されています。単純にドロップダウンリストから選択すると、空のハンドラが生成されます。

私はVS2008(Winform)のそれと同等のものを探しています。 Visual Studio 2008 IDEでその機能にアクセスするにはどうすればよいですか? Winformプロジェクトで参照されているCLR DLLプロジェクトがあります。私はそのCLR DLLの関数/クラスにアクセスする方法を知る必要があります。

ありがとうございます!イベントブロードキャスターのクラスで

+0

"CLR"ではなく "C#"を意味していますか? – David

答えて

0

obj.MyEvent += new EventHandler(obj_MyEvent); 

void obj_MyEvent(object sender, EventArgs e) 
{ 
    // Do something as a result of the event here 
} 

構文はC#で、VB.NETは

+0

イベント宣言と呼び出しの構文は似ていますが、デリゲートの追加は似ていません。 –

+0

AddHandler ... AddressOf ...私と似ていますが、もっと冗長です。しかし、彼は "CLR"を求めた。おそらくそれはldftnを意味します... callvirtインスタンスvoid BroadcasterClass :: add_MyEvent(class System.EventHandler)? ;) – rpetrich

1

答えは言語、あなたに依存します似ています:イベントレシーバクラスで

public event EventHandler MyEvent; 

void OnMyEvent() 
{ 
    if (MyEvent != null) 
     MyEvent(this, EventArgs.Empty); 
} 

使用しています。

は、あなたがVisual Basic .NETの

構文を使用している場合は、実際には同じです。すべての.NET言語では、イベントは単純にdelegatesです。これらは、基本的に同じシグネチャの0個以上の関数を指すことができる関数ポインタです。

WithEventsキーワードはVB.NETでイベントを処理するために絶対に必要はありませんが、それは、従来のVBスタイルのイベントハンドラを使用する機能を開発者に提供しません(これは設計者がそれをしない方法である、などよく)。あなたが見ることに興味があるならAddHandler

AddHandler YourControl.Click, AddressOf ClickFunction 

Private Sub ClickFunction(ByVal sender as Object, ByVal e as EventArgs) 
    'do things 
End Sub 

を使用し、WithEventsキーワードを指定せずにオブジェクト上のイベントを処理するには、この

Private WithEvents YourControl as Control 

Private Sub ClickFunction(ByVal sender as Object, ByVal e as EventArgs) Handles YourControl.Click 
    'do things 
End Sub 

のように、あなたが精通しているだけのように行うことができますエディタの一番上にあるコンボボックスのイベントは、WithEventsキーワードで宣言する変数です。関心のある変数を左のメニューに配置すると、イベントが右のメニューに表示されます。

あなたがC#の.NET

C#で、このような任意の機能はありませんを使用している場合。

private Control YourControl; 

private void ClickFunction(Object sender, EventArgs e) 
{ 
    // do stuff 
} 

// to attach, this goes somewhere in code 

//... 
YourControl.Click += ClickFunction; 
//... 
関連する問題