C#、asp.net 4.0、VS2015で作業しています。ユーザーコントロールを作成しました。このコントロールは、ユーザーが渡すことができる他のプロパティもいくつかありますイベントとデリゲートとして。ドロップダウンが変更されると、OnSelectedIndexChangedがトリガされ、イベントがポピュレートされてデリゲートを呼び出すかどうかがチェックされます。このようなVisual Studioでハンドラシグネチャを自動的に作成する
定義ルック:
public partial class SiteList : System.Web.UI.UserControl
{
public event SiteIDChangedHandler SiteIDChanged;
public delegate void SiteIDChangedHandler(object sender, EventArgs e);
}
私がいる問題は、そのユーザーコントロールが消費されている場合で、イベントが動作したときに、デリゲートの定義がVisual Studioで作成されていない取り付けられています。 .aspxページ。たとえば、私は、次の
<CW:SiteList runat="server" ID="SiteList" OnSiteIDChanged=""
を入力してOnSiteIDChangedのための=記号を打っていて、それは、ちょうど私が.NETで使用していた他のイベントと同様に、OnSiteIDChangedのオプションとして、「新規イベントを作成」と言います。 "CreateNewEvent"を選択した場合、コードの背後に作成されるメソッドは、
protected void SiteList_SiteIDChanged()
{
}
であり、ハンドラの適切な署名が含まれていません。私はこれと後ろのコードでイベントをバインドする場合
今すぐ奇妙だものです: =
+ SiteList.SiteIDChangedそれは「挿入するように押して(TAB)」と言うと、挿入されている方法は次のとおりです。
private void SiteList_SiteIDChanged1(object sender, EventArgs e)
{
throw new NotImplementedException();
}
送信者に適切なメソッドシグネチャが作成され、最初のインスタンスにeventargsが自動的に追加されるように、私は何が欠けていますか?私はそれができることを知っている、すべてのネットコントロールはそれを行う!
自分で作成するのではなく、組み込みの 'EventHandler'デリゲートを使うべきです。 – SLaks
ASPX WebフォームはWin Formsデザイナーのように機能しません。できません。 代わりにサーバー側でOnInit Overrideを実行します。 SiteList.SiteIDChange + =(タブは自動完成のためにここにあります)。 新しい開発者にはWebフォームを使用しない人が多いことに気づくほど価値があります。MVC 5+とWeb API 2を使う方がずっといいです。 –
Webフォームではこのように機能します。先に進んでasp:dropdownlistを作成してみてください。できます。私たちの組織全体はウェブフォームです。 – LarryBud