2016-12-18 6 views
-1

내 문제는 tabControl에 탭을 삽입하고 양식을 추가 한 것입니다. 기본적으로 탭으로 열려고하는 양식을 모두 표시하고 싶습니다. 메인 클래스 탭으로있는 TabControl에 양식을 추가추가 된 양식의 탭 이름 바꾸기

코드 :

private void new_form_Click(object sender, EventArgs e) 
    { 
     add = new Add(null); 
     add.TopLevel = false; 
     add.Visible = true; 
     add.FormBorderStyle = FormBorderStyle.None; 
     add.Dock = DockStyle.Fill; 
     var tabIndex = tabControl1.TabCount; 
     tabControl1.TabPages.Insert(tabIndex, "New Tab"); 
     tabControl1.SelectedIndex = tabIndex - 1; 
     tabControl1.TabPages[tabIndex - 1].Controls.Add(add); 
    } 

내가 폼 클래스에서 제목 이름을 변경하는 것이 쉬웠다 여러 양식을 사용했다 :

private void surname_Leave(object sender, EventArgs e) 
    { 
     this.Text = surname.Text; 
    } 

어떻게 추가 된 양식 내부에서 탭을 프로그래밍 방식으로 바꿀 수 있습니까?

편집 : 동일한 클래스의 탭 이름을 바꾸는 방법을 알고 있습니다. 탭에서 열어 본 양식의 탭 이름을 바꿔야합니다.

+1

가능한 복제 [을 TabControl의 이름을 변경하는 방법 (http://stackoverflow.com/questions/1617251/how 이름 바꾸기 - 탭 컨트롤) – Usman

+1

아주 현명한 질문이 아닙니다. 텍스트를 넣는 양식의 TextChanged 이벤트를 구독하십시오. 직접 알아야 할 것이 있습니다. 레이블 추가를 고려하십시오. –

+0

그게 문제입니다. 나는 내가 원하는 곳에 텍스트를 놓을 수 없다. 텍스트를 다른 양식으로 보낼 수 없습니다. 주요 양식. 이 두 번째 양식을 탭에서 열 수있는 양식. – Oiproks

답변

0

달성하려고 시도한 것은 하나의 참조를 다른 형식으로 전달함으로써 달성했습니다. Form2의에서

: Form1에있는

public Form2() 
{ 
    InitializeComponent(); 
} 

private Form1 mainForm; 
public Form2(Form callingForm) 
{ 
    mainForm = callingForm as Form1; 
    InitializeComponent(); 
} 

private void surname_Leave(object sender, EventArgs e) 
{ 
    mainForm.setTabTitle = surname.Text; 
} 

:

private void new_form_Click(object sender, EventArgs e) 
{ 
    add = new Add(this); \\this part was missing 
    add.TopLevel = false; 
    add.Visible = true; 
    add.FormBorderStyle = FormBorderStyle.None; 
    add.Dock = DockStyle.Fill; 
    var tabIndex = tabControl1.TabCount; 
    tabControl1.TabPages.Insert(tabIndex, "New Tab"); 
    tabControl1.SelectedIndex = tabIndex - 1; 
    tabControl1.TabPages[tabIndex - 1].Controls.Add(add); 
} 

public string setTabTitle 
{ 
    set { tabControl1.TabPages[tabControl1.SelectedIndex].Text = value; } 
}