Winform窗体传值的方法(示例)

所属分类: 软件编程 / C#教程 阅读数: 75
收藏 0 赞 0 分享

进行用C#来开发windows应用程序项目时,不同窗口之间传值有很多种不同的方法, 假设项目中有两个窗体,Form1和Form2,要实现的效果是:点击Form1中的按钮打开From2,点击Form2中的按钮改变窗体Form1的背景颜色。

示例一:

点击Form1中的按钮打开From2,点击Form2中的按钮改变窗体Form1的背景颜色。

Form1的代码:

 public partial class Form : Form
 {
  public Form()
  {
  InitializeComponent();
  }
  private void button_Click(object sender, EventArgs e)
  {
  //通过Form的构造函数将Form对象传递到Form中
  Form form = new Form(this);
  form.Show();
  }
 }

 Form2的代码:

public partial class Form : Form
 {
  //首先在Form中定义Form类型字段用来存储Form对象
  Form form=null;
  Random r = new Random();
  public Form()
  {
  InitializeComponent();
  }
  public Form(Form form):this()
  {
  //通过构造方法将Form对象给Form字段赋值
  form = form;
  }
  private void button_Click(object sender, EventArgs e)
  {
  //随机改变Form的背景颜色
  form.BackColor = Color.FromArgb(r.Next(),r.Next(),r.Next());
  }
 }

示例二:

假设项目中有两个窗体,Form1和Form2,要实现的效果是点击Form1中的Button1按钮实现TextBox1和TextBox2中的值相加,然后把这个相加的值传递给Form2中的TextBox1,并在TextBox1中显示出这个和值。

通过为窗体类写属性来传递值

(1),在被传递值的窗体(这里是Form2)类里面写属性

private string str;//定义的私有变量


 public string STR//为窗体Form2定义的属性
 {
  get //读
  { return str;
  }
  set//写
  {
  str = value;
  }
 }

(2),在Form2中把读到的属性赋给Form2中的TextBox1文本框
       

复制代码 代码如下:

private void Form2_Load(object sender, EventArgs e)
        {
            textBox1.Text = str;
        }

(3),在Form1中的Button1的Click点击事件中写如下代码
       

 private void button1_Click(object sender, EventArgs e)
 {
  Form2 frm2 = new Form2();
  int a, b, sum;
  if (int.TryParse(textBox1.Text, out a) && int.TryParse(textBox2.Text, out b))//关于TryParse的使用方法,见补充知识。
  {
  sum = a + b;
  frm2.STR = sum.ToString();
  frm2.ShowDialog();
  }
  else
  {
  frm2.STR = "输入的为非数字型字符串";
  frm2.ShowDialog();
  }
 }

大功告成,在你的机子上运行下,是不是成功了?

 补充知识:
parse,tryparse区别
Convert.ToInt32,int.Parse(),int.TryParse,(int) 四者都可以解释为将类型转换为 int,那它们的区别是什么呢?
Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:
Convert.ToInt32 参数为 null 时,返回 0;
int.Parse 参数为 null 时,抛出异常。
Convert.ToInt32 参数为 "" 时,抛出异常;
int.Parse 参数为 "" 时,抛出异常。
Convert.ToInt32 可以转换的类型较多;
int.Parse 只能转换数字类型的字符串。
int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0。

复制代码 代码如下:

int m;
if(int.TryParse("2"),out m)
{
...
}

返回true ,运行{}内,并给m赋值为2;
 

复制代码 代码如下:

if(int.TryParse("ddd"),out m)
{
...
}

返回false,不运行if{}内,并给m赋值为0;
使用Parse和TryParse转换数字字符串
基本数字类型包含Parse和TryParse方法,可用于将数字字符串转换为指定的数字类型,例如:

 TryParse方法是.NET2.0中引入的,它能提供有条件的解析。这个方法会返回一个布尔值,以指示解析是否成功,从而可以免去添加异常处理代码的麻烦。下面的例子使用了一个Int32类型来演示TryParse的两种形式:

 

在第二种形式中,第一个参数是要解析的文本字符串,第二个参数是NumberStyles枚举类型,它说明了输入字符串中可能包含的内容,返回值将放在第四个参数中返回。

 以上就是Winform窗体传值的方法(示例),希望对大家有所帮助。

 

 

 

更多精彩内容其他人还在看

c#开发word批量转pdf源码分享

已经安装有Office环境,借助一些简单的代码即可实现批量Word转PDF,看下面的实例源码吧
收藏 0 赞 0 分享

c# xml API操作的小例子

这篇文章主要介绍了c# xml API操作的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

c#唯一值渲染实例代码

这篇文章主要介绍了c#唯一值渲染实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

淘宝IP地址库采集器c#代码

这篇文章主要介绍了淘宝IP地址库采集器c#代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C#在后台运行操作(BackgroundWorker用法)示例分享

BackgroundWorker类允许在单独的专用线程上运行操作。如果需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用BackgroundWorker类方便地解决问题,下面看示例
收藏 0 赞 0 分享

c#文本加密程序代码示例

这是一个加密软件,但只限于文本加密,加了窗口控件的滑动效果,详细看下面的代码
收藏 0 赞 0 分享

c#生成站点地图(SiteMapPath)文件示例程序

这篇文章主要介绍了c#生成站点地图(SiteMapPath)文件的示例,大家参考使用
收藏 0 赞 0 分享

C# 键盘Enter键取代Tab键实现代码

这篇文章主要介绍了C# 键盘Enter键取代Tab键实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C# WinForm导出Excel方法介绍

在.NET应用中,导出Excel是很常见的需求,导出Excel报表大致有以下三种方式:Office PIA,文件流和NPOI开源库,本文只介绍前两种方式
收藏 0 赞 0 分享

C#串口通信程序实例详解

在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports,创建C#串口通信程序的具体实现是如何的呢?让我们开始吧
收藏 0 赞 0 分享
查看更多