3

Windows フォームでコントロールのサイズをデフォルトにリセットするにはどうすればよいですか?

サイズを(-1、-1)に設定しようとしましたが、高さはデフォルトに設定されていましたが、うまくいきませんでした。

4

2 に答える 2

4

リフレクションを使用してDefaultSize、コントロールのプロパティを取得できます。

Size GetDefaultSize(Control ctrl)
{
    PropertyInfo pi = ctrl.GetType().GetProperty("DefaultSize", BindingFlags.NonPublic | BindingFlags.Instance);
    return (Size)pi.GetValue(ctrl, null);
}

myCtrl.Size = GetDefaultSize(myCtrl);

MSDN :

DefaultSize プロパティは、最初に作成されたときのコントロールのサイズを表します。

于 2012-11-28T16:00:21.973 に答える
0

私はフォローコードを修正し、今働いています。

public struct myControl
{
    public string name;
    public Size size;
}

List<myControl> lstControlSize = new List<myControl>();
myControl defControl = new myControl();

public Form1()
{
    InitializeComponent();
    SaveAllControls();
}

public void SaveAllControls()
{
    foreach (Control defaultControl in this.Controls)
    {
        if (defaultControl != null)
        {
            defControl.name = defaultControl.Name;
            defControl.size = defaultControl.Size;
            this.lstControlSize.Add(defControl);
        }
    }
}

public void ResetSizeAllControls()
{
    foreach (myControl defaultControl in this.lstControlSize)
    {
        foreach (Control resizeControl in this.Controls)
        {
            if (resizeControl != null)
            {
                if (resizeControl.Name == defaultControl.name)
                {
                    resizeControl.Size = defaultControl.size;
                    break;
                }
            }
        }
    }
}
于 2012-11-28T16:35:08.313 に答える