C#창문 열기를 어떻게 판단합니까

1874 단어 문제.

문제.


실행할 때Form1이 나타나고 단추를 누르면 창으로Form2가 튀어나옵니다.다시 클릭하면 창이 튀어나옵니다. (new form을 사용했기 때문에 다시 form2를 만들었기 때문에 계속 뛴다.)내가 원하는 효과는 하나만 나올 수 있고 다시 클릭하면 새로운 것이 나오지 않는다.그럼 이것은if문장을 덧붙여서 판단해야 한다.
코드 데모:
Form1     :
public Form2 f2 =null;//        
private void button1_Click(object sender,EventArgs e)
{
    if(f2==null)
    {   //      ,       ,       。
        f2=new Form2(this);
        f2.Show();
    }//       ,    ,         。
}

Form2    :
Form1 f1; //    Form1     。
public Form2(Form1 ff)
{
    InitializeComponent();
    f1=ff;
}
private void Form2_FormClosing(object sender,FormClosingEventArgs e)
{   // Form2     , Form1  Form2     ,
    f1.f2=null;
}

뒤돌아보다: 다시 처음부터 문제를 생각해 보자. 나는 어떻게 한 창에서 다른 창을 제어할 수 있는지 생각했다. 나는 A 창에 B 창을 new로 만들 수 있다.그러나 나는 B 창이 열렸는지 아닌지를 판단하기 위해if조건문을 설정해야 한다.그러면 Form1 (대응 A 창) 에는 B 창을 연결하는 물건이나 매개 변수, 변수가 있어야 합니다.내가 이미 창을 하나 가지고 있다면 f2는null이 아니다.그렇다면 if판단은 바로 넘어가고 덧붙이기 쉽다. 그러면 어떻게 삭제할까?왜냐하면 나는 A 창을 열었을 때 이미 B 창을 열었기 때문이다. 단지 표시되지 않았을 뿐이고, 내가 설정한 초기 값은null이기 때문이다.Form1에는 Form2의 변수가 있는데 생각하기 쉽다. 왜냐하면 Form1은 Form2를 제어하지만 Form2에는 From1의 변수가 있기 때문이다.

좋은 웹페이지 즐겨찾기