Windows Form 경고 메시지 상자 의 인 스 턴 스 코드 구현
10652 단어 WindowsForm이루어지다경고 메시지 상자
경고 상자 창 만 들 기
우선 경고 상자 창(Form)을 만 듭 니 다.창 을 경계선 없 음(FormBoderStyle=None)으로 설정 하고 그림 과 내용 표시 컨트롤 을 추가 합 니 다.
경고 상 자 를 만 든 후 창 오른쪽 아래 에 표시 할 수 있 도록 합 니 다.
public partial class AlertMessageForm : Form
{
public AlertMessageForm()
{
InitializeComponent();
}
private int x, y;
public void Show(string message)
{
this.StartPosition = FormStartPosition.Manual;
this.x = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
this.y = Screen.PrimaryScreen.WorkingArea.Height - this.Height;
this.Location = new Point(x, y);
labelContent.Text = message;
this.Show();
}
}
경고 상자 애니메이션 표시 및 닫 기시계 로 창 배경 점 입 과 페이드아웃 을 제어 하 는 타 이 머 를 추가 합 니 다.
// ( , , )
public enum AlertFormAction
{
Start,
Wait,
Close
}
public partial class AlertMessageForm : Form
{
public AlertMessageForm()
{
InitializeComponent();
}
private int x, y;
private AlertFormAction action;
private void timer1_Tick(object sender, EventArgs e)
{
switch (action)
{
case AlertFormAction.Start:
timer1.Interval = 50;//
this.Opacity += 0.1;
if (this.Opacity == 1.0)
{
action = AlertFormAction.Wait;
}
break;
case AlertFormAction.Wait:
timer1.Interval = 3000;//
action = AlertFormAction.Close;
break;
case AlertFormAction.Close:
timer1.Interval = 50;//
this.Opacity -= 0.1;
if (this.Opacity == 0.0)
{
this.Close();
}
break;
default:
break;
}
}
public void Show(string message)
{
//
this.StartPosition = FormStartPosition.Manual;
this.x = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
this.y = Screen.PrimaryScreen.WorkingArea.Height - this.Height;
this.Location = new Point(x, y);
labelContent.Text = message;
this.Opacity = 0.0;
this.Show();
action = AlertFormAction.Start;
//
timer1.Start();
}
}
다양한 종류의 경고 상자 처리
경고 상자 에 다양한 종류의 메 시 지 를 표시 할 수 있 도록 AlertType 매 거 진 을 추가 합 니 다.메시지 형식 에 따라 메시지 테마 색상 을 바 꾸 고 경고 상자 형식 파 라미 터 를 추가 하지 않 았 습 니 다.
public enum AlertType
{
Info,
Success,
Warning,
Error
}
//
private void SetAlertTheme(AlertType type)
{
switch (type)
{
case AlertType.Info:
this.pictureBox1.Image = Properties.Resources.info;
this.BackColor = Color.RoyalBlue;
break;
case AlertType.Success:
this.pictureBox1.Image = Properties.Resources.success;
this.BackColor = Color.SeaGreen;
break;
case AlertType.Warning:
this.pictureBox1.Image = Properties.Resources.warning;
this.BackColor = Color.DarkOrange;
break;
case AlertType.Error:
this.pictureBox1.Image = Properties.Resources.error;
this.BackColor = Color.DarkRed;
break;
default:
break;
}
}
//
public void Show(string message, AlertType type){
// ...
SetAlertTheme(type);
}
여러 경고 상자 중첩 문제 처리
물론 위의 처 리 를 완성 하 는 것 은 부족 합 니 다.여러 메시지 가 있 을 때 메시지 상자 가 겹 칩 니 다.여러 메시지 가 있 을 때 메시지 창 을 일정한 규칙 에 따라 배열 해 야 합 니 다.여기 서 모든 메시지 창 간격 을 설정 합 니 다.
public void Show(string message, AlertType type)
{
//
this.StartPosition = FormStartPosition.Manual;
// , 10 ,
string fname;
for (int i = 1; i < 10; i++)
{
fname = "alert" + i.ToString();
AlertMessageForm alert = (AlertMessageForm)Application.OpenForms[fname];
if (alert == null)
{
this.Name = fname;
this.x = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
this.y = Screen.PrimaryScreen.WorkingArea.Height - this.Height * i - 5 * i;
this.Location = new Point(x, y);
break;
}
}
labelContent.Text = message;
this.Opacity = 0.0;
SetAlertTheme(type);
this.Show();
action = AlertFormAction.Start;
//
timer1.Start();
}
마우스 서 스 펜 션 경고 상자 처리경고 상자 가 오래 머 무 르 려 면 경고 상자 가 오래 머 무 르 는 것 을 직접 설정 하 는 것 이 고,다른 방법 은 경고 상자 창 에 마우스 가 서 스 펜 션 되 어 있 는 지 여 부 를 판단 하 는 것 이기 때문에 마우스 의 서 스 펜 션 과 이 벤트 를 통 해 처리 할 수 있 습 니 다.
private void AlertMessageForm_MouseMove(object sender, MouseEventArgs e)
{
this.Opacity = 1.0;
timer1.Interval = int.MaxValue;//
action = AlertFormAction.Close;
}
private void AlertMessageForm_MouseLeave(object sender, EventArgs e)
{
this.Opacity = 1.0;
timer1.Interval = 3000;//
action = AlertFormAction.Close;
}
경고 상자 의 전체 코드
public enum AlertType
{
Info,
Success,
Warning,
Error
}
public enum AlertFormAction
{
Start,
Wait,
Close
}
public partial class AlertMessageForm : Form
{
public AlertMessageForm()
{
InitializeComponent();
}
private int x, y;
private AlertFormAction action;
private void timer1_Tick(object sender, EventArgs e)
{
switch (action)
{
case AlertFormAction.Start:
timer1.Interval = 50;//
this.Opacity += 0.1;
if (this.Opacity == 1.0)
{
action = AlertFormAction.Wait;
}
break;
case AlertFormAction.Wait:
timer1.Interval = 3000;//
action = AlertFormAction.Close;
break;
case AlertFormAction.Close:
timer1.Interval = 50;//
this.Opacity -= 0.1;
if (this.Opacity == 0.0)
{
this.Close();
}
break;
default:
break;
}
}
public void Show(string message, AlertType type)
{
//
this.StartPosition = FormStartPosition.Manual;
// , 10 ,
string fname;
for (int i = 1; i < 10; i++)
{
fname = "alert" + i.ToString();
AlertMessageForm alert = (AlertMessageForm)Application.OpenForms[fname];
if (alert == null)
{
this.Name = fname;
this.x = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
this.y = Screen.PrimaryScreen.WorkingArea.Height - this.Height * i - 5 * i;
this.Location = new Point(x, y);
break;
}
}
labelContent.Text = message;
this.Opacity = 0.0;
SetAlertTheme(type);
this.Show();
action = AlertFormAction.Start;
//
timer1.Start();
}
private void AlertMessageForm_MouseMove(object sender, MouseEventArgs e)
{
this.Opacity = 1.0;
timer1.Interval = int.MaxValue;//
action = AlertFormAction.Close;
}
private void AlertMessageForm_MouseLeave(object sender, EventArgs e)
{
this.Opacity = 1.0;
timer1.Interval = 3000;//
action = AlertFormAction.Close;
}
private void buttonClose_Click(object sender, EventArgs e)
{
//
this.MouseLeave-= new System.EventHandler(this.AlertMessageForm_MouseLeave);
this.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.AlertMessageForm_MouseMove);
timer1.Interval = 50;//
this.Opacity -= 0.1;
if (this.Opacity == 0.0)
{
this.Close();
}
}
//
private void SetAlertTheme(AlertType type)
{
switch (type)
{
case AlertType.Info:
this.pictureBox1.Image = Properties.Resources.info;
this.BackColor = Color.RoyalBlue;
break;
case AlertType.Success:
this.pictureBox1.Image = Properties.Resources.success;
this.BackColor = Color.SeaGreen;
break;
case AlertType.Warning:
this.pictureBox1.Image = Properties.Resources.warning;
this.BackColor = Color.DarkOrange;
break;
case AlertType.Error:
this.pictureBox1.Image = Properties.Resources.error;
this.BackColor = Color.DarkRed;
break;
default:
break;
}
}
}
이상 은 윈도 우즈 Form 경고 메시지 상자 의 인 스 턴 스 코드 에 대한 상세 한 내용 입 니 다.윈도 우즈 Form 경고 메시지 상자 에 대한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Windows Forms 앱 인증에 Cognito를 사용해 보았습니다.Cognito에서 준비한 계정으로 Windows Form 앱에 로그인합니다. 로그인을 통과하면 Cognito에서 AWS 계정(S3 참조 권한 포함)을 받습니다. S3 버킷 목록을 표시합니다. 일련의 인증을 할 수 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.