C#中,怎样在移动一个窗体时另一个窗体也跟着同时移动?

糖果茜茜 2013-07-15 03:55:52
请求大侠:C#中,怎样在移动一个窗体时另一个窗体也跟着同时移动?
...全文
968 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztszhq 2013-07-16
  • 打赏
  • 举报
回复


我给你代码没有问题,我移动form1 form2随动

你的代码贴上来吧
糖果茜茜 2013-07-16
  • 打赏
  • 举报
回复
引用 11 楼 u011096386 的回复:
[quote=引用 6 楼 bingzhu1989 的回复:] 回复: 我的是这样一个情况:双击弹出一个窗体,剧中显示,里面有一个按钮是弹出另一个窗体,两个窗体都弹出时,移动第一个窗体,第二个窗体也随之移动。求大侠?
现在是有三个窗体?你到底要移动哪个动哪个[/quote]不好意思,也许是我描述的不清楚,是这样的,在一个界面上双击SHow弹出一个窗体标示为Form1,剧中显示,Form1里面有一个按钮是show弹出另一个窗体标示为Form2,两个窗体都弹出时,移动第一个窗体Form1,第二个窗体Form2也随之移动...
ztszhq 2013-07-16
  • 打赏
  • 举报
回复
引用 6 楼 bingzhu1989 的回复:
回复: 我的是这样一个情况:双击弹出一个窗体,剧中显示,里面有一个按钮是弹出另一个窗体,两个窗体都弹出时,移动第一个窗体,第二个窗体也随之移动。求大侠?
现在是有三个窗体?你到底要移动哪个动哪个
fdjkalfjklajdf 2013-07-16
  • 打赏
  • 举报
回复
你的第一个窗口是原始窗口还是,弹出窗口?如果是原始窗口上面代码是可以的。如果要移动弹出窗口,稍微修改下上面代码:

namespace 移动窗体
{
    public partial class Form1 : Form
    {
        private Form f;
        int initx = 0;//初始left距离
        int inity = 0;//初始top距离
        int initx1 = 0;//初始left距离
        int inity1 = 0;//初始top距离
        public Form1()
        {
            InitializeComponent();
        }

        private void btnShowDialog_Click(object sender, EventArgs e)
        {
            f=new Form();
            f.Show();
            f.Move += f_Move;

            initx = this.Left;
            inity = this.Top;
            initx1 = f.Left;
            inity1 = f.Top;
        }

        private void f_Move(object sender, EventArgs e)
        {
            this.Top += f.Top - inity1;
            this.Left += f.Left - initx1;
            inity1 = f.Top;
            initx1 = f.Left;

        }
    }
}
糖果茜茜 2013-07-16
  • 打赏
  • 举报
回复
引用 8 楼 u011096386 的回复:

public partial class Form1 : Form
    {
        Form2 f = null;
        int initx = 0;//初始left距离
        int inity = 0;//初始top距离
        int initx1 = 0;//初始left距离
        int inity1 = 0;//初始top距离
        public Form1()
        {
            InitializeComponent();
           
       }

        private void button1_Click(object sender, EventArgs e)
        {
            f = new Form2();
            f.Show();
            initx = this.Left;
            inity = this.Top;
            initx1 = f.Left;
            inity1 = f.Top;
        }

        private void Form1_Move(object sender, EventArgs e)
        {
            if (f != null)
            {
                f.Top = initx1 + (this.Top - inity);
                f.Left = inity1 + (this.Left - initx);
            }
        }

       
    }
我试了一下你的方案,还是不行, initx = this.Left; inity = this.Top; initx1 = f.Left; inity1 = f.Top; 到Form1_Move事件时,这几个值都是0,移动第一个窗体,第二个窗体也不移动。注:我的第一个窗体是居中显示!!!
糖果茜茜 2013-07-16
  • 打赏
  • 举报
回复
可以了,谢谢。
ztszhq 2013-07-15
  • 打赏
  • 举报
回复

public partial class Form1 : Form
    {
        Form2 f = null;
        int initx = 0;//初始left距离
        int inity = 0;//初始top距离
        int initx1 = 0;//初始left距离
        int inity1 = 0;//初始top距离
        public Form1()
        {
            InitializeComponent();
           
       }

        private void button1_Click(object sender, EventArgs e)
        {
            f = new Form2();
            f.Show();
            initx = this.Left;
            inity = this.Top;
            initx1 = f.Left;
            inity1 = f.Top;
        }

        private void Form1_Move(object sender, EventArgs e)
        {
            if (f != null)
            {
                f.Top = initx1 + (this.Top - inity);
                f.Left = inity1 + (this.Left - initx);
            }
        }

       
    }
benbenRH 2013-07-15
  • 打赏
  • 举报
回复
引用 6 楼 bingzhu1989 的回复:
回复: 我的是这样一个情况:双击弹出一个窗体,剧中显示,里面有一个按钮是弹出另一个窗体,两个窗体都弹出时,移动第一个窗体,第二个窗体也随之移动。求大侠?
在第一个窗口添加LocationChanged事件的处理函数,然后再里面设置第二个窗口的位置
糖果茜茜 2013-07-15
  • 打赏
  • 举报
回复
回复: 我的是这样一个情况:双击弹出一个窗体,剧中显示,里面有一个按钮是弹出另一个窗体,两个窗体都弹出时,移动第一个窗体,第二个窗体也随之移动。求大侠?
ztszhq 2013-07-15
  • 打赏
  • 举报
回复
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2(this);
            f.Show();
        }
    }
 public partial class Form2 : Form
    {
        public Form1 f1 = null;
        int initx=0;//初始left距离
        int inity=0;//初始top距离
        int initx1 = 0;//初始left距离
        int inity1 = 0;//初始top距离
        public Form2(Form1 f)
        {
            f1 = f;
            InitializeComponent();
            initx = this.Left;
            inity = this.Top;
            initx1 = f1.Left;
            inity1 = f1.Top;
        }

        private void Form2_Move(object sender, EventArgs e)
        {
            f1.Top = initx1 + (this.Top - inity);
            f1.Left = inity1 + (this.Left - initx);
        }
    }
糖果茜茜 2013-07-15
  • 打赏
  • 举报
回复
引用 3 楼 chang_bo 的回复:
引用 2 楼 bingzhu1989 的回复:
[quote=引用 1 楼 chang_bo 的回复:] 由Windows版移至C#
在Winform中用c#语言,怎样使移动一个窗体时另一个窗体也跟着同时移动?
楼主,你的问题更加适合在C#板块提出,我是做了一个移帖的备注,别误会~[/quote]嗯,好的,谢谢。
夜鹰 2013-07-15
  • 打赏
  • 举报
回复
引用 2 楼 bingzhu1989 的回复:
引用 1 楼 chang_bo 的回复:
由Windows版移至C#
在Winform中用c#语言,怎样使移动一个窗体时另一个窗体也跟着同时移动?
楼主,你的问题更加适合在C#板块提出,我是做了一个移帖的备注,别误会~
糖果茜茜 2013-07-15
  • 打赏
  • 举报
回复
引用 1 楼 chang_bo 的回复:
由Windows版移至C#
在Winform中用c#语言,怎样使移动一个窗体时另一个窗体也跟着同时移动?
夜鹰 2013-07-15
  • 打赏
  • 举报
回复
由Windows版移至C#

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧