值不能为空,参数名称为child或descendant
本文关键字:child descendant 参数 不能 | 更新日期: 2023-09-27 18:02:00
这几行代码导致我的usercontrol在设计器中返回上述错误。
我遗漏了什么吗?
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;
}
}
}
问题不在于按钮,我敢肯定,问题只在于上下文。
我发现,由于一些安全原因,标签改变了,不允许我更新其中的上下文。
那么我如何才能做到这一点呢?
正如lazyberezovsky建议的那样:尝试从事件处理程序(btnAP_Reset_Click
等)中提取您想要执行的逻辑。它可以像这样:
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();
}
你应该听听那些写了一些关于这个问题的评论的家伙-但是如果你决定使用按钮点击-你可以调用button.PerformClick()
它看起来像这样:
btnAP_Reset.PerformClick();
这将不会发送nullvalues作为参数到您的click事件的实现。