VS 2012生成的App.exe和App.vshost.exe显示形式不同

时间:2012-08-20 23:26:50

标签: winforms c#-3.0 visual-studio-2012 vshost.exe

我有一个用作数据输入向导的表单。它拥有一系列面板,每个面板都对接以填充显示区域。我使用VS 2010和VS 2012 RC一直在使用显示器一段时间没有问题。

但是,我最近安装了VS 2012 RTM并遇到了这个奇怪的问题:当在IDE中使用F5运行应用程序时,App.vshost.exe显示的表格几个像素太窄而且显示的是向导中的停靠面板。直接运行App.exe(通过IDE中的Ctrl-F5或直接运行.exe)时,表单大小正确。调试和发布配置都会出现同样的问题。

我测试了VS 2010中的代码,并且App.vshost.exe和App.exe都显示相同的特定向导和&页。

我已将其缩小为将对象显示为对话框,其中显示的表单将其FormBorderStyle设置为FixedSingle。例如:

    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SubForm subForm = new SubForm();
            subForm.ShowDialog(this);
        }
    }

    public partial class SubForm : Form
    {
        public SubForm()
        {
            InitializeComponent();
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
        }
    }

在上面的示例中,显示的SubForm的大小取决于您是否正在运行App.vshost.exe或App.exe。 (在我的实际代码中,表单边框样式被设置为基本表单的.Designer.cs文件的一部分。)

有没有人知道为什么编译的App.vshost.exe会以不同的方式显示?更好的是,有没有人知道我如何调整VS 2012,以便我可以信任App.vshost.exe的显示输出?谢谢!

1 个答案:

答案 0 :(得分:0)

因此,事实证明它是/ Visual Studio 2012中的一个错误。建议的解决方法是禁用Visual Studio托管过程。

错误追踪: http://connect.microsoft.com/VisualStudio/feedback/details/759413/winform-dialogs-displayed-differently-by-vshost-exe-and-exe-using-vs-2012-when-formborderstyle-set-in-form-codebehind