1

データ入力ウィザードとして使用されているフォームがあります。一連のパネルをホストし、各パネルがドッキングして表示領域を埋めます。私は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;
        }
    }

上記の例では、App.vshost.exe を実行しているか、App.exe を実行しているかによって、表示されるサブフォームのサイズが異なります。(私の実際のコードでは、フォームの境界線のスタイルは、基本フォームの .Designer.cs ファイルの一部として設定されています。)

コンパイルされた App.vshost.exe の表示が異なる理由を知っている人はいますか? さらに良いことに、App.vshost.exe による表示出力を信頼できるように VS 2012 を微調整する方法を知っている人はいますか? ありがとう!

4

1 に答える 1

0

So, it turn it is/was a bug in 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

于 2012-11-21T15:32:48.287 に答える