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()
我正在尝试制作一种在单击按钮时更改用户控件的方法。
用户控件
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()