C#实现Winform窗口间数据交互的三种方法介绍

1、修改子窗体的构造函数:

  简单地说就是通过修改子窗体Form的构造函数,如下所示:

public Frm_Child(string Para1, ArrayList List1, TextBox textBox1, Form. Frm_Main)


  {


      InitializeComponent();


   }

上面的例子中,为子窗体Frm_Child添加了4个参数,分别是:字符串Para1,字符数组List1,文本控件textBox1和父窗体Frm_Main,下面简单区分一下它们各自的特点:

  <1> 字符串:单向的值传递,在子窗体中不能通过修改此参数的值来间接改变父窗体中的数据。

  <2> 字符数组:引用型传递,可以通过将父子窗体中不同的成员变量指向相同的数组,即可实现变更一方,同时更新对方的数据。

  <3> 控件:引用型传递,可以通过修改该控件的数据来直接达到控制父窗体中该控件数据的目的。

  <4> 窗体: 这个最直接,直接将父窗体传递到子窗体中,我们可以方便地在子窗体中修改父窗体中所有授权为public 的数据。

  2、给窗体添加属性或方法:

  获取或设置拥有此窗体的窗体。若要使某窗体归另一个窗体所有,请为其 Owner 属性分配一个对将成为所有者的 窗体的引用。当一个窗体归另一窗体所有时,它便随着所有者窗体最小化和关闭。例如,如果 Frm_Child 归窗体 Frm_Main所有,则关闭或最小化 Frm_Main 时,也会关闭或最小化 Frm_Child。并且附属窗体从不显示在其所有者窗体后面。可以将附属窗体用于查找和替换窗口之类的窗口,当选定所有者窗体时,这些窗口不应消失。若要确定某父窗体拥有的窗体,请使用OwnedForms属性。

  我们可以通过下面的方式来确定这种从属的窗体关系:

 Frm_Child form. = new Frm_Child();


   form.Owner = this;


   form.ShowDialog();

  或者

   Frm_Child form. = new Frm_Child();


   form.ShowDialog(this);

  定了从属关系以后,我们就可以通过在Formload事件中或者通过定义public的属性或者方法来彼此进行数据修改操作,简单操作如下:

   Frm_Main pareForm. = (Frm_Main)this.Owner;  


   this.listData1 = pareForm.ListData2;

  3、通过委托的方法:

  相对以上两种方法来说,这种方法可能较复杂一些,但基本思路是一样的,需要修改的地方如下:

  <1> Frm_Child.cs中添加委托函数定义:public delegate void SendFun(string str);

  <2> Frm_Child.cs中添加委托示例:public event SendFun SendToParent;

  <3> Frm_Child.cs中添加一个按钮,并添加其事件如下:

     private void button1_Click(object sender, EventArgs e)


     {


       if (Send != null)


      {


           Send(this.textBox1.Text);


       }


      }

  <4> Frm_Main.cs中添加方法RecvInfo()方法如下:

    private void RecvInfo (string str)


    {


        textBox1.Text = str;


    }

  <5> Frm_Main.Designer.cs中的InitializeComponent()方法中添加委托实例定义:

this.myForm.Send += new Example3_Frm_Child. SendFun (RecvInfo);

  通过上面五步操作,即可达到Form间的通信的目的。
 

    以上介绍的就是C#实现Winform窗口间数据交互的三种方法,希望对你了解C#实现Winform窗口间数据交互有所帮助。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# AnyCAD Winform是一个用于三维图形显示的库,它可以实现三维点数据的导入及显示,以及简单的画图功能。它采用了Winform编写,并调用了AnyCAD的API,可以加载STL等多种3D模型格式,同时支持对3D模型进行平移、旋转、放大缩小等交互操作。以下是一个简单的C# AnyCAD Winform的示例代码: ```csharp using AnyCAD.Platform; using AnyCAD.Platform.Geometry; using AnyCAD.Visual; public partial class Form1 : Form { private AnyCAD.Platform.RenderWindow3d renderView; public Form1() { InitializeComponent(); // 创建渲染窗口 renderView = new AnyCAD.Platform.RenderWindow3d(); renderView.Size = new System.Drawing.Size(800, 600); renderView.Location = new System.Drawing.Point(0, 0); this.Controls.Add(renderView.HostedControl); // 创建场景 var scene = new AnyCAD.Platform.Scene(); var root = scene.RootNode; // 加载STL文件 var stlReader = new AnyCAD.Exchange.StlReader(); var shape = stlReader.Read("model.stl"); // 创建实体节点 var entity = new AnyCAD.Visual.Data.Entity(shape); var node = new AnyCAD.Platform.Data.Node(); node.SetEntity(entity); // 添加节点到场景中 root.AddChild(node); // 设置相机位置 var camera = scene.GetActiveCamera(); camera.SetPosition(new Vector3(0, 0, 100)); camera.SetFocalPoint(new Vector3(0, 0, 0)); // 渲染场景 renderView.ShowScene(scene); } } ``` 以上代码演示了如何在Winform中使用C# AnyCAD库加载STL文件并显示出来。你可以根据自己的需求修改代码,实现更多的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值