C#Winform关闭面板
我创建了一个自定义关闭图像标签,将其添加到一个较大的标签,并将其添加到我的面板中。我有一堆这样的面板。我创建了一个函数来创建这个标签集合,然后将它添加到面板中。当单击一个小的关闭样式标签时,如何创建一个关闭面板(父级的父级?)的事件?这是我到目前为止所拥有的C#Winform关闭面板,c#,winforms,C#,Winforms,我创建了一个自定义关闭图像标签,将其添加到一个较大的标签,并将其添加到我的面板中。我有一堆这样的面板。我创建了一个函数来创建这个标签集合,然后将它添加到面板中。当单击一个小的关闭样式标签时,如何创建一个关闭面板(父级的父级?)的事件?这是我到目前为止所拥有的 public void MakePanel1(string panel_name) { Panel MyPanel = new Panel(); Label TitleLabel = AddTitleLabel(panel_
public void MakePanel1(string panel_name)
{
Panel MyPanel = new Panel();
Label TitleLabel = AddTitleLabel(panel_name);
MyPanel.Controls.Add(TitleLabel);
this.Controls.Add(MyPanel);
}
public Label AddTitleLabel(string title)
{
Label TitleLabel = new Label();
TitleLabel.Size = new Size(231, 20);
TitleLabel.BorderStyle = BorderStyle.FixedSingle;
TitleLabel.TextAlign = ContentAlignment.MiddleLeft;
TitleLabel.Text = title;
Label CloseLabel = new Label();
CloseLabel.Size = new Size(16, 16);
CloseLabel.Location = new Point(212, 2);
CloseLabel.Image = Image.FromFile(@"..\..\pics\x.png");
CloseLabel.Click += new System.EventHandler(this.DoStuffAndClosePanel);
TitleLabel.Controls.Add(CloseLabel);
return TitleLabel;
}
private void DoStuffAndClosePanel(object sender, EventArgs e)
{
// Do some stuff
// Close the panel -- sender.Close() ?????
}
提前感谢如果您真的想执行您描述的操作,您应该知道面板控件没有关闭方法,您可以:
private void DoStuffAndClosePanel(object sender, EventArgs e)
{
//Do Stuff
//...
//Close Panel
var parent=((Control)sender).Parent;
parent.Visible = false;
parent.Dispose();
parent = null;
}
作为另一个选项,您可以使用窗体而不是这样的面板。您可以隐藏窗体的标题栏并使用关闭按钮
例如,如果您希望有这样的表单:
public class PanelForm:Form
{
protected override void WndProc(ref Message message)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_MOVE = 0xF010;
switch (message.Msg)
{
case WM_SYSCOMMAND:
int command = message.WParam.ToInt32() & 0xfff0;
if (command == SC_MOVE)
return;
break;
}
base.WndProc(ref message);
}
}
以及显示该面板的方法:
var f= new PanelForm();
f.TopLevel=false;
f.FormBorderStyle= System.Windows.Forms.FormBorderStyle.FixedSingle;
f.MinimizeBox=false;
f.MaximizeBox=false;
this.Controls.Add(f);
f.Show();
或将其添加到表格布局面板
,或流程布局面板
另一种选择是使用
选项卡控件
删除不需要的选项卡。您所说的“关闭”面板是什么意思?折叠它?从表单中删除它?让它隐形?谢谢。现在,我已经考虑了更多,我实际上不需要关闭面板,只需要使它们不可见并移动它们。