0

カスタム DesignSurface にコントロールを配置すると、「境界線のサイズ変更」が描画されます。これは VS Designer でよく知られている標準の境界線で、コントロールのサイズを変更するための 8 つの「アンカー」が点在しています。プログラムでコントロールのサイズまたは位置を変更すると、この境界線はこの変更自体を適用しません。再描画を強制するには、マウスでこのコントロールを選択解除してから選択する必要があります。

私の質問は次のとおりです。コードからこの境界線にアクセスし、プログラムで強制的に再描画するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

0

例:変更されたコントロールの場所

これが好きではありません:

Control control = new Control();
control.Location=new Point(10,10);

これを試して:

Control control = new Control();
PropertyDescriptor propertyDescriptor = TypeDescriptor.GetProperties(control)["Location"];
if (propertyDescriptor != null)
{
  Point point = (Point)propertyDescriptor.GetValue(control);
  point.Offset(5, 5);
  propertyDescriptor.SetValue(control, point);
}

PropertyDescriptorのメソッド"SetValue"は、デザイナーの再描画を通知する"ComponentChanged"イベントを発生させることができます。

于 2012-07-03T10:00:43.077 に答える