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

btnAP_Reset_Click正如lazyberezovsky 建议的评论:尝试从事件处理程序(等)中提取要执行的逻辑。它可能看起来像这样:

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 回答
0

你应该听听那些对这个问题写了一些评论的人 - 但如果你决心使用按钮点击 - 你可以打电话button.PerformClick()

它看起来像这样:

 btnAP_Reset.PerformClick();

这不会将空值作为参数发送到您的点击事件实现。

于 2013-03-04T13:29:39.807 回答