目前我在多个位置显示一个消息框,如下所示......
MessageBox.Show($"{CommandHandlerMessage} \n\n" + $"Source process = {sourceProcess}", $"{messageBoxTitlebar}", MessageBoxButton.OK, messageBoxImage);
有没有办法将消息组件分配给像......
这样的字符串string messageBoxMessage = "{CommandHandlerMessage} \n\n"" + $""Source process = {sourceProcess}"", $""{messageBoxTitlebar}"", MessageBoxButton.OK, messageBoxImage"
所以我只需要显示如下字符串(或类似的东西)....
MessageBox.Show($"{messageBoxMessage}");
我在引号上尝试了转义序列,但我无法让它工作。
如果有人发现这有用,我成功实施了Akash KC建议的代码......
Func<string, string, string, MessageBoxButton, MessageBoxImage, MessageBoxResult>
messageBoxFunc = (commandHandlerMessage, sourceProcess, messageBoxTitle, messageBoxButton, messageBoxImage) => MessageBox.Show($"{commandHandlerMessage} \n\n Source process = {sourceProcess}",
$"{messageBoxTitle}",
messageBoxButton,
messageBoxImage);
messageBoxFunc(commandHandlerMessage, sourceProcess, messageBoxTitlebar, messageBoxButton, messageBoxImage);
答案 0 :(得分:2)
使用string interpolation
,您无法实现您的要求,因为字符串插值返回字符串,因为此插值将转换为String.Format
方法,该方法返回string
作为返回类型。
如果您的目的是重复使用,您只需创建一个代表,该代表将根据您的要求显示消息框。
Func<string, string, string, MessageBoxButtons, MessageBoxIcon, DialogResult> messageBoxFunc =
(handlerMessage, sourceProcess, messageBoxTitle, button, icon) =>
MessageBox.Show($"{handlerMessage} \n\n\"Source process = {sourceProcess}\"",
$"{messageBoxTitle}",
button,
icon);
//Calling above delegate
messageBoxFunc("HanldlerTest1",
"sourceprocessTest1",
"Title1",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
正如您在评论中所述,您需要在多个表单中使用,您可以在实用程序类中创建静态委托并静态调用它。
您可以遵循给定的代码方法:
Util.cs
internal static class Util
{
internal static Func<string, string, string, MessageBoxButtons, MessageBoxIcon, DialogResult> MyMessageBoxFunc =
(handlerMessage, sourceProcess, messageBoxTitle, button, icon) =>
MessageBox.Show($"{handlerMessage} \n\n\"Source process = {sourceProcess}\"",
$"{messageBoxTitle}",
button,
icon);
}
现在,您可以在表单中使用上面的静态委托:
Util.MyMessageBoxFunc("HanldlerTest1",
"sourceprocessTest1",
"Title1",
MessageBoxButtons.OK,
MessageBoxIcon.Information);