- Winform에서 TabControl은 TabPage가 기본적으로 2개밖에 없기 때문에 TabPage 추가와 Form을 5개 추가해서 띄워 보는 방법을 포스팅하겠습니다.
https://succeeed3256.tistory.com/171
- 이 글을 읽기 전에 위에 있는 글을 먼저 보고 하시면 이해가 더 빠르실 겁니다.
1. TabPage 이름 바꾸기
- TabControl의 tabPage1을 누르고 빨간색 박스 아무 곳에 클릭을 하면 오른쪽 속성이 뜹니다.
- 오른쪽 밑에 파란색 박스에 자신이 원하는 이름을 입력하시면 됩니다. 저는 Con1으로 하겠습니다.
- 이름이 Con1으로 변경되었습니다.
2. TabPage 추가
- 빨간색 박스 Con1이나 tabPage2를 누르고 파란색 박스 TabPages의 (컬렉션)을 클릭하고 ...을 눌러줍니다.
- TabPage 컬렉션 편집기
- tabPage3 생성 -> Text에서 이름을 바꿔주셔도 됩니다. 저는 Con3로 하겠습니다.
- TabPage(Con3)가 생성되었습니다.
- 이 방법으로 2개 더 추가하겠습니다.
- 결과
3. Form 5개 만들고, TabControl에 넣기
- 자세한 방법은 맨 위에 링크로 들어가 주시면 됩니다.
- 5개의 Form을 만들었습니다.
- 각 폼의 FormBorderStyle을 Sizable -> None으로 바꿉니다.
4. TabControl에 Form 넣기 구현
- Form1.cs 에 코드를 입력합니다.
- Con1_Load의 함수를 보시면 tabControl1.TabPages.Count의 값은 5입니다.
- TabPage를 5개를 만들었기 때문이죠.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Load += Con5_Load;
this.Load += Con4_Load;
this.Load += Con3_Load;
this.Load += Con2_Load;
this.Load += Con1_Load;
}
private void Con1_Load(object sender, EventArgs e)
{
Con1 con1 = new Con1();
// Form1 = Parent 최상위노드 = 0 // Con1,2,3,4,5 = Child 하위노드 = 1 // .TopLevel = true이면 1~5의 폼들이 최상위 노드로 되기 때문에 false // 애초에 불가 con1.TopLevel = false;
// [tabControl1.TabPages.Count] = 5 // Con1 tabPage의 tabIndex가 0이기 때문에 5 - 5 = 0 tabControl1.TabPages[tabControl1.TabPages.Count - 5].Controls.Add(con1);
tabControl1.SelectedIndex = tabControl1.TabPages.Count - 5;
con1.WindowState = System.Windows.Forms.FormWindowState.Maximized;
con1.Show();
}
private void Con2_Load(object sender, EventArgs e)
{
Con2 con2 = new Con2();
con2.TopLevel = false;
// Con2 tabPage의 tabIndex가 1이기 때문에 5 - 4 = 1 tabControl1.TabPages[tabControl1.TabPages.Count - 4].Controls.Add(con2);
tabControl1.SelectedIndex = tabControl1.TabPages.Count - 4;
con2.WindowState = System.Windows.Forms.FormWindowState.Maximized;
con2.Show();
}
private void Con3_Load(object sender, EventArgs e)
{
Con3 con3 = new Con3();
con3.TopLevel = false;
// Con3 tabPage의 tabIndex가 2이기 때문에 5 - 3 = 2 tabControl1.TabPages[tabControl1.TabPages.Count - 3].Controls.Add(con3);
tabControl1.SelectedIndex = tabControl1.TabPages.Count - 3;
con3.WindowState = System.Windows.Forms.FormWindowState.Maximized;
con3.Show();
}
private void Con4_Load(object sender, EventArgs e)
{
Con4 con4 = new Con4();
con4.TopLevel = false;
// Con4 tabPage의 tabIndex가 3이기 때문에 5 - 2 = 3 tabControl1.TabPages[tabControl1.TabPages.Count - 2].Controls.Add(con4);
tabControl1.SelectedIndex = tabControl1.TabPages.Count - 2;
con4.WindowState = System.Windows.Forms.FormWindowState.Maximized;
con4.Show();
}
private void Con5_Load(object sender, EventArgs e)
{
Con5 con5 = new Con5();
con5.TopLevel = false;
// Con5 tabPage의 tabIndex가 4이기 때문에 5 - 1 = 4 tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(con5);
tabControl1.SelectedIndex = tabControl1.TabPages.Count - 1;
con5.WindowState = System.Windows.Forms.FormWindowState.Maximized;
con5.Show();
}
}
}
|
cs |
- Form1.Designer.cs 에서 private void InitializeComponent() 함수를 열면,
- 각 tabPage마다 TabIndex가 있는 걸 보실 수 있습니다.
- tabPage에 Index의 알맞은 Form을 넣기 위해 -5, -4 -3, -2, -1(Form1.cs 참조)을 하는 걸 보실 수 있습니다.
- 5개 Form(Con1, 2, 3, 4, 5)에 버튼을 하나 추가합니다.
- 각 Con.cs에 코드를 작성합니다.
- Con1.cs인데
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test1
{
public partial class Con1 : Form
{
public Con1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//ex) Con2 -> "Con2!" //ex) Con3 -> "Con3!" ..... MessageBox.Show("Con1!");
}
}
}
|
cs |
5. Result
- 이상으로 포스팅 마치겠습니다. 감사합니다.
- 어려운부분이나 지적할 부분 있으시면 댓글로 남겨주시면 감사하겠습니다.
'Winform' 카테고리의 다른 글
[Winform] JSON 만들기, TextBox Property(Scrollbars) (0) | 2023.02.03 |
---|---|
[Winform] TextBox 문자열 기록 (File Read/Write, FormClosed) (2) | 2023.02.02 |
[Winform] TabControl에서 다른 Form 띄우기(3) (0) | 2023.02.01 |
[Winform] TabControl에서 다른 Form 띄우기 (2) | 2023.02.01 |