问题描述
将 MessageBox.Show 与按钮和长输入消息一起使用将导致按钮实际上无法访问,因为它们处于屏幕外。默认消息框无法调整大小或向下滚动,这意味着当发生这种情况时,没有真正的方法可以点击消息框中的“是”按钮。有没有办法确保按钮可访问?是否通过使 MessageBox 可调整大小、可滚动、根据屏幕大小截断消息等方式?
现在的临时解决方法是手动将消息截断为任意 40 行(这种情况不经常发生),但滚动条等肯定会更简洁。
我的代码在 720p 显示器上使用大约 50 行文本时会中断(不知道为什么还有人会有 720p 显示器......)
DialogResult dr = MessageBox.Show(this,message,"Please confirm",MessageBoxButtons.YesNoCancel,MessageBoxIcon.information);
if (dr == DialogResult.No || dr == DialogResult.Cancel)
return ResponseStatus.Fail;
return ResponseStatus.Success;
我截断消息的hacky解决方案
var lines = message.Split(new[] { "\r\n","\r","\n" },StringSplitOptions.None).ToList();
if (lines.Count() > 40)
{
//try removing blank line formatting
lines = message.Split(new[] { "\r\n",StringSplitOptions.RemoveEmptyEntries).ToList();
if (lines.Count() > 40)
{
var count = lines.Count();
lines = lines.GetRange(0,40);
lines.Add($"Prompt too long,{count - 40} lines have been removed. The rest will be logged.");
logger.Info("Extra prompt lines: ");
foreach (var line in lines.Skip(40))
logger.Info(line);
}
message = string.Join(Environment.NewLine,lines);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)