2017-05-12 16 views
0

4 개의 패널이 있습니다. 나는 모든 패널을 숨기고 클릭 된 버튼에 따라 그들 중 하나를 보여주고 싶다. 응용 프로그램을 실행하고 버튼을 클릭하면 성공적으로 모든 패널이 숨겨 지지만 원하는 패널이 표시되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?버튼 클릭시 패널 표시 및 숨기기 C#

namespace Detailing 
{ 
public partial class MainForm : Form 
{ 
    public void hidePanels() 
    { 
     welcomePanel.Width = 0; 
     homePanel.Width = 0; 
     historyPanel.Width = 0; 
     savePanel.Width = 0; 
    } 
    public MainForm() 
    { 
     InitializeComponent(); 
     Load += new EventHandler(MainForm_Load); 
    } 
    private void MainForm_Load(object sender, EventArgs e) 
    { 
     hidePanels(); 
     welcomePanel.Width = 1306; 
    } 

    private void homeButton_Click(object sender, EventArgs e) 
    { 
     hidePanels(); 
     homePanel.Width = 1306; 
    } 
} 
} 

추신 : 여기

내 코드입니다 welcomePanel.Hide();homePanel.Show();을 사용해 보았지만 제대로 작동하지 않았습니다. 또한 welcomePanel.Visible = false;homePanel.Visible = true;을 사용하려고했지만 슬프게도 잘 작동하지 않았습니다.

+2

당신은 확인해야 필요로 쇼를 포함하지하는 TabPage를 숨 깁니다/:

그래서, welcomePanel 가정하면 쓸 수있는 참조 패널입니다 다른 패널 내부의 패널. 다른 말로하면 패널은 다른 패널의 자식이 아니어야합니다. 그렇지 않으면 부모를 숨기면 자식을 숨 깁니다. – Steve

+0

이름을 기반으로, 이들은 나에게 실제로 중첩 된 패널 대신 다른 양식이어야한다고 생각됩니다. – PoweredByOrange

+2

너비를 혼란스럽게하지 말고 간단히 보이지 않게하십시오 :'yadayada.Visible = true/false :':리스트 에 넣어두면 루프 할 수 있습니다! 물론 작동 할 것입니다. 그러나 그렇습니다. 그들은 중첩되어서는 안됩니다. 코드 또는 키보드 (!!!!)에서 마우스 위로 움직이지 않도록하려면 (!!!!!!!) – TaW

답변

1

패널은 제어 컨테이너입니다. 즉, 디자이너를 사용하여 다른 패널의 표면 위로 패널을 드래그하면 해당 패널의 하위 패널이됩니다. 기본 패널을 이동하려고하면이 사실을 쉽게 볼 수 있습니다. 모든 아이들이 함께 움직입니다.

양식의 다른 위치에 패널을 그리고 다른 모든 패널의 자리 표시 자로 하나만 유지할 수 있습니다. 양식을로드하거나 양식 생성자에서 참조 패널의 동일한 위치에있는 다른 패널을 코드하여 이동할 수 있습니다.

public partial class MainForm : Form 
{ 
    public void hidePanels() 
    { 
     welcomePanel.Visible = false; 
     homePanel.Visible = false; 
     historyPanel.Visible = false; 
     savePanel.Visible = false; 
    } 
    public MainForm() 
    { 
     InitializeComponent(); 
     Load += new EventHandler(MainForm_Load); 
     homePanel.Location = welcomePanel.Location; 
     historyPanel.Location = welcomePanel.Location; 
     savePanel.Location = welcomePanel.Location;   
    } 
    private void MainForm_Load(object sender, EventArgs e) 
    { 
     hidePanels(); 
     welcomePanel.Visible = true; 
    } 

    private void homeButton_Click(object sender, EventArgs e) 
    { 
     hidePanels(); 
     homePanel.Visible = true; 
    } 
    ..... and so on ... 

} 

또 다른 방법이있는 TabControl을 사용하는 것입니다 당신이

+0

당신의 방법이 효과가있었습니다. 문제는 첫 번째 패널 안에 두 번째 패널을 추가했다는 것입니다. 상세한 답변을 해주셔서 대단히 감사합니다. 매우 도움이되었습니다. –