winforms 根据表单1移动表单2

kxxlusnw  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(149)

我的问题是:
我希望Form 2只在移动Form 1时移动,并且它始终位于Form1的下方。
我试了所有我能想到的方法:定位点和设置桌面位置,我尝试了一个实时移动的计时器,我只是不能得到它,这应该不是那么困难:(

我正在使用面板移动表单1

private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            mov = 1;
            movX = e.X;
            movY = e.Y;
        }

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (mov == 1)
            {
                this.SetDesktopLocation(MousePosition.X - movX, MousePosition.Y - movY);
            }
        }

        private void panel1_MouseUp(object sender, MouseEventArgs e)
        {
            mov = 0;

        }

我还尝试制作一个窗体,并在其中放置面板,使窗体透明,但当我试图通过面板移动窗体时,我遇到了一个问题。

0wi1tuuw

0wi1tuuw1#

我找到了解决办法:
Move Form1 when I move Form2 in C#
第一种形式:

protected override void OnLocationChanged(EventArgs e)
        {
            if (secondForm == null)
            {
                secondForm = new SecondForm();

            }
            if (secondForm.wasShown == true)
            {
                secondForm.Location = new Point(this.Left - parentOffset.X,
                                                this.Top - parentOffset.Y);
            }
            base.OnLocationChanged(e);
        }

在第二种形式中:

public  bool wasShown = false;

 private void SecondForm_Load(object sender, EventArgs e)
        {

            this.StartPosition = FormStartPosition.Manual;
            Location = new Point(topForm.lX -40, topForm.lY +85);
            wasShown = true;
            this.Owner = topForm;

        }

相关问题