728x90
https://www.youtube.com/watch?v=vlVKwC1ALmM&list=PLxU-iZCqT52Cmj47aKB1T-SxI33YL7rYS&index=2
📌 Window 띄우기
namespace WpfApp2
{
internal class MyMain : Application
{
[STAThread]
public static void Main()
{
MyMain app = new MyMain();
//프로그램 시작
app.Run();
}
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
//메인윈도우 생성
Window mainWindow = new Window();
//윈도우 속성
mainWindow.Title = "WPF Sample(Main)";
//이벤트 생성
//MouseDown 이벤트 발생 시 호출되는 메서드 WinMouseDown
mainWindow.MouseDown += WinMouseDown;
//윈도우 화면 보여주기
mainWindow.Show();
//sub Window
for(int i=0; i<2; i++)
{
//윈도우 만들기
Window Win = new Window();
Win.Title = "Extra Window No" + (i + 1);
Win.Show();
}
//메인윈도우 1개 서브윈도우 1개가 뜨게된다.
}
private void WinMouseDown(object sender, MouseButtonEventArgs e)
{
//모달창 생성
Window win = new Window();
win.Title = "Modal DialogBox";
win.Width = 400;
win.Height = 200;
Button b = new Button();
b.Content = "Click me";
//버튼 클릭 시 Button_Click 메서드 실행
b.Click += Button_Click;
//윈도우에 버튼을 넣기 윈도우 크기만큼 버튼이 들어간다.
win.Content = b;
//윈도우에 모달 형태로 띄운다
win.ShowDialog();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("button Click", sender.ToString());
}
}
}
- main 은 실행되더라도 화면에 보이지 않기 때문에 OnStartup 을 재정의하여 사용
- 실행하면 아래와 같은 화면이 뜬다.
for(int i=0; i<2; i++)
{
//윈도우 만들기
Window Win = new Window();
Win.Title = "Extra Window No" + (i + 1);
//TaskBar에서 숨기기
Win.ShowInTaskbar = false;
Win.Show();
}
- TaskBar 에서 숨기고 싶을 때에는 ShowInTaskbar를 false로 두면 된다.
📌 셧다운 모드
[STAThread]
public static void Main()
{
MyMain app = new MyMain();
//셧다운모드
//OnExplicitShutdown : 명시적으로 셧다운 할 때 다른 창도 죽이기
//OnLastWindowClose : 마지막 창 닫힐 때 다른 창도 죽이기
//OnMainWindowClose : main Window 닫힐 때 다른 창도 죽이기
app.ShutdownMode = ShutdownMode.OnMainWindowClose;
//프로그램 시작
app.Run();
}
📌 부모 자식 관계 설정하기 (Owner)
- sub Window를 Main Window의 자식으로 설정 해 두면 Main Window가 꺼질 때 sub Window도 같이 꺼진다.
//sub Window
for(int i=0; i<2; i++)
{
//윈도우 만들기
Window Win = new Window();
Win.Title = "Extra Window No" + (i + 1);
//TaskBar에서 숨기기
Win.ShowInTaskbar = false;
//Owner 인 MainWindow가 죽으면 sub Window 같이 죽음
Win.Owner = MainWindow;
Win.Show();
}
- Owner를 설정하면 main이 항상 제일 뒤 창으로 열린다.
728x90
'C# > C# WPF 개념' 카테고리의 다른 글
[C# WPF] 트리 구조에서 클릭한 최하위 노드의 파일의 경로 가져오기 (0) | 2023.09.15 |
---|---|
[C# WPF] WPF 멀티 쓰레드, BackgroundWorker (0) | 2023.08.17 |
[C# WPF] HelloWorld(XAML기반) -1 (0) | 2023.08.17 |
[C# WPF] 참고 사이트 모음 (0) | 2023.08.17 |
[C# WPF] 바인딩 #04 - 목록 기반의 컨트롤 바인딩 (0) | 2023.08.17 |