gpt4 book ai didi

c# - 返回初始用户控件后返回 null 的表单

转载 作者:行者123 更新时间:2023-11-30 16:25:23 25 4
gpt4 key购买 nike

我是 Windows 窗体的新手,在处理所有用户控件时遇到问题。我有 3 个用户控件,当我单击接受按钮时,它会将我带到第二个屏幕(这是用户控件 2),但是当我在第二个屏幕上单击取消时,它会将我带回第一个屏幕(我加载第一个用户控件)现在的问题是,当我再次单击“接受”时,欢迎用户控件返回 null 和错误。

private void Viewer_Load(object sender, EventArgs e) { formPanel.Controls.Clear(); formPanel.Controls.Add(wel);

    private void SwapControls(object sender, EventArgs e)
{
if (formPanel.Controls.Contains(wel))
{
formPanel.Controls.Remove(wel);
formPanel.Controls.Add(p);
}
else if (formPanel.Controls.Contains(pin) && IsAuthenticated)
{
formPanel.Controls.Remove(p);
formPanel.Controls.Add(m);
}
else if(formPanel.Controls.Contains(pin) && !Global.IsAuthenticated)
{
formPanel.Controls.Remove(p);
formPanel.Controls.Add(wel);
}

所以它第一次加载欢迎用户控件,然后我单击“接受”,它清除用户控件并加载第二个“输入 PIN 控件”,当我单击“取消”时从那里加载我删除该用户控件并再次加载欢迎。但是现在,当我单击接受时,我在欢迎用户控件的这一行中得到一个空值

 this.AddControl(this, new EventArgs());

再次声明,我是 Windows 窗体的新手,正在学习,任何意见将不胜感激。

最佳答案

由于您正在重复使用 UserControlsForm 中删除处理程序时不要删除它们, 请确保在使用完 UserControls 后将它们移除.

尝试这样的事情。

private void SwapControls(object sender, EventArgs e) 
{
if (formPanel.Controls.Contains(wel))
{
formPanel.Controls.Remove(wel);
formPanel.Controls.Add(pin);
}
else if (formPanel.Controls.Contains(pin) && Global.Instance.IsAuthenticated)
{
formPanel.Controls.Remove(pin);
formPanel.Controls.Add(mmenu);
}
else
{
formPanel.Controls.Remove(pin);
formPanel.Controls.Add(wel);
}
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
wel.AddControl -= new EventHandler(SwapControls);
pin.AddControl -= new EventHandler(SwapControls);
pin.ReturnWelcome -= new EventHandler(SwapControls);

if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

关于c# - 返回初始用户控件后返回 null 的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9961952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com