Dreamine.UI.Wpf.Controls 1.0.1
Dreamine.UI.Wpf.Controls 사용자 인터페이스 기능과 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow 클래스 참조

더 자세히 ...

Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow에 대한 상속 다이어그램 :
Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow에 대한 협력 다이어그램:

Public 멤버 함수

 DreamineMessageBoxWindow (string title, string message, MessageBoxImage icon, MessageBoxButton buttons, MessageBoxResult autoClickTarget=MessageBoxResult.None, int autoClickDelaySeconds=0, int enableDelaySeconds=0)

Protected 멤버 함수

override void OnClosed (EventArgs e)

속성

MessageBoxResult Result = MessageBoxResult.None [get, private set]

Private 멤버 함수

async Task DisableButtonsAndEnableLaterAsync (int delaySeconds, CancellationToken ct=default)
async Task StartAutoClickAsync (MessageBoxResult target, int delaySeconds, CancellationToken ct=default)
Button? GetTargetButton (MessageBoxResult result)
string GetEmoji (MessageBoxImage icon)
void SetupButtons (MessageBoxButton buttons)
void BtnOk_Click (object sender, RoutedEventArgs e)
void BtnCancel_Click (object sender, RoutedEventArgs e)
void BtnYes_Click (object sender, RoutedEventArgs e)
void BtnNo_Click (object sender, RoutedEventArgs e)

Private 속성

readonly CancellationTokenSource _cts = new()

상세한 설명

여러 버튼 구성, 아이콘, 자동 클릭과 활성화 지연을 지원하는 사용자 지정 메시지 상자 창입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 15 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ DreamineMessageBoxWindow()

Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.DreamineMessageBoxWindow ( string title,
string message,
MessageBoxImage icon,
MessageBoxButton buttons,
MessageBoxResult autoClickTarget = MessageBoxResult::None,
int autoClickDelaySeconds = 0,
int enableDelaySeconds = 0 )
inline

표시 내용과 버튼 동작을 구성하여 메시지 상자 창을 만듭니다.

매개변수
title창 제목입니다.
message표시할 메시지입니다.
icon표시할 아이콘입니다.
buttons표시할 버튼 구성입니다.
autoClickTarget자동 선택할 결과입니다.
autoClickDelaySeconds자동 클릭까지의 초입니다.
enableDelaySeconds버튼 활성화까지의 초입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 101 번째 라인에서 정의되었습니다.

102 {
103 InitializeComponent();
104
105 TxtTitle.Text = title;
106 TxtMessage.Text = message;
107 TxtIcon.Text = GetEmoji(icon);
108
109 // 버튼 구성
110 SetupButtons(buttons);
111
112 if (enableDelaySeconds > 0)
113 _ = DisableButtonsAndEnableLaterAsync(enableDelaySeconds, _cts.Token);
114
115 if (autoClickTarget != MessageBoxResult.None && autoClickDelaySeconds > 0)
116 _ = StartAutoClickAsync(autoClickTarget, autoClickDelaySeconds, _cts.Token);
117 }

다음을 참조함 : _cts, DisableButtonsAndEnableLaterAsync(), GetEmoji(), SetupButtons(), StartAutoClickAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 함수 문서화

◆ BtnCancel_Click()

void Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.BtnCancel_Click ( object sender,
RoutedEventArgs e )
inlineprivate

취소 버튼 클릭을 처리하여 결과를 설정하고 창을 닫습니다.

매개변수
sender이벤트를 발생시킨 버튼입니다.
e라우트 이벤트 데이터입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 445 번째 라인에서 정의되었습니다.

446 {
447 Result = MessageBoxResult.Cancel;
448 Close();
449 }

다음을 참조함 : Result.

다음에 의해서 참조됨 : StartAutoClickAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BtnNo_Click()

void Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.BtnNo_Click ( object sender,
RoutedEventArgs e )
inlineprivate

아니요 버튼 클릭을 처리하여 결과를 설정하고 창을 닫습니다.

매개변수
sender이벤트를 발생시킨 버튼입니다.
e라우트 이벤트 데이터입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 505 번째 라인에서 정의되었습니다.

506 {
507 Result = MessageBoxResult.No;
508 Close();
509 }

다음을 참조함 : Result.

다음에 의해서 참조됨 : StartAutoClickAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BtnOk_Click()

void Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.BtnOk_Click ( object sender,
RoutedEventArgs e )
inlineprivate

확인 버튼 클릭을 처리하여 결과를 설정하고 창을 닫습니다.

매개변수
sender이벤트를 발생시킨 버튼입니다.
e라우트 이벤트 데이터입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 415 번째 라인에서 정의되었습니다.

416 {
417 Result = MessageBoxResult.OK;
418 Close();
419 }

다음을 참조함 : Result.

다음에 의해서 참조됨 : StartAutoClickAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BtnYes_Click()

void Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.BtnYes_Click ( object sender,
RoutedEventArgs e )
inlineprivate

예 버튼 클릭을 처리하여 결과를 설정하고 창을 닫습니다.

매개변수
sender이벤트를 발생시킨 버튼입니다.
e라우트 이벤트 데이터입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 475 번째 라인에서 정의되었습니다.

476 {
477 Result = MessageBoxResult.Yes;
478 Close();
479 }

다음을 참조함 : Result.

다음에 의해서 참조됨 : StartAutoClickAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DisableButtonsAndEnableLaterAsync()

async Task Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.DisableButtonsAndEnableLaterAsync ( int delaySeconds,
CancellationToken ct = default )
inlineprivate

모든 버튼을 일시적으로 비활성화하고 남은 시간을 표시한 뒤 다시 활성화합니다.

매개변수
delaySeconds비활성화할 시간(초)입니다.
ct창 종료 시 작업을 중단할 취소 토큰입니다.
반환값
지연 및 버튼 복원 작업을 나타내는 Task입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 174 번째 라인에서 정의되었습니다.

175 {
176 var buttons = new[] { BtnOk, BtnYes, BtnNo, BtnCancel };
177
178 // 버튼별 원래 텍스트 저장
179 var originalTexts = buttons.ToDictionary(btn => btn, btn => btn.Content?.ToString());
180
181 foreach (var btn in buttons)
182 btn.IsEnabled = false;
183
184 for (int i = delaySeconds; i > 0; i--)
185 {
186 if (ct.IsCancellationRequested) return;
187
188 foreach (var btn in buttons.Where(b => b.Visibility == Visibility.Visible))
189 btn.Content = $"{originalTexts[btn]} ({i})";
190
191 try { await Task.Delay(1000, ct); }
192 catch (OperationCanceledException) { return; }
193 }
194
195 foreach (var btn in buttons)
196 {
197 if (btn.Visibility == Visibility.Visible)
198 {
199 btn.IsEnabled = true;
200 btn.Content = originalTexts[btn];
201 }
202 }
203 }

다음에 의해서 참조됨 : DreamineMessageBoxWindow().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetEmoji()

string Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.GetEmoji ( MessageBoxImage icon)
inlineprivate

메시지 상자 아이콘 형식에 대응하는 이모지를 반환합니다.

매개변수
icon변환할 아이콘 형식입니다.
반환값
대응하는 이모지 문자열입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 331 번째 라인에서 정의되었습니다.

332 {
333 return icon switch
334 {
335 MessageBoxImage.Error => "❌",
336 MessageBoxImage.Warning => "⚠️",
337 MessageBoxImage.Information => "ℹ️",
338 MessageBoxImage.Question => "❓",
339 _ => "🔔"
340 };
341 }

다음에 의해서 참조됨 : DreamineMessageBoxWindow().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetTargetButton()

Button? Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.GetTargetButton ( MessageBoxResult result)
inlineprivate

메시지 상자 결과에 대응하는 실제 버튼 요소를 가져옵니다.

매개변수
result버튼에 매핑할 결과입니다.
반환값
대응하는 버튼이며 없으면 null입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 298 번째 라인에서 정의되었습니다.

298 => result switch
299 {
300 MessageBoxResult.OK => BtnOk,
301 MessageBoxResult.Cancel => BtnCancel,
302 MessageBoxResult.Yes => BtnYes,
303 MessageBoxResult.No => BtnNo,
304 _ => null
305 };

다음에 의해서 참조됨 : StartAutoClickAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnClosed()

override void Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.OnClosed ( EventArgs e)
inlineprotected

창 종료 시 진행 중인 지연 작업을 취소하고 토큰 소스를 해제합니다.

매개변수
e창 종료 이벤트 데이터입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 135 번째 라인에서 정의되었습니다.

136 {
137 _cts.Cancel();
138 _cts.Dispose();
139 base.OnClosed(e);
140 }

다음을 참조함 : _cts.

◆ SetupButtons()

void Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.SetupButtons ( MessageBoxButton buttons)
inlineprivate

지정한 버튼 구성에 따라 각 버튼의 가시성과 초기 포커스를 설정합니다.

매개변수
buttons표시할 버튼 구성입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 359 번째 라인에서 정의되었습니다.

360 {
361 BtnOk.Visibility = Visibility.Collapsed;
362 BtnYes.Visibility = Visibility.Collapsed;
363 BtnNo.Visibility = Visibility.Collapsed;
364 BtnCancel.Visibility = Visibility.Collapsed;
365
366 switch (buttons)
367 {
368 case MessageBoxButton.OK:
369 BtnOk.Focus();
370 BtnOk.Visibility = Visibility.Visible;
371 break;
372 case MessageBoxButton.OKCancel:
373 BtnOk.Focus();
374 BtnOk.Visibility = Visibility.Visible;
375 BtnCancel.Visibility = Visibility.Visible;
376 break;
377 case MessageBoxButton.YesNo:
378 BtnYes.Focus();
379 BtnYes.Visibility = Visibility.Visible;
380 BtnNo.Visibility = Visibility.Visible;
381 break;
382 case MessageBoxButton.YesNoCancel:
383 BtnYes.Focus();
384 BtnYes.Visibility = Visibility.Visible;
385 BtnNo.Visibility = Visibility.Visible;
386 BtnCancel.Visibility = Visibility.Visible;
387 break;
388 }
389 }

다음에 의해서 참조됨 : DreamineMessageBoxWindow().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ StartAutoClickAsync()

async Task Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.StartAutoClickAsync ( MessageBoxResult target,
int delaySeconds,
CancellationToken ct = default )
inlineprivate

대상 버튼에 남은 시간을 표시하고 지연 후 해당 버튼 클릭을 실행합니다.

매개변수
target자동 실행할 버튼 결과입니다.
delaySeconds자동 클릭까지의 시간(초)입니다.
ct창 종료 시 작업을 중단할 취소 토큰입니다.
반환값
카운트다운과 자동 클릭 작업을 나타내는 Task입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 245 번째 라인에서 정의되었습니다.

246 {
247 var button = GetTargetButton(target);
248 if (button == null) return;
249
250 string originalText = button.Content?.ToString() ?? "";
251
252 for (int i = delaySeconds; i > 0; i--)
253 {
254 if (ct.IsCancellationRequested) return;
255
256 button.Content = $"{originalText} ({i})";
257
258 try { await Task.Delay(1000, ct); }
259 catch (OperationCanceledException) { return; }
260 }
261
262 if (ct.IsCancellationRequested) return;
263 button.Content = originalText;
264
265 switch (target)
266 {
267 case MessageBoxResult.OK: BtnOk_Click(null!, null!); break;
268 case MessageBoxResult.Yes: BtnYes_Click(null!, null!); break;
269 case MessageBoxResult.No: BtnNo_Click(null!, null!); break;
270 case MessageBoxResult.Cancel: BtnCancel_Click(null!, null!); break;
271 }
272 }

다음을 참조함 : BtnCancel_Click(), BtnNo_Click(), BtnOk_Click(), BtnYes_Click(), GetTargetButton().

다음에 의해서 참조됨 : DreamineMessageBoxWindow().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _cts

readonly CancellationTokenSource Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow._cts = new()
private

창이 닫힐 때 지연 작업을 취소하는 토큰 소스입니다.

DreamineMessageBoxWindow.xaml.cs 파일의 35 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : DreamineMessageBoxWindow(), OnClosed().

속성 문서화

◆ Result

MessageBoxResult Dreamine.UI.Wpf.Controls.MessageBox.DreamineMessageBoxWindow.Result = MessageBoxResult.None
getprivate set

사용자 또는 자동 클릭이 선택한 결과를 가져옵니다.

DreamineMessageBoxWindow.xaml.cs 파일의 25 번째 라인에서 정의되었습니다.

25{ get; private set; } = MessageBoxResult.None;

다음에 의해서 참조됨 : BtnCancel_Click(), BtnNo_Click(), BtnOk_Click(), BtnYes_Click().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: