`
truelove12358
  • 浏览: 77498 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

C#利用委托实现窗体间的值传递 .

 
阅读更多

A、网上有很多方法,大家可搜一下,都可用。

B、这里只是说明下是只利用委托,学习基本的委托运用。

方法如下:

1、C#建立一个默认工程,默认窗体Form1

2、加入一个新窗体,默认Form2

3、Form1窗体上放一个Label,一个Button,属性分别为:

this.label1.Text = ""; // 清空label的值

this.button1.Text="otherForm"; //设置button显示为otherForm

  1. protectedoverridevoidOnLoad(EventArgse)
  2. {
  3. base.OnLoad(e);
  4. this.label1.Text="";
  5. this.button1.Text="otherForm";
  6. }

4、Form2窗体上放一个textbox1,一个Button,属性分别为:

this.textbox1.Text = ""; //清空textbox的值

this.button1.Text = "input"; //设置button显示为input(输入)

  1. protectedoverridevoidOnLoad(EventArgse)
  2. {
  3. base.OnLoad(e);
  4. this.textBox1.Text="";
  5. this.button1.Text="input";
  6. }

5、上面的步骤就建立了两个基本的窗体,接下来回到Form1的代码设计视图

拷贝下面代码

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Drawing;
  6. usingSystem.Linq;
  7. usingSystem.Text;
  8. usingSystem.Windows.Forms;
  9. namespaceWindowsFormsApplication1
  10. {
  11. publicpartialclassForm1:Form
  12. {
  13. publicForm1()
  14. {
  15. InitializeComponent();
  16. }
  17. protectedoverridevoidOnLoad(EventArgse)
  18. {
  19. base.OnLoad(e);
  20. this.label1.Text="";
  21. this.button1.Text="otherForm";
  22. }
  23. privatevoidbutton1_Click(objectsender,EventArgse)
  24. {
  25. Form2frm2=newForm2();
  26. returnValueEvent+=newreturnValue(Form1_returnValueEvent);
  27. frm2.Show();
  28. }
  29. voidForm1_returnValueEvent(stringstr)
  30. {
  31. //thrownewNotImplementedException();
  32. this.label1.Text=str;
  33. }
  34. //定义委托
  35. publicdelegatevoidreturnValue(stringstr);
  36. //委托的事件
  37. publicstaticeventreturnValuereturnValueEvent;
  38. //委托的事件的函数
  39. publicvoiddoReturnValue(stringstr)
  40. {
  41. returnValueEvent(str);
  42. }
  43. }
  44. }

6、在Form2的代码设计视图中,拷贝下面代码

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Drawing;
  6. usingSystem.Linq;
  7. usingSystem.Text;
  8. usingSystem.Windows.Forms;
  9. namespaceWindowsFormsApplication1
  10. {
  11. publicpartialclassForm2:Form
  12. {
  13. publicForm2()
  14. {
  15. InitializeComponent();
  16. }
  17. protectedoverridevoidOnLoad(EventArgse)
  18. {
  19. base.OnLoad(e);
  20. this.textBox1.Text="";
  21. this.button1.Text="input";
  22. }
  23. privatevoidbutton1_Click(objectsender,EventArgse)
  24. {
  25. Form1frm1=newForm1();
  26. frm1.doReturnValue(this.textBox1.Text);
  27. }
  28. }
  29. }

7、运行后,就可以在两个窗体间传递参数了

注:重点是第六步中的,对委托的定义和调用

returnValueEvent += new returnValue(Form1_returnValueEvent);

void Form1_returnValueEvent(string str)
{
// throw new NotImplementedException();
this.label1.Text = str;
}

// 定义委托
public delegate void returnValue(string str);
// 委托的事件
public static event returnValue returnValueEvent;
// 委托的事件的函数
public void doReturnValue(string str)
{
returnValueEvent(str);
}

在Form2中的调用,在按钮的click事件中

Form1 frm1 = new Form1();
frm1.doReturnValue(this.textBox1.Text);

运行效果图如下:

效果图

A、网上有很多方法,大家可搜一下,都可用。

B、这里只是说明下是只利用委托,学习基本的委托运用。

方法如下:

1、C#建立一个默认工程,默认窗体Form1

2、加入一个新窗体,默认Form2

3、Form1窗体上放一个Label,一个Button,属性分别为:

this.label1.Text = ""; // 清空label的值

this.button1.Text="otherForm"; //设置button显示为otherForm

  1. protectedoverridevoidOnLoad(EventArgse)
  2. {
  3. base.OnLoad(e);
  4. this.label1.Text="";
  5. this.button1.Text="otherForm";
  6. }

4、Form2窗体上放一个textbox1,一个Button,属性分别为:

this.textbox1.Text = ""; //清空textbox的值

this.button1.Text = "input"; //设置button显示为input(输入)

  1. protectedoverridevoidOnLoad(EventArgse)
  2. {
  3. base.OnLoad(e);
  4. this.textBox1.Text="";
  5. this.button1.Text="input";
  6. }

5、上面的步骤就建立了两个基本的窗体,接下来回到Form1的代码设计视图

拷贝下面代码

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Drawing;
  6. usingSystem.Linq;
  7. usingSystem.Text;
  8. usingSystem.Windows.Forms;
  9. namespaceWindowsFormsApplication1
  10. {
  11. publicpartialclassForm1:Form
  12. {
  13. publicForm1()
  14. {
  15. InitializeComponent();
  16. }
  17. protectedoverridevoidOnLoad(EventArgse)
  18. {
  19. base.OnLoad(e);
  20. this.label1.Text="";
  21. this.button1.Text="otherForm";
  22. }
  23. privatevoidbutton1_Click(objectsender,EventArgse)
  24. {
  25. Form2frm2=newForm2();
  26. returnValueEvent+=newreturnValue(Form1_returnValueEvent);
  27. frm2.Show();
  28. }
  29. voidForm1_returnValueEvent(stringstr)
  30. {
  31. //thrownewNotImplementedException();
  32. this.label1.Text=str;
  33. }
  34. //定义委托
  35. publicdelegatevoidreturnValue(stringstr);
  36. //委托的事件
  37. publicstaticeventreturnValuereturnValueEvent;
  38. //委托的事件的函数
  39. publicvoiddoReturnValue(stringstr)
  40. {
  41. returnValueEvent(str);
  42. }
  43. }
  44. }

6、在Form2的代码设计视图中,拷贝下面代码

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Drawing;
  6. usingSystem.Linq;
  7. usingSystem.Text;
  8. usingSystem.Windows.Forms;
  9. namespaceWindowsFormsApplication1
  10. {
  11. publicpartialclassForm2:Form
  12. {
  13. publicForm2()
  14. {
  15. InitializeComponent();
  16. }
  17. protectedoverridevoidOnLoad(EventArgse)
  18. {
  19. base.OnLoad(e);
  20. this.textBox1.Text="";
  21. this.button1.Text="input";
  22. }
  23. privatevoidbutton1_Click(objectsender,EventArgse)
  24. {
  25. Form1frm1=newForm1();
  26. frm1.doReturnValue(this.textBox1.Text);
  27. }
  28. }
  29. }

7、运行后,就可以在两个窗体间传递参数了

注:重点是第六步中的,对委托的定义和调用

returnValueEvent += new returnValue(Form1_returnValueEvent);

void Form1_returnValueEvent(string str)
{
// throw new NotImplementedException();
this.label1.Text = str;
}

// 定义委托
public delegate void returnValue(string str);
// 委托的事件
public static event returnValue returnValueEvent;
// 委托的事件的函数
public void doReturnValue(string str)
{
returnValueEvent(str);
}

在Form2中的调用,在按钮的click事件中

Form1 frm1 = new Form1();
frm1.doReturnValue(this.textBox1.Text);

运行效果图如下:

效果图

分享到:
评论

相关推荐

    C#利用委托实现窗体传值

    C#利用委托实现窗体传值

    Visual C#中实现窗体间的数据传递.rar_CSharp 窗体_c#数据传递_窗体_窗体 CSharp

    本文将深入探讨在Visual C#中如何实现窗体间的数据传递,以及相关的C#编程技巧。 首先,让我们理解窗体(Forms)的概念。在C#的Windows Forms应用中,窗体是用户界面的基础,它们承载着控件(Controls),如按钮、...

    C#源代码-使用委托进行窗体间的传值.zip

    在C#编程中,委托是一种强大的工具,它允许我们传递方法作为参数,或者将多个方法链接起来形成事件...学习和理解这部分代码将有助于提升你对C#委托和事件机制的理解,以及在实际开发中如何优雅地处理窗体间通信问题。

    两个DataGridView通过委托实时传值,安全高效 C# 两个窗体之间实时传递数据的实例。利用委托和事件的方法,从子窗体传送数据到主窗体。比较安全。

    总结起来,通过在C#中使用委托和事件,我们可以实现在两个窗体之间安全、高效地传递`DataGridView`的数据。这种方法不仅适用于`DataGridView`,还可以扩展到其他需要跨窗体通信的场景,只要正确管理和触发事件,就能...

    C#委托示例,窗体之间传递数据例子,最简单的委托例子

    本人做的一个非常简单 C#委托的例子,很基础很简单的一个小例子,最最适合委托初学者参看。再结合资料,相信学通C#委托不是一件难事。 委托很好的解决了窗体之间的数据传递和方法调用,非常实用,通过这个例子相信能...

    C#委托实现窗体间传值

    在这个"简単委托实例"中,我们将深入探讨如何利用委托来实现在多个窗体(Form)之间传递数据,特别是在Visual Studio 2008环境下。 1. **委托的理解**: - 委托在C#中是类的实例,它封装了一个或多个方法。这个类...

    c#vs2010 窗体间值传递

    总结来说,"c#vs2010 窗体间值传递"是一个涵盖多个技术点的主题,包括C#窗体间的通信方式、权限设计原则、软件架构设计、前端库jQuery的使用,以及测试策略。理解并熟练掌握这些知识点,对于提升C#应用程序的开发...

    C#利用事件委托实现窗体的传值做的计算器

    在这个名为“C#利用事件委托实现窗体的传值做的计算器”的项目中,我们将探讨如何通过这些概念来创建一个功能完备的计算器应用程序。 首先,让我们理解一下什么是委托。委托在C#中是一种类型,它代表了方法的引用,...

    C# 使用委托方式Usercontrol与主窗体进行消息传递

    通过这种方式,我们可以使用C#的委托在UserControl和主窗体之间安全、高效地传递消息。这种方法不仅限于简单的字符串消息,还可以传递任何复杂的数据结构,使得组件间的通信更加灵活。同时,由于使用了事件模型,...

    C# winform窗体间传值(使用委托或事件)

    C#winform窗体间传值,三种方法示例,注释详细。使用方法:使用vs2013打开编译运行即可; 工程中总共介绍了三种方法: ###方法1:通过保存对象的引用调用其方法实现对子窗体的控制; ###方法2:通过委托,在子窗体...

    winform利用窗体属性实现窗体之间传值.rar

    标题“winform利用窗体属性实现窗体之间传值”所指的知识点,主要是关于如何通过设置和访问窗体的公共属性来实现在不同窗体间的数据传递。这种技术尤其适用于简单的值传递场景,下面我们将详细探讨这一方法。 首先...

    C#Winform委托事件实现窗体信息传递实例源代码.rar

    在这个实例中,我们将探讨如何利用C#中的委托和事件机制来实现在Winform窗体间的通信。以下是详细的知识点解析: 1. 委托(Delegate): - 委托是C#中的一种类型,它代表一个方法的引用。你可以将委托视为指向特定...

    基于C#的WinForm窗体传值方法探讨.pdf

    双向传值是指数据不仅能够从父窗体传递到子窗体,还可以从子窗体回传到父窗体。这在很多应用场景中是非常必要的。 ##### 3.1 使用委托和事件 委托是一种引用类型,可以指向任何具有相同签名的方法。通过定义委托和...

    c#演示两个窗体间参数的传递

    通过以上步骤,初学者可以了解和实现C#窗体间的参数传递。在实际开发中,可能会有更复杂的情况,如多层窗体间的传递、异步操作后的传递等,但基本原理都是类似的。熟练掌握这一技能,将有助于构建更复杂的多窗口应用...

    c# 委托、子窗体往父窗体传值,DEMO,完整源码

    在子窗体向父窗体传递值的场景中,我们可以使用委托来实现通信。假设我们有一个主窗体(ParentForm)和一个子窗体(ChildForm)。在子窗体中,用户输入一些数据,然后我们希望通过某种方式将这些数据传递回主窗体。...

    C# 两个窗体之间实时传递数据的实例

    在C#编程中,开发GUI应用程序时经常需要在不同的窗体之间传递数据。在这个实例中,我们将探讨如何在两个窗体之间...通过学习和实践这个实例,你将更深入地理解C#中委托和事件的应用,以及在窗体间传递数据的最佳实践。

    委托模式窗体间消息传递(多播委托)

    在本场景中,"委托模式窗体间消息传递(多播委托)"是一种设计模式,用于在多个窗体之间共享数据或通知状态改变。这种技术尤其在Windows桌面应用开发中常见,例如使用C#或VB.NET构建的WPF或WinForms应用程序。 **...

    委托:实现窗体间的传值

    通过这种方式,我们利用C#的委托和事件机制实现了WinForm窗体间的值传递。这种方法不仅简洁,而且符合面向对象的设计原则,使得代码结构清晰,易于维护。同时,它还支持异步通信,因为事件可以跨线程触发和处理。 ...

Global site tag (gtag.js) - Google Analytics