4

通常のフォームの境界線の太さに関するドキュメントはありますか?

目標:
幅 800px の userControl を作成しました。フル解像度 (800px - すべてが表示される) で新しいインスタンスを使用してポップアップ (通常は通常の形式) を作成したいと考えています。

私の問題: フォームを設定しForm.Size.Width = 800ないでください。フォームの width-property にフォームの境界線が含まれているようです。その境界線を引く必要があります。

私は次のようになります: 2px + 800px + 2px

いくつかのコードを見たい場合は教えてください。しかし、ここでは不要だと思います。

編集

ここに画像の説明を入力

コントロールをポップアップした後:

ここに画像の説明を入力

ポップアップのコード:

private void buttonPopup_Click(object sender, EventArgs e)
{
    Form MyPopup = new Form();
    customControl MyUserControl = new customControl();

    MyUserControl.Dock = DockStyle.Fill;

    Rectangle rc = MyUserControl.RectangleToScreen(MyUserControl.ClientRectangle);

    //int thickness = SystemInformation.Border3DSize.Width;
    //MyPopup.MaximumSize = new Size(MyUserControl.Size.Width + (thickness*2), 1500);

    MyPopup.Controls.Add(MyUserControl);
    MyPopup.MaximumSize = new Size(rc.Width, rc.Height);
    MyPopup.Show();
}

あなたのコードは私には論理的に見えるということです。しかし、それでも結果は同じです。はuserControl少し小さく表示されます。dock = fillボタンがレイアウト内に専門的に配置されていない場所を使用したことは知っています。しかし、これとは別に、正しいサイズを設定するための解決策が必要です。

4

1 に答える 1

4

探しているようです

int thickness = SystemInformation.Border3DSize;

別の (そして、INHO、より良いもの) 可能ClientRectangle性は、コントロールを使用することです。例えば:

// Client rectangle in screen coordinates
Rectangle rc = MyControl.RectangleToScreen(MyControl.ClientRectangle);

// Let's align context menu (its width) to bottom of the control
MyContextMenuStrip.AutoSize = false;
// Depending on actual dropdown control you may want align either via
//   Width = rc.Width;
// Or 
//   ClientSize = new Size(rc.Width, someHeight);
MyContextMenuStrip.Width = rc.Width;

// Let's show context menu at the bottom of the control
MyContextMenuStrip.Show(new Point(rc.Left, rc.Bottom));
于 2015-08-20T08:08:45.323 に答える