는이 같은 기능이있는 프로그램을 만들고있어 : 형태 soanthao가 열릴 경우양식이 이미 열려 있는지 확인하는 가장 좋은 방법은 무엇입니까?
이, 다음 프로그램이 soanthao 형태의 tabControlEx 컨트롤에 새 탭 페이지를 추가됩니다
soanthao이 열리지 않으면 프로그램이 먼저 soanthao 양식을로드 한 다음 프로그램이 soanthao 양식의 tabControlEx 제어에 새 탭 페이지를 추가합니다.
tabControlEx 컨트롤에는 탭 페이지가 없습니다.
이 코드 사용했습니다 :
soanthao st = new soanthao();
bool opened=false;
FormCollection fc = Application.OpenForms;
foreach (Form frm in fc)
{
if (st == frm)
{
opened = true;
}
}
if (opened==false)
{
RichTextBox rtb = new RichTextBox();
TabPage tb = new TabPage();
tb.Text = textBox1.Text;
st.tabControlEx1.TabPages.Add(tb);
rtb.Parent = tb;
rtb.Dock = DockStyle.Fill;
st.Show();
this.Hide();
opened = false;
}
if (opened == true)
{
RichTextBox rtb = new RichTextBox();
TabPage tb = new TabPage();
tb.Text = textBox1.Text;
st.tabControlEx1.TabPages.Add(tb);
st.tabControlEx1.SelectTab(st.tabControlEx1.TabCount - 1);
rtb.Parent = tb;
rtb.Dock = DockStyle.Fill;
this.Hide();
}
을 그러나 문제는 soanthao 형태가 이미 열려있는 경우에도, 프로그램은 항상 새로운 soanthao 양식을 열 수 있습니다.
당신은 수도 :
당신의 접근 방식을 수정하려면 그 긴'if '블럭을 무너 뜨리는 것을 고려하고 싶습니다. - 대부분의 코드는 내부적으로 동일하거나 안전하다고 보입니다 - 예 하나의 탭만있는 경우에도 이미 표시되어있는 경우에도 '표시'를 호출하고 '선택 탭'을 호출 할 수 있어야합니다. –
[양식에 다른 인스턴스가없는 경우 양식 열기] 방법으로 열기 - 패스 유형] (https://stackoverflow.com/q/37512074/3110834) –