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

 更新时间:2015年08月05日 11:13:29   投稿:mrr  
C#开发windows应用程序项目时,不同窗口之间传值有很多中方法,在此给大家介绍两种比较常用的winform窗体传值的方法,有需要的朋友可以参考下

进行用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#绘制曲线图的方法

    C#绘制曲线图的方法

    这篇文章主要介绍了C#绘制曲线图的方法,以完整实例形式较为详细的分析了C#进行曲线绘制的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • c#中LINQ的基本用法(一)

    c#中LINQ的基本用法(一)

    这篇文章介绍了c#中LINQ的基本用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#定时关闭窗体实例

    C#定时关闭窗体实例

    这篇文章主要介绍了C#定时关闭窗体实例,在Windows桌面应用程序开发中具有一定的实用价值,需要的朋友可以参考下
    2014-10-10
  • C# 中 List 与 List 多层嵌套不改变原值的实现方法(深度复制)

    C# 中 List 与 List 多层嵌套不改变原值的实现方法(深度复制)

    这篇文章主要介绍了C# 中 List 与 List 多层嵌套不改变原值的实现方法,使用 BinaryFormatter 将原始 List 序列化为字节流,然后再反序列化得到新的 List,实现了深度复制,需要的朋友可以参考下
    2024-03-03
  • C# 获取当前总毫秒数的实例讲解

    C# 获取当前总毫秒数的实例讲解

    这篇文章主要介绍了C# 获取当前总毫秒数的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C#开发WinForm根据条件改变DataGridView行颜色

    C#开发WinForm根据条件改变DataGridView行颜色

    这篇文章介绍了C#开发WinForm根据条件改变DataGridView行颜色的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C# SQLite事务操作方法分析

    C# SQLite事务操作方法分析

    这篇文章主要介绍了C# SQLite事务操作方法,简单分析了使用SQL代码及C#代码实现事务功能的操作技巧,需要的朋友可以参考下
    2017-07-07
  • c# 静态类的使用场景

    c# 静态类的使用场景

    这篇文章主要介绍了c# 静态类的使用场景,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-01-01
  • C#如何实现调取钉钉考勤接口的功能

    C#如何实现调取钉钉考勤接口的功能

    这篇文章主要介绍了C#如何实现调取钉钉考勤接口的功能,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • C#里SuperSocket库不能发现命令的原因

    C#里SuperSocket库不能发现命令的原因

    这篇文章主要介绍C#里SuperSocket库不能发现命令的原因,在使用SuperSocket来写服务器的过程中,这是一个非常快速的开发方式,也非常好用。不过学习的曲线有点高,在使用的过程中经常会遇到各种各样的问题。下面来看看学习举例说明吧
    2021-10-10

最新评论