C#传值方式实现不同程序窗体间通信实例

当Form2的AcceptChange按钮按下,需要修改Form1中ListBox中相应列的值,因此可以考虑同时将Form1中的ListBox控件当参数也传入Form2,所有修改工作都在Form2中完成,根据这个思路,Form2代码如下:

代码如下:

publicpartial class Form2 : Form    
    {    
        private string text;    
        private ListBox lb;    
        private int index;

//构造函数接收三个参数:选中行文本,ListBox控件,选中行索引    
        public Form2(string text,ListBox lb,int index)    
        {    
            this.text = text;    
            this.lb = lb;    
            this.index = index;    
            InitializeComponent();    
            this.textBox1.Text = text;    
        }

private void btnChange_Click(object sender, EventArgs e)    
        {               
            string text = this.textBox1.Text;    
            this.lb.Items.RemoveAt(index);    
            this.lb.Items.Insert(index, text);    
            this.Close();    
        }    
    }

Form1中new窗体2时这么写:

代码如下:

public partial class Form1 :Form    
    {    
        int index = 0;    
        string text = null;    
        public Form1()    
        {    
            InitializeComponent();    
        }

private void listBox1_SelectedIndexChanged(object sender, EventArgse)    
        {                
            if (this.listBox1.SelectedItem != null)    
            {    
                text = this.listBox1.SelectedItem.ToString();    
                index = this.listBox1.SelectedIndex;

//构造Form2同时传递参数    
                Form2 form2 = new Form2(text, listBox1, index);    
                form2.ShowDialog();    
            }    
       }

OK,这样做的好处是直观,需要什么就传什么,缺点也是显而易见的,如果窗体1中需要修改的是一百个控件,难道构造的时候还传100个参数进去?况且如果其他窗体仍然需要弹Form2,那Form2就废了,只能供窗体1使用,除非写重载的构造函数,不利于代码的复用

(0)

相关推荐

  • C#实现窗体间传递数据实例

    本文以实例详述了C#两个窗体之间传递数据的实现方法,具体的操作步骤如下: 1.建立两个窗体,并采用公用变量值传递: public partial class Form1 : Form //父窗体 { public string name=""; public Form1() { InitializeComponent(); } private void newBtn_Click(object sender, EventArgs e) { Form2 form2 =new Form2()

  • c#窗体传值用法实例详解

    本文实例讲述了c#窗体传值用法.分享给大家供大家参考.具体分析如下: 对于窗体间的数据传递,是刚开始从事.Net窗体应用程序开发人员碰到的一个常见问题,在此讲几个常见的实现方式.此节内容适用于模式窗体或非模式窗体,部分方式延伸到一般类的操作. (1)构造函数参数传递 通过构造函数传递参数应该是比较基本的参数传递方式,重载构造函数,通过带参数的构造函数来实例化窗体. 在窗体类内部定义参数变量, private object myParams; 实现构造函数, public OptionForm(o

  • C#窗体传值实例汇总

    本文实例汇总了C#窗体传值的方法.分享给大家供大家参考.具体方法如下: 1.静态变量传值,非常简单适合简单的非实例的 复制代码 代码如下: public calss form1:Form{     public static int A; } public class form2:Form{    form1.A=1; } 2.委托传值 复制代码 代码如下: public class form1:Form{   public int A{get;set;}   public static Act

  • C#跨窗体操作(引用传递) 实例代码

    效果描述: 有三个窗体然后顺序分别是 (1)点击第一个窗体中的按钮弹出第二个窗体,隐藏第一个窗体 (2)第二个窗体到一定时间弹出第三个窗体 (3)点击第三个窗体的按钮关闭第三个和第二个窗体,弹出第一个窗体 From1 复制代码 代码如下: using System;  using System.Windows.Forms; namespace WindowsFormsApplication1  {      public partial class Form1 : Form      {    

  • C#实现窗体间传值实例分析

    本文实例分析了C#实现窗体间传值的方法.分享给大家供大家参考,具体如下: 1.VS 2005的Visual C# Windows应用程序和Visual C#智能设备Pocket PC 2003设备应用程序. 假设我们需要点击主窗体FMMain中的某一个按钮时打开子窗体FMChild并将某一个值传给子窗体FMChild,一般情况下,我们点击按钮显示子窗体FMChild的代码为: FMChild fmChild = new FMChild(); fmChild.ShowDialog(); fmChi

  • C#,winform,ShowDialog,子窗体向父窗体传值

    调用showdialog方法后,调用代码被暂停执行,等到调用showdialog方法的窗体关系后再继续执行.而且窗体可以返回一个dialogresult值,他描述了窗体关闭的原因,例如OK,Cancel,yes,no等.为了让窗体返回一个dialogresult,必须设置窗体的dialogresult值,或者在窗体的一个按钮上设置dialogresult属性. 例子: 下面是子窗体代码,要求输入phone,然后会返回给父窗体. using System; using System.Collect

  • C#实现两个窗体之间数值传送的方法

    本文实例讲述了C#实现两个窗体之间数值传送的方法.分享给大家供大家参考,具体如下: 以下是本人常用的方法,其实方法很多,但我觉得这两种我比较好理解,要是哪位朋友有比较简单的易懂的其他方法,希望不吝赐教. 方法一: 比如要在FORM2里得到FORM1里的值,先在FORM1里定义一个公有的字符串 复制代码 代码如下: public string zhi="xxxxxx"; 然后FORM2里用FORM1去实例化一个对象 复制代码 代码如下: FORM1 f=new FORM1(); 最后用

  • C#简单实现子窗体向父窗体传值的方法

    本文实例讲述了C#简单实现子窗体向父窗体传值的方法.分享给大家供大家参考.具体如下: 击Form1的button1 打开Form2 再点击Form2的button2 在button2_Click事件中 通过this.Owner将Form2的textBox2的值设置给Form1的textBox1 并关闭Form2 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void bu

  • C#传值方式实现不同程序窗体间通信实例

    当Form2的AcceptChange按钮按下,需要修改Form1中ListBox中相应列的值,因此可以考虑同时将Form1中的ListBox控件当参数也传入Form2,所有修改工作都在Form2中完成,根据这个思路,Form2代码如下: 复制代码 代码如下: publicpartial class Form2 : Form         {             private string text;             private ListBox lb;            

  • 微信小程序页面间通信的5种方式

    PageModel(页面模型)对小程序而言是很重要的一个概念,从app.json中也可以看到,小程序就是由一个个页面组成的. 如上图,这是一个常见结构的小程序:首页是一个双Tab框架PageA和PageB,子页面pageB, PageC. 让我们假设这样一个场景:首页PageA有一个飘数,当我们从PageA新开PageC后,做一些操作,再回退到PageA的时候,这个飘数要刷新.很显然,这需要在PageC中做操作时,能通知到PageA,以便PageA做相应的联动变化. 这里的通知,专业点说就是页面

  • 在.NET中利用委托实现窗体间通信

    对于窗体间简单的通信,采用VB6.0的方法就能满足我们的要求,但在一些架构设计复杂的应用中,这种方法就显得有点捉襟见肘了,同时该方法还有一个缺点,就是它仅仅对通过.NET窗体向导添加进去的窗体起作用,而对于自定义的窗体类型我们是无法添加到Forms对象集合中的.而且也和其它诸如构造函数传参等方法一样,会在窗体间大量互相引用各自的成员,造成了彼此之间存在着很大的耦合性,非常不利于窗体模块间的独立,这不符合良好软件设计模式的思想. 如果我们想在一个窗体中访问另一个窗体中自定义的成员,必须把该成员的可

  • vue之父子组件间通信实例讲解(props、$ref、$emit)

    组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.那么组件间如何通信,也就成为了vue中重点知识了.这篇文章将会通过props.$ref和 $emit 这几个知识点,来讲解如何实现父子组件间通信. 在说如何实现通信之前,我们先来建两个组件father.vue和child.vue作为示例的基础. //父组件 <template> <div> <h1>我是父组件!</h1> <child>

  • Vue和React组件之间的传值方式详解

    在现代的三大框架中,其中两个Vue和React框架,组件间传值方式有哪些? 组件间的传值方式 组件的传值场景无外乎以下几种: 父子之间 兄弟之间 多层级之间(孙子祖父或者更多) 任意组件之间 父子之间 Vue Vue是基于单项数据流设计的框架,但是提供了一些的语法,指令去实现一些操作 父->子:通过props进行传递数据给子组件 子->父:通过emit向父组件传值 同时,还有一些其他进行父子组件通信的方式,通过$parent和$children获取组件的父或者子组件的实例,之后通过实例对象去修

  • Vue如何实现组件间通信

    1. 父子间通信 最常见的就是父子之间的通信,通信是双向的数据传递. 1.1 父组件 --> 儿子组件 父组件向儿子组件传递数据的方式就是 通过 Prop 向子组件传递数据. //child.vue <template> <div> 我是儿子,我收到来自父亲的数据为 {{value}} </div> </template> <script> export default { props:{ value: String } } //App.v

  • C#窗体间常用的几种传值方式及委托与事件详解

    前言 窗体间的传值,最好使用委托方式传值,开始之前,我们先来说一下委托与事件的关系. 委托:是一个类. 事件:是委托类型的一个特殊实例,只能在类的内部触发执行. 首先创建2个窗体,这里我们以form1为发送窗体,form2为接收窗体 form1窗体 form2窗体 方式一(最简单的方式) form1窗体代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;

  • WinForm窗体间传值的方法

    本文实例讲述了WinForm窗体间传值的方法.分享给大家供大家参考.具体实现方法如下: 窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式:   1.公共静态变量: 2.使用共有属性: 3.使用委托与事件: 4.通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点:传值是双向的,实现简单   实现代码如下: 在一个app类中定义一个静态成员value 复制代码 代码如下: public class app { public static string value

  • C#开发Winform实现窗体间相互传值

    目录 一.前言 二.公共属性 三.公共方法 四.委托 1.定义一个委托 2.实例化一个此委托类型的事件 3.定义要执行的方法 4.将方法绑定到事件 5.触发委托 一.前言 我们在做Winform窗体程序开发的时候,会经常遇到窗体之间相互传值.假设有下面的一个场景:一个主窗体和一个子窗体,点击主窗体上面的按钮给子窗体传值,并在子窗体上面显示出来,一般会有如下几种方式实现. 二.公共属性 我们可以在子窗体里面定义一个公共的属性,然后在父窗体里面给公共属性赋值,这样可以实现窗体之间传值,子窗体代码如下

随机推荐