c#winfrom中在from1中设置一些变量,怎么传递给from2

如图示,点击开始后出现from2,怎么使from2利用此中设置的数据,进行窗体的初始化呢?请大神详细解答~~~... 如图示,点击开始后出现from2,怎么使from2利用此中设置的数据,进行窗体的初始化呢?请大神详细解答~~~ 展开
 我来答
阿凡我灬
推荐于2016-06-11 · TA获得超过897个赞
知道小有建树答主
回答量:932
采纳率:0%
帮助的人:550万
展开全部

将这些控件声明为public就可以通过不同的窗体共享这些控件的属性了。具体方法如下:(以form2获取form1中的textBox1的Text属性为例)

 

打开Form1.Designer.cs

 

 

找到要共享属性的控件,我们这里是textBox1,所以应找到对应的这行代码:

 

将关键字private改为public  (这点很重要的)

 

然后在Form2中创建Form1的对象,并访问对象的textBox1属性的Text属性,就成功获取了Form1中控件的属性:

 

 

以上方法简单但是微软不推荐这种方法,因为这降低了安全性,微软推荐使用窗体构造函数参数传递的方法在不同窗体之间传递控件属性数据。我这有份文档,有点年头了,你凑合着看看吧。不懂再问我。(售价3)

小妻丐
2014-12-12 · TA获得超过112个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:169万
展开全部
把from1中按钮的名称值传给from2的一个单例,和你想要的结果一样可以参考下,
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            MyShow(button1);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            MyShow(button2);
        }
        private void button4_Click(object sender, EventArgs e)
        {
            MyShow(button3);
        }
        private void button3_Click(object sender, EventArgs e)
        {
            MyShow(button4);
        }
        public void MyShow(Button but) {
            Song s = Song.Abc();
            s.Getname(but.Text);这个地址传值根据需要可以定义多个参数    
         s.Show();
        }
    }


from2 的页面第一个方法,通过参数传值,根据你想要的传的个数定义方法,这是一个单例模式做的,重复点击也不对出现多个from2

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Song : Form
    {
        public Song()
        {
            InitializeComponent();
        }
        private void Song_Load(object sender, EventArgs e)
        {
           
        }
        public void Getname(string name)
        {
            label1.Text = name;这边接受穿的值就可以了,根据需要定义参数   
      }
 
        private static Song song;
        public static Song Abc()
        {
            if (song == null)
            {
                song = new Song();
            }
           
                return song;
        }
        private void Song_FormClosing(object sender, FormClosingEventArgs e)
        {
            song = null;
        }
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-12
展开全部

新手吧,方法有很多,可以让from2直接带参数,不过这个不好,可以实例化传值,这个估计你还没有学。

那么就用使用一个带参数的方法吧。

在from2写一个方法。

 public  void Getinfo(string type, int number, int selectnumber,string resolution,int time)
        {
            //代码初始化 
        }

在from1中开始 点击事件 里面写

 Form2 fm2 = new Form2();
 fm2.Getinfo(type,number,selectnumber,resolution,time); 
 fm2.ShowDialog();

上面的参数自己写代码获取。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
望穿秋水待伊人
推荐于2018-05-09 · TA获得超过644个赞
知道小有建树答主
回答量:708
采纳率:100%
帮助的人:801万
展开全部
给form2添加一个带参数的构造函数, 直接 把form1当作一个变量传递给form2,这样在form2里就能跟在form1里一样调用 所有东西。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xtfnpgy
2014-12-12 · TA获得超过1784个赞
知道大有可为答主
回答量:1989
采纳率:76%
帮助的人:1108万
展开全部
form2定义变量时要定义全局静态变量就可以了
例如:
public static string str;

开始按钮代码:
Form2 f=new Form2();
f.str=this.combobox1.Text; //或者form1的变量
f.Show();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式