Windows フォームでコントロールのサイズをデフォルトにリセットするにはどうすればよいですか?
サイズを(-1、-1)に設定しようとしましたが、高さはデフォルトに設定されていましたが、うまくいきませんでした。
リフレクションを使用して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 プロパティは、最初に作成されたときのコントロールのサイズを表します。
私はフォローコードを修正し、今働いています。
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;
}
}
}
}
}