winforms 在多个面板上来回移动

cvxl0en2  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(147)

我有一个小组(命名为主面板),其中我调整了3个面板(即分别为panel1、panel2和panel3),以便它们都放置在同一位置,一个在另一个之上,而不是一个在另一个之内。加载窗体时,只有panel1可见,其余的panel2和panel3隐藏,现在单击panel1中名为button1的按钮,它打开panel2并隐藏panel1。类似地,单击panel2中名为button2的按钮时,它打开panel3并隐藏panel2。最后,当我单击button3或button4或button5时(这3个在面板3内)在面板3内,他们打开了一个新的表单。现在的问题是我已经设法通过点击所有这些按钮向前移动(或通过捕获击键)从panel1开始,但不知道如何使用击键从panel3移动到panel2和从panel2移动到panel1,返回到上一个面板。请建议我一种使用转义键实现此操作的方法。

public partial class directionform : Form
 {
 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
 {
     switch (keyData)
     {
         
         case Keys.I:
             // Simulate clicks on button1.
             //  button1.PerformClick();
             buttonwithcue1.PerformClick();
             break;
         case Keys.U:
             // Simulates clic on button2.
             button2.PerformClick();
             break;
         case Keys.L:
             buttonwithcue2.PerformClick();
             return true;
         //e.Handled = true;
         // break;           
         case Keys.C:
             buttonwithcue3.PerformClick();
             return true;
         //e.Handled = true;
         // break;   
         case Keys.A:
             buttonwithcue4.PerformClick();
             return true;
         //e.Handled = true;
         // break;   
         case Keys.D:
             buttonwithcue5.PerformClick();
             return true;
         //e.Handled = true;
         // break;   
         default:
             break;
   if (keyData == Keys.Escape)
     {
         **// how to move back on pressing escape key** 
     }
     return base.ProcessCmdKey(ref msg, keyData);
     }
private void directionform_Load(object sender, EventArgs e)
 {
     panel5.Hide();
     panel6.Hide();
        
 }
private void buttonwithcue1_Click(object sender, EventArgs e)
 {
     panel1.Hide();
     panel2.Show();
  }
   private void buttonwithcue2_Click(object sender, EventArgs e)
 {
     panel2.Hide();       
     panel3.Show();
    
 }
  // all three below buttons belong to panel 3 (last panel ) 
         private void buttonwithcue3_Click(object sender, EventArgs e)
     {           
     panel3.Hide();          
   // go to next form  
 }
 private void buttonwithcue4_Click(object sender, EventArgs e)
 {           
     panel3.Hide();           
  // go to next form  
 }
 private void buttonwithcue5_Click(object sender, EventArgs e)
 {
    panel3.Hide();         
  // go to next form  
 }
mm9b1k5b

mm9b1k5b1#

保持面板的堆栈选取顺序。
Panel1(P1)是当前面板。
例如用户选择面板2,则当前面板P1被添加到堆栈。
用户选择Panel4,则将当前面板P2添加到堆栈。
Panel4是当前面板。
当用户按下退出键时,堆栈P2顶部的面板被弹出并成为当前面板。

相关问题