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窗体传值的方法(示例),希望对大家有所帮助。

(0)

相关推荐

  • WinForm窗体间传值的方法

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

  • WinForm限制窗体不能移到屏幕外的方法

    本文实例讲述了WinForm限制窗体不能移到屏幕外的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing; using System.Runtime.InteropServices; namespace AppForm { /// <s

  • C#中Winform窗体Form的关闭按钮变灰色的方法

    本文实例讲述了C#中Winform窗体Form的关闭按钮变灰色的方法,对C#程序设计有一定的借鉴价值,分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: [ DllImport ( "USER32.DLL" ) ] public static extern int GetSystemMenu(int hwnd, int bRevert); [ DllImport ( "USER32.DLL" ) ] public static extern int Rem

  • C# WinForm窗体编程中处理数字的正确操作方法

    使用C#进行WinForm开发时,经常需要从WinForm窗体中获取用户输入数据.如果是字符串,那很好办,直接使用"控件名.Text"即可.但如果是数字类型的值呢?怎么样获取?怎么样判断?怎么样转换?怎么样错误提示?且看下文. 假如我要从WinForm界面上获取一个用户输入的数字,代码如下: 复制代码 代码如下: int num; //定义一个int类型的变量来接收值 //假设接收用户输入的文本框控件名称为"txtNum",txtNum.Text为字符串类型. //

  • WinForm实现同时让两个窗体有激活效果的特效实例

    本文实例讲述了WinForm实现同时让两个窗体有激活效果的特效.主要采用windows api实现一个窗体激活的时候给另外一个发消息.分享给大家供大家参考. 具体实现方法如下: using System; using System.Windows.Forms; using System.Runtime.InteropServices; namespace WindowsApplication43 { public partial class Form1 : Form { Form frm =nu

  • C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法

    本文实例讲述了C# Winform实现捕获窗体最小化.最大化.关闭按钮事件的方法,主要是通过重写WndProc来实现的.分享给大家供大家参考.具体方法如下: 主要功能代码如下: const int WM_SYSCOMMAND = 0x112; const int SC_CLOSE = 0xF060; const int SC_MINIMIZE = 0xF020; const int SC_MAXIMIZE = 0xF030; protected override void WndProc(ref

  • WinForm子窗体访问父窗体控件的实现方法

    Form1主窗体: 复制代码 代码如下: public delegate void SetVisiableHandler();//定义委托类型 private void button1_Click(object sender,EventArgs e)//单击事件,打开子窗体{    Form2 frm = new Form2(new SetVisiableHandler(SetVisiable));    frm.Show();} private void SetVisiable(){    d

  • WinForm实现窗体最大化并遮盖任务栏的方法

    本文实例讲述了WinForm实现窗体最大化并遮盖任务栏的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Windows.Forms; using System.Drawing; namespace CSImageFullScreenSlideShow { public class FullScreen { private FormWindowState winState; private FormBorderStyle brdStyle; p

  • C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法

    本文实例讲述了C#实现WinForm禁止最大化.最小化.双击标题栏.双击图标等操作的方法.分享给大家供大家参考.具体实现方法如下: protected override void WndProc(ref Message m) { if (m.Msg==0x112) { switch ((int) m.WParam) { //禁止双击标题栏关闭窗体 case 0xF063: case 0xF093: m.WParam = IntPtr.Zero; break; //禁止拖拽标题栏还原窗体 case

  • winform实现创建最前端窗体的方法

    本文实例讲述了winform实现创建最前端窗体的方法.分享给大家供大家参考.具体实现方法如下: 一.需求: 1).需要这个窗体始终处于前端而且可用 2).在主窗体打开其他模态窗体的时候,这个Form也要处于活动状态. 注意: 设置了Form的 TopMost 属性 但是在 主窗体打开模态窗体的时候无效 二.解决方案: 复制代码 代码如下: Thread th = new Thread(() => { Application.Run(new FormA()); }); th.Start(); 或者

随机推荐