jay*_*ayz 5 c# panel visual-studio winforms
我有1个表单的3个面板来完成输入某些数据的过程.单击面板中的下一个按钮时,应显示下一个面板.最初,我启用了第一个面板的可见性,并禁用了其他面板的可见性.
单击下一个按钮时,将执行以下代码.
panel1.Visible = false;
panel2.Visible = true;
Run Code Online (Sandbox Code Playgroud)
为了发展的目的,我把它们并排放在一起(不是一个又一个),它完美无缺.
但是当我把它们放在另一个上面时,上面的代码看起来似乎并不是什么,这意味着当点击下一个按钮时它只显示一个空表格.
然后我也添加了下面的代码.
panel1.SendToBack();
panel2.BringToFront();
Run Code Online (Sandbox Code Playgroud)
但它没有用.有人可以帮我弄这个吗.
谢谢.
这在设计师总是出错,底部面板将成为顶级面板的父母.因此,如果你隐藏底部,你永远看不到顶部的那个.
这可以通过View>(Other Windows)> Document Outline解决,将顶部面板拖回到表单.仍然非常痛苦,您通常需要手动编辑位置,然后在设计器中对表单进行任何更改往往会使面板黯然失色.
有更好的方法来做到这一点.强烈建议使用创建UserControl,它们有自己的设计图面.或者使用RAD方式并使用TabControl执行此操作.您所要做的就是在运行时隐藏选项卡,这是Q + A的主题.
您可以使用以下代码同时拥有多个面板,并通过添加到表单的下一个按钮在它们之间进行切换。
public Form1()
{
InitializeComponent();
panel1.Visible = true;
panel3.Visible = false;
panel2.Visible = false;
}
private void btnNext_Click(object sender, EventArgs e)
{
if (panel1.Visible)
{
panel1.Visible = false;
panel2.Visible = true;
panel3.Visible = false;
}
else if (panel2.Visible)
{
panel1.Visible = false;
panel2.Visible = false;
panel3.Visible = true;
}
else if (panel3.Visible)
{
panel1.Visible = true;
panel2.Visible = false;
panel3.Visible = false;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,如果您以升序/降序格式标记面板,标签之间没有间隙,例如 1,2,3,4 或 5,4,3,2 而不是 1,2,4 您可以使用此代码
public Form1()
{
InitializeComponent();
panel1.Visible = true;
panel2.Visible = false;
panel3.Visible = false;
}
private void btnNext_Click(object sender, EventArgs e)
{
TogglePanels();
}
public void TogglePanels()
{
List<Panel> allPanelsInForm = new List<Panel>();
foreach (var control in Controls)
{
if (control is Panel)
allPanelsInForm.Add(control as Panel);
}
Panel visiblePanel = allPanelsInForm.Where(o => o.Visible).FirstOrDefault();
int nextPanelId = Convert.ToInt32(visiblePanel.Tag) + 1;
bool nextPanelExists = allPanelsInForm.Exists(o => Convert.ToInt32(o.Tag) == nextPanelId);
nextPanelId = nextPanelExists ? nextPanelId : 1;
foreach (Panel panel in allPanelsInForm)
{
panel.Visible = Convert.ToInt32(panel.Tag) == nextPanelId ? true : false;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望它能帮助你。
| 归档时间: |
|
| 查看次数: |
9682 次 |
| 最近记录: |