C# winforms 将面板中的用户控件更改为方法

C# winforms change usercontrol in panel as method

我正在尝试制作一种在单击按钮时更改用户控件的方法。

用户控件

namespace LogAnalyzer
{
    public partial class UserSettings : UserControl
    {
        private static UserSettings _instance;
        public static UserSettings Instance
        {
            get
            {
                if (_instance == null)
                    _instance = new UserSettings();
                return _instance;
            }
        }
        public UserSettings()
        {
            InitializeComponent();
        }

        private void btnUnpackPath_Click(object sender, EventArgs e)
        {
            flowLayoutPanel1.Hide();
        }
    }
}

我的表格

namespace LogAnalyzer
{
    public partial class LogAnalyzerMain : Form
    {
        public LogAnalyzerMain()
        {
            InitializeComponent();
        }

        private void ChangeInstance(Control tab) {
            if (!panelDisplay.Controls.Contains(tab))
            {
                panelDisplay.Controls.Add(tab);
                tab.Dock = DockStyle.Fill;
            }
            tab.BringToFront();
        }

        private void btnSettings_Click(object sender, EventArgs e)
        {
            ChangeInstance(UserSettings);
        }
    }
}

它在我的表单中的这一行中给我一个错误('UserSettings' 是一种类型,在给定的上下文中无效)

ChangeInstance(UserSettings);

您正在传递 class 本身,但该方法采用它的一个实例,因为您有一个单例 属性 您可以使用它:

ChangeInstance(UserSettings.Instance);

否则您必须将实例存储在某个地方,例如在 LogAnalyzerMain as 字段中,或者如果它是您表单上的控件,您可以使用 this.Controls.OfType<UserSettings>().First()