我有一个简单的WinForm,其唯一的功能是显示传递给它的消息。消息作为字符串传递并显示在文本框中。它设置为FixedToolWindow(无论我如何设置它,我最终得到相同的行为)。
通过以下方式调用表单:
PswCoordFailDisplay coord1 = new PswCoordFailDisplay(inputString);
coord1.Show();
这是两个截图:顶部是设计师;底部是如何实际绘制的。
这是一个相当复杂的应用程序的一部分,其中包含大约10个其他WinForms。他们都表现得像他们应该的那样,除了这个。
设计的变化是:
ScrollBars
设置为Both
)ControlBox
转为False
时,无论如何都会出现X-close,并采用与底部示例相同的形式我几乎采用WinForm在创建WinForm时提供的所有默认值,除了一些不应该产生这种差异的项目。
究竟发生了什么?我的意思是,它仍然可以工作,但它不是设计所称的!
答案 0 :(得分:1)
如果您密切关注问题中显示的图片截图,您会注意到底部显示的是 MessageBox ,而不是预期的WinForm。正如评论员T McKeown和Grant Winney指出的那样,除非表格以这种方式编码,否则表格中的元素无法远离轨道。由于它没有以这种方式编码,因此不会调用预期的形式。当然,有一种非常肤浅的相似之处,这引起了我的困惑。
如果我已经展示了完整的呼叫代码,那么很快就能看到这一点:
switch (opRes.OpResult)
{
case OperationResult.Result.Succeeded :
MessageBox.Show("Password coordination succeeded.");
LoadUser();
break;
case OperationResult.Result.PartialSuccess :
MessageBox.Show(String.Format("Password coordination partially succeeded: {0}{1}", Environment.NewLine, opRes.Notation));
LoadUser();
break;
default :
MessageBox.Show("Password coordination failed.");
PswCoordFailDisplay coord1 = new PswCoordFailDisplay(opRes.Notation);
coord1.Show();
break;
}
正如您可以清楚地看到的那样,取得了部分成功"控制权将传递到case
语句中的第二个switch
,而不是default
。第二个case
应该用新的WinForm编码,但我忘记了!所以你看到了问题:
在发布STACKOVERFLOW问题之前阅读您的远程代码!
这种方式不那么尴尬。
ETA:另外,如果我在我的问题中发布了上述代码,就像@Rockster建议的那样,有人会立即注意到它,也许会节省一两步。