【发布时间】:2017-11-14 22:45:44
【问题描述】:
这很奇怪。我移植了一个在 VS2008 下运行良好的项目,但是当我使用 VS2017 构建它时,一行的存在导致我的对话框调整大小 - 代码甚至不需要运行,它只需要出现在一个子例程中跑步! 我创建了最简单的程序版本来展示这种行为。尝试在不同版本的 Visual Studio 下构建/运行。 我很想解释为什么会发生这种情况以及如何解决它。谢谢。
using System;
using System.IO;
using System.Windows.Forms;
using System.Windows.Media.Imaging; // Need reference to PresentationCore
namespace Test2017
{
public class MainDlg : Form
{
[STAThread]
static void Main() { Application.Run(new MainDlg()); }
public MainDlg()
{
SuspendLayout();
var button = new Button { Location = new System.Drawing.Point(7, 56), Size = new System.Drawing.Size(263, 23), Text = "Note size before and after clicking" };
button.Click += Button_Click;
ClientSize = new System.Drawing.Size(282, 253);
Controls.Add(button);
ResumeLayout(false);
PerformLayout();
}
private void Button_Click(object sender, EventArgs e)
{
if (DateTime.Today.Year != 1234) return; // This will always return
try
{
// The following is never executed - but its very presence causes the dialog to shrink when running under VS2017
BitmapFrame.Create((FileStream)null); // Was using this to get metadata - that part works ok
MessageBox.Show("Success");
}
catch { MessageBox.Show("Exception"); }
}
}
}
【问题讨论】:
-
在 2012 年和 2017 年运行此代码,在任何一个版本中,表单都不会像您说的那样“调整大小”。
-
抱歉,看起来这种情况并非在所有机器上都会发生,但在发生这种情况的机器上却非常一致。我会看看 Hans Passant 的提示是否能解决这个问题......
标签: c# visual-studio