上下に固定する UserControl を使用する必要があるように思えます。しかし、フォームを機能させましょう。Load イベントをワイヤリングして、再スケーリング後に適切な場所に移動できるようにする必要があります。次に、メイン フォームの LocationChanged イベントと Resize イベントが必要です。これにより、子フォームを適切な場所に保持できます。
したがって、定型的な Form1 と Form2 の名前と、子を表示する Form1 のボタンを含むサンプル プログラムは、次のようになります。
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
this.button1.Click += button1_Click;
this.Resize += this.Form1_Resize;
this.LocationChanged += this.Form1_LocationChanged;
}
Form child;
private void button1_Click(object sender, EventArgs e) {
if (child != null) return;
child = new Form2();
child.FormClosed += child_FormClosed;
child.Load += child_Load;
child.Show(this);
}
void child_FormClosed(object sender, FormClosedEventArgs e) {
child.FormClosed -= child_FormClosed;
child.Load -= child_Load;
child = null;
}
void child_Load(object sender, EventArgs e) {
moveChild();
}
void moveChild() {
child.Location = this.PointToScreen(new Point(this.ClientSize.Width - child.Width, 0));
}
private void Form1_Resize(object sender, EventArgs e) {
if (child != null) moveChild();
}
private void Form1_LocationChanged(object sender, EventArgs e) {
if (child != null) moveChild();
}
}