簡體   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