0

これらのコード行により、ユーザーコントロールがデザイナーで前述のエラーを返します。
ここで何か不足していますか?

    private void renewContext()
    {
        if (context != null)
        {
            context.Dispose();
            context = new SM_Context();
        }
        else
        {
            context = new SM_Context();
        }
    }
    private void tabPasswords_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.Source is TabControl)
        {
            TabControl tab = (TabControl)e.Source;
            switch (tab.SelectedIndex)
            {
                default:
                    break;
                case 0:
                    btnAP_Reset_Click(null, null);
                    btnEP_Reset_Click(null, null);
                    break;
                case 1:
                    btnEP_Reset_Click(null, null);
                    break;
                case 2:
                    btnAP_Reset_Click(null, null);
                    headEditPassword_Loaded(null, null);
                    break;
            }
        }
    }

問題はボタンではなく、確信があります。問題はコンテキストのみです。
いくつかのセキュリティ上の理由から、タブが変更されても、その中のコンテキストを更新できないことがわかりました。
どうすればこれを達成できますか?

4

2 に答える 2

0

質問にコメントを書いた人たちに耳を傾ける必要がありますが、ボタンクリックを使用することに決めた場合は、電話をかけることができますbutton.PerformClick()

次のようになります。

 btnAP_Reset.PerformClick();

これは、null 値をパラメータとしてクリック イベントの実装に送信しません。

于 2013-03-04T13:29:39.807 に答える
0

btnAP_Reset_Clicklazyberezovsky がコメントとして提案したように: イベント ハンドラ (など)から実行したいロジックを抽出してみてください。次のようになります。

private void tabPasswords_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (e.Source is TabControl)
    {
        TabControl tab = (TabControl)e.Source;
        switch (tab.SelectedIndex)
        {
            default:
                break;
            case 0:
                context = new SM_Context();
                ResetAp();
                ResetEp();
                break;
            case 1:
                context = new SM_Context();
                ResetEp();
                break;
            case 2:
                context = new SM_Context();
                ResetAp();
                WhatEverThisDoes();
                break;
        }
    }
}

private void ResetAp()
{
    // ...
}

private void ResetEp()
{
    // ...
}

private void WhatEverThisDoes()
{
    // ...
}

private void btnAP_Reset(object sender, EventArgs e)
{
    ResetAp();
}

private void btnEP_Reset(object sender, EventArgs e)
{
    ResetEp();
}

private void headEditPassword_Loaded(object sender, EventArgs e)
{
    WhatEverThisDoes();
}
于 2013-03-04T13:09:45.707 に答える