반응형
안녕하세요.
오늘은 C# Form에서 유용하게 사용할 수 있는 Auto Closing Message Box에 대해서 설명하려고 합니다.
먼저 C#에서 자주 사용하시는 메시지 박스는 다음과같은 간단한 코드를 통해서 띄울수가있습니다.
MessageBox.Show("안녕하세요. C# 메시지 박스 예제 입니다.");
결과화면은 이렇게 나오게 되겠네요!
만약 이렇게 줄바꿈(\n)을 하고싶은데 안되신다면? 당연한겁니다. 메시지박스에서는 (\r)을 쓰셔야 개행이 가능합니다! 참고하세요
이제 자동으로 종료되는 메시지박스를 만들어보고싶은데요! 직접 Thread를 써서 UI Control을 해도 괜찮지만 귀찮으니까!
아래 코드를 그대로 클래스로 만드셔서 객체로 불러주시면 됩니다! 간단하죠?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace KanColle
{
class AutoClosingMessageBox
{
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
System.Threading.Timer _timeoutTimer; //쓰레드 타이머
string _caption;
const int WM_CLOSE = 0x0010; //close 명령
AutoClosingMessageBox(string text, string caption, int timeout)
{
_caption = caption;
_timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
null, timeout, System.Threading.Timeout.Infinite);
MessageBox.Show(text, caption);
}
//생성자 함수
public static void Show(string text, string caption, int timeout)
{
new AutoClosingMessageBox(text, caption, timeout);
}
//시간이 다되면 close 메세지를 보냄
void OnTimerElapsed(object state)
{
IntPtr mbWnd = FindWindow(null, _caption);
if (mbWnd != IntPtr.Zero)
SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
_timeoutTimer.Dispose();
}
}
}
이 코드를 그대로~~~~~~가져다가 클래스화 시키셔서 객체처럼 사용하시면 됩니다!
매개변수는 순서대로 (내용,타이틀,종료시간) 입니다!
사용 예는 밑에 코드를 참고하시면 됩니다!
AutoClosingMessageBox.Show("로그인 실패!", "알림", 300);
로그인 실패라는 메시지를 띄우고 타이틀은 알림, 300ms 후에 종료되도록 설정하였는데요!
아주 간단한 구조로 선언할 수 있죠?
오늘은 메시지박스와 자동으로 종료되는 메시지박스에 대해 설명해봤습니다. 감사합니다.
반응형
'개발 > C#' 카테고리의 다른 글
Network Check - HttpWebRequest, HttpWebResponse 이용 (0) | 2021.06.09 |
---|---|
C# 키보드 후킹 시 Function Key 인식 못하는 문제 (1) | 2019.11.10 |
C# 싱글톤 클래스 이용하기(singleton class,singleton pattern) (0) | 2016.12.11 |
C#-Oxyplot 연동하기!(1/2) (0) | 2016.11.14 |
C# MySQL 손쉽게 연동하기 (4) | 2016.11.14 |