Rectangle
は構造体で値渡しなので、MaximizedBounds
プロパティで取得した値
に変更を加えても元のRectangleオブジェクトに反映されないため、エラーになるのだと思います。
「事情」が判らないとアドバイスしづらいのですが、LocationとSizeが片方ずつしか設定できないということでしょうか。
その場合は、以下のようにすれば片方ずつ設定できます。
C#
1// Locationだけ変更したい場合
2this.MaximizedBounds = new Rectangle(new Point(15, 10), this.MaximizedBounds.Size);
3
4// Sizeだけ変更したい場合
5this.MaximizedBounds = new Rectangle(this.MaximizedBounds.Location, new Size(1500, 1000));
追記
下記コードで最大化時の位置とサイズの指定ができます。
using System.Runtime.InteropServices;
:
:
:
private struct POINT
{
public int x;
public int y;
}
private struct MINMAXINFO
{
public POINT ptReserved;
public POINT ptMaxSize; // 最大化フォームのサイズ
public POINT ptMaxPosition; // 最大化フォームの位置
public POINT ptMinTrackSize; // フォームの最大サイズ
public POINT ptMaxTrackSize; // フォームの最小サイズ
}
private const int WM_GETMINMAXINFO = 0x0024;
protected override void WndProc(ref Message m)
{
if(m.Msg == WM_GETMINMAXINFO)
{
MINMAXINFO info = (MINMAXINFO)m.GetLParam(typeof(MINMAXINFO));
info.ptMaxPosition.x = 15;
info.ptMaxPosition.y = 10;
info.ptMaxSize.x = 1500;
info.ptMaxSize.y = 1000;
Marshal.StructureToPtr(info, m.LParam, true);
return;
}
base.WndProc(ref m);
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/11 10:12
2016/04/12 02:30