个人随笔
技术改变世界

C# Winform将控件移动到另一个窗体

控件移动到另一个窗体实例介绍

本实例将完成一个将某个控件移动到另外一个窗体,在另外一个窗体中,还可以将控件移动回来。其实也算不上移动,就是把控件放过去而已。如下图所示,可以将文本 Label 控件在两个窗体之间来回的移动。

WinformControlMovel1 WinformControlMovel2

如图所示,我们的操作依次是:点击 打开另一个窗体 -> 点击“被移动的控件” -> 然后在另一个窗体中点击 “返回原地” 那么这个Label就完成了从Form1窗体跳到Form2 ,再从Form2跳回Form1.

 

如何实现以上以上功能

看了以上的介绍,那么如何使用C# Winform来实现呢,具体操作如下:

  1. 在VS中创建一个Winform程序,其默认窗体名称为 Form1
  2. 在From1窗体中新增一个Button按钮控件,其Text值设置为 “打开另一窗体”
  3. 在Form1窗体中新增一个Label标签控件,其Text值设置为“被移动的控件”
  4. 在项目中新增一个命名为 Form2 的窗体(这个窗体不用编写任何代码)

分别在Form1中的Button的Click事件和Label的Click事件编写如下代码

private void button1_Click(object sender, EventArgs e)
{
    myfrm = new Form2();//实例化窗体Form2
    myfrm.Show();//显示窗体
}

private void label1_Click(object sender, EventArgs e)
{
    if (this.label1.Parent == this)  //判断准备移动的控件位于当前窗体中
    {
        myfrm.Controls.Add(this.label1); //将控件添加到窗体Form2中
        this.label1.Text = "返回原地";//移动的控件文本显示内容
    }
    else   //如果当前控件在另外窗体中
    {
        this.Controls.Add(this.label1); //将控件添加到当前窗体中
        this.label1.Text = "开始移动";//控件显示的内容
    }
}

然后在Form1中声明一个变量如下(在方法之外声明)

Form2 myfrm;//声明窗体对象

OK,大功告成。

如果本文让你看的比较累,比较麻烦。

可以直接下载打包实例源码Winform窗体之间移动控件源码

 

关键技术解析

窗体中的控件不仅仅可以显示在自己创建的那个窗体中,还可以显示在其他的窗体中。

每一个控件(不包含组件等)都有一个Parent属性,该属性是判断当前这个空间所在的父级控件是哪个对象。也就成了我们判断在哪个窗体中的依据。

通过 Form.Controls.Add(控件)这个方法,可以为窗体添加控件

 

小提示:

在Winform中一个控件对象只能存在于一个地方,所以在Add的时候会自动移除曾经所在的(比如form1)的地方。

为了代码的可阅读性我们应该在Add之前编写 Form.Controls.Remove(控件)来移除控件后再加入到其他窗体。这显得更合理。

转载请注明出处王旭博客 » C# Winform将控件移动到另一个窗体

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址