-1

@Mark、はい、私はユーザーコントロールでイベントを作成します。これが私のコードです:

ユーザーコントロール

namespace Purchase_Order
{
    public partial class Static : UserControl
    {
        public event EventHandler ClassificationClicked;
        public Static()
        {
            InitializeComponent();
        }

        private void btnClassification_Click(object sender, EventArgs e)
        {
            ClassificationClicked(sender, e);
        }
    }
}

メインフォーム

public partial class formMain : Form
{

    public formMain()
    {
        InitializeComponent();
        Static.ClassificationClicked += new EventHandler(Static_ClassificationClicked); 
    }

    private void formMain_Load(object sender, EventArgs e)
    {
        Static control = new Static();
        panelSide.Controls.Clear();
        panelSide.Controls.Add(control);   
    }

    void  Static_ClassificationClicked(object sender, EventArgs e)
    {
        classification control = new classification();
        panelMain.Controls.Clear();
        panelMain.Controls.Add(control);
    }

}

そして、ここにエラーがあります-> Static.ClassificationClicked += new EventHandler(Static_ClassificationClicked);

4

3 に答える 3

1

私はそれがあなたのユーザーコントロールbtnClassification_Clickのメソッドであり、あなたのインスタンスにあると仮定しています.staticformMain

問題は、メソッドで、ユーザー コントロールがオンになっているインスタンスにアクセスする代わりに、クラスbtnClassification_Clickの新しいインスタンスを作成することです。クラスで既に公開されているように見えるので、ユーザー コントロールを追加するクラスの適切なインスタンスを見つけるだけで済みます。これを行うには、このメソッドをユーザー コントロールに配置します。formMainstaticmainPanelformMainformMainstatic

private Form GetParentForm()
{
    Control current = this.Parent;
    while (current != null)
    {
        Form form = current as Form;
        if (form != null)
        {
            return form;
        }

        current = current.Parent;
    }

    return null;
}

次に、イベント ハンドラーからこのメソッドを呼び出します。

private void btnClassification_Click(object sender, EventArgs e)
{
    classification control = new classification();
    formMain main = (formMain)this.GetParentForm();
    main.panelMain.Controls.Clear();
    main.panelMain.Controls.Add(control);
}
于 2013-04-25T00:51:07.417 に答える