繁体   English   中英

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);

您正在传递类本身,但是该方法接受它的一个实例,因为您具有单例属性,因此可以使用该属性:

ChangeInstance(UserSettings.Instance);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM