1

新しいフォームウィンドウをポップアップするメインフォームウィンドウがあります。ポップアップフォームの場所をロックして、ウィンドウを移動できず、メインフォームと同時に移動できるようにします。(したがって、ユーザーがメインフォームをドラッグすると、ポップアップも一緒に移動します)

サイトで検索を行い、一部の人は次のように検索しました。

this.FormBorderStyle=System.Windows.Forms.FormBorderStyle.None

Locked属性をTrueに設定していますが、機能しません。

しかし、私は国境を守りたいです。フォームをロックする適切な方法は何ですか?

4

2 に答える 2

1

あなたはこのようなことをすることができます(ここから取られます):

protected override void WndProc(ref Message message)
{
    const int WM_SYSCOMMAND = 0x0112;
    const int SC_MOVE = 0xF010;

    switch(message.Msg)
    {
        case WM_SYSCOMMAND:
           int command = message.WParam.ToInt32() & 0xfff0;
           if (command == SC_MOVE)
              return;
           break;
    }

    base.WndProc(ref message);
}
于 2013-01-14T22:50:04.240 に答える
1
public class Form1
{
    private Form2 Form2 = new Form2();
    private Point form2Location;
    private Point form1Location;
    private void Button1_Click(System.Object sender, System.EventArgs e)
    {
        form1Location = this.Location;
        Form2.Show();
        form2Location = Form2.Location;
    }

    private void Form1_Move(System.Object sender, System.EventArgs e)
    {
        Form2.IsMoving = true;
        Point form2OffSetLocation = new Point(this.Location.X - form2Location.X, this.Location.Y - form2Location.Y);
        Form2.Location = form2OffSetLocation;
        Form2.IsMoving = false;
    }
}    

public class Form2
{

    public bool IsMoving;
    private void Form2_Move(System.Object sender, System.EventArgs e)
    {
        if (IsMoving) return; 
        if (staticLocation.X != 0 & staticLocation.Y != 0) this.Location = staticLocation; 
    }

    private Point staticLocation;
    private void Form2_Load(System.Object sender, System.EventArgs e)
    {
        staticLocation = this.Location;
    }
}

私はこれについてハンスに同意します、そしてあなたがそれがどれほど危険に見えるかを見たらあなたもおそらく同意するだろうと思います。

于 2013-01-14T23:30:33.627 に答える