图片 1

C#中不同窗口之间传递值的两种方法

TextBox tb = this.Controls[“a” + i] as TextBox; if (tb != null) { }

      
 在.net中分歧窗口之间传值有很三种分歧的不二等秘书诀,这里给出三种相比较常用的不二秘诀:

引自msdn

WinForm 中不是选择的 id 作唯意气风发标记,而是用 name,如上 “a” + i 便是相应的
name,在这里处 “a” + i 忽视大小写。

      
 项目中有八个窗体,Form1和Form2,要兑现的效果与利益是点击Form1中的Button1按键完毕TextBox1和TextBox第22中学的值相加,然后把那几个相加的值传递给Form第22中学的TextBox1,并在TextBox1中显示出那么些和值。

如若未处管事人件,则会将它发送到操作系统举办暗中认可管理。将 Handled 设置为 true,以打消KeyPress 事件。

图片 1

上边包车型大巴示范成立三个 TextBox
控件。keypressed 方法应用 KeyChar
属性检查是不是按了 Enter 键。借使按了 Enter 键,则 Handled 属性设置为 true,表示那事件已管理。

        方法风华正茂:通过为窗体类写属性来传递值

using System;
using System.Windows.Forms;

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

public class Form1: Form
{
    public Form1()
    {
        // Create a TextBox control.
        TextBox tb = new TextBox();
        this.Controls.Add(tb);
        tb.KeyPress += new KeyPressEventHandler(keypressed);
    }

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

    private void keypressed(Object o, KeyPressEventArgs e)
    {
        // The keypressed method uses the KeyChar property to check
        // whether the ENTER key is pressed.

        public string ST本田UR-V//为窗体Form2定义的属性
        {
            get { return str; }//读
            set//写
            {
                str = value;
            }
        }

        // If the ENTER key is pressed, the Handled property is set to
true,
        // to indicate the event is handled.
        if (e.KeyChar == (char)Keys.Return)
        {
            e.Handled = true;
        }
    }

                (2),在Form第22中学把读到的特性赋给Form第22中学的TextBox1文本框

    public static void Main()
    {
        Application.Run(new Form1());
    }
}

                        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))
            {
                sum = a + b;
                frm2.STR = sum.ToString();
                frm2.ShowDialog();
            }
            else
            {
                frm2.ST宝马7系 = “输入的为非数字型字符串”;
                frm2.ShowDialog();
            }
        }

                 水到渠成,在你的电话机上运营下,是否打响了?

        方法二:通过为窗体类写布局函数来传值

              
 (1),在被传递值的窗体(这里是Form2)类里面写其布局函数,注意原来的构造函数不要纠正它,大家在代码块里面一向投入以下代码就能够。

                        string str1, str2;//定义多个个人变量

        public Form2(Text博克斯 tb1, TextBox tb2卡塔尔//定义构造函数,tb1和tb2对应Form1中的TextBox1和TextBox2,以便传值
        {
            InitializeComponent(State of Qatar;//必须求抬高。。。

            str1 = tb1.Text.ToString(卡塔尔(قطر‎;//取文本框值
            str2 = tb2.Text.ToString();
            int a, b, sum;
            if (int.TryParse(str1, out a卡塔尔国 && int.TryParse(str2, out b卡塔尔卡塔尔(قطر‎//检查文本框里面包车型大巴值是不是可转变为int型,重临值为bool型,假如为真,则转向为整型a和b
            {
                int sum = a + b;
                textBox1.Text = Convert.ToString(sum);
            }
            else
            {
                text博克斯1.Text = “输入的为非数字型字符串”;
            }
        }

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

                        private void button1_Click(object sender, EventArgs e)

        {   
            Form2 frm2 = new Form2(textBox1, textBox2);
            frm2.ShowDialog();
        }

                到这里,第三种办法也做到了,是还是不是感到极粗略?

发表评论

电子邮件地址不会被公开。 必填项已用*标注