C#winforms更改面板中的usercontrol作为方法

时间:2017-10-06 10:32:02

标签: c# winforms user-controls

我正在尝试在单击按钮时创建一个更改usercontrol的方法。

用户控件

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

1 个答案:

答案 0 :(得分:1)

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

ChangeInstance(UserSettings.Instance);

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