300x250
Devexpress에서 기본 제공하는 버튼은 기본 영어로 나온다.
버튼의 글자를 변경하기 위해 직접 접근할 수는 없지만
XtraMessageBoxArgs를 매개변수로 하는 show 함수를 이용해
showing 이벤트에서 버튼의 텍스트를 바꿔치기 할 수 있다.
다국어를 위한 리소스 등을 이용해서 적용할 수도 있다.
public static class CustomXtraMessageBox
{
static XtraMessageBoxArgs getArgs(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
{
XtraMessageBoxArgs args = new XtraMessageBoxArgs();
args.Showing += Args_Showing;
args.Caption = caption;
args.Text = text;
args.Icon = _getIcon(icon);
args.Buttons = buttons switch
{
MessageBoxButtons.OK => new DialogResult[] { DialogResult.OK },
MessageBoxButtons.YesNo => new DialogResult[] { DialogResult.Yes, DialogResult.No },
MessageBoxButtons.YesNoCancel => new DialogResult[] { DialogResult.Yes, DialogResult.No, DialogResult.Cancel },
_ => new DialogResult[] { DialogResult.OK } // default case
};
void Args_Showing(object sender, XtraMessageShowingArgs e)
{
bool _hasDR(DialogResult dr) => e.Buttons[dr] is not null;
void _setBtnText(DialogResult dr, string text)
{
if (_hasDR(dr))
e.Buttons[dr].Text = text;
}
//원하는 버튼의 텍스트를 설정하거나 다국어 처리한다.
_setBtnText(DialogResult.OK, "확인");
_setBtnText(DialogResult.Cancel, "취소");
_setBtnText(DialogResult.Yes, "예");
_setBtnText(DialogResult.No, "아니오");
}
return args;
}
// Method to convert MessageBoxIcon to System.Drawing.Icon
private static Icon _getIcon(MessageBoxIcon messageBoxIcon)
{
switch (messageBoxIcon)
{
case MessageBoxIcon.Information:
//case MessageBoxIcon.Asterisk: // Both have the same value (64)
return SystemIcons.Information;
case MessageBoxIcon.Warning:
//case MessageBoxIcon.Exclamation:// Both have the same value (48)
return SystemIcons.Warning;
case MessageBoxIcon.Error:
return SystemIcons.Error;
case MessageBoxIcon.Question:
return SystemIcons.Question;
default:
return SystemIcons.Information; // Default to Information icon
}
}
public static DialogResult ShowCustom(string text, string caption = null)
{
//버튼은 ok하나, 아이콘은 에러를 사용한다고 가정.
var args = getArgs(text, caption, MessageBoxButtons.OK, MessageBoxIcon.Error);
return XtraMessageBox.Show(args);
}
}
반응형
'공부 > Devexpress' 카테고리의 다른 글
[Devexpress Winform] 스프레드 시트 컨트롤 셀 대상 바꾸기 메세지박스 가로채기 (0) | 2025.01.06 |
---|---|
[Devexpress Winform] GridView 에서 ValidatingEditor 이벤트때 변경 전 데이터 가져오기 (0) | 2025.01.05 |