当前位置:编程学习 > C#/ASP.NET >>

关于窗体间的传值问题,大神戳进来

Load 窗体
public partial class LOAD : Form
    {
        public LOAD()
        {
            InitializeComponent();
            string s1 = textBox1.Text;
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Form tt = new LOAD();
            tt.Owner = this;
            this.Visible = false;
            tt.Show();
            string st = "data source=.;initial catalog=test;uid=sa;password=sa";
            SqlConnection con = new SqlConnection(st);
            con.Open();

            string sqlst = "select * from User_student where User_Name='"+textBox1.Text+ "'";
            SqlDataAdapter da = new SqlDataAdapter(sqlst, con);
            DataSet ds = new DataSet();
            da.Fill(ds);

            con.Close();

            if (ds.Tables[0].Rows.Count == 0)
            {
                MessageBox.Show("用户名错误!");


            }
            else
            {
                if (ds.Tables[0].Rows[0]["Password"].ToString() == textBox2.Text)
                {
                    Form_UI ff = new Form_UI();
                    ff.Show();
                    this.Hide();
                }
                else
                {
                    MessageBox.Show("密码错误!");

                }
            }
        }

        private void LOAD_Load(object sender, EventArgs e)
        {

        }
        public string passText
        {
            get
            {
                return textBox1.Text;
            }
        }

Form_UI窗体
        private void Form1_Load(object sender, EventArgs e)
        {
            label2.Text = ((LOAD)this.Owner).passText;//提示 : 未将对象设置引用到实例!
            
            DataSet ds = BLL.BllServer.GetSourceFromDAL();

            dataGridView1.DataSource = ds.Tables[0];
            
        }

哪里出现问题了啊 --------------------编程问答-------------------- 在线急等,期末大作业,一个学籍管理系统,我想把登录界面的用户名传到学生界面  使学生界面只显示该学生的信息,求指教啊 --------------------编程问答-------------------- 你要不同窗体传值你可以新建个类,然后定义个静态字段接收传送嘛!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace StudentManage
{
    class Formvalue
    {
        public static string textvalue;

        
    }
}
然后调用它
public partial class LOAD : Form
    {
        public LOAD()
        {
            InitializeComponent();
            Formvalue.textvalue = textBox1.Text;
        }
下面你自己想要在哪里用就放到哪里去
 label2.Text=Formvalue.textvalue;
--------------------编程问答--------------------
引用 楼主 u010637035 的回复:
Load 窗体
public partial class LOAD : Form
    {
        public LOAD()
        {
            InitializeComponent();
            string s1 = textBox1.Text;
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Form tt = new LOAD();
            tt.Owner = this;
            this.Visible = false;
            tt.Show();
            string st = "data source=.;initial catalog=test;uid=sa;password=sa";
            SqlConnection con = new SqlConnection(st);
            con.Open();

            string sqlst = "select * from User_student where User_Name='"+textBox1.Text+ "'";
            SqlDataAdapter da = new SqlDataAdapter(sqlst, con);
            DataSet ds = new DataSet();
            da.Fill(ds);

            con.Close();

            if (ds.Tables[0].Rows.Count == 0)
            {
                MessageBox.Show("用户名错误!");


            }
            else
            {
                if (ds.Tables[0].Rows[0]["Password"].ToString() == textBox2.Text)
                {
                    Form_UI ff = new Form_UI();
                    ff.Show();
                    this.Hide();
                }
                else
                {
                    MessageBox.Show("密码错误!");

                }
            }
        }

        private void LOAD_Load(object sender, EventArgs e)
        {

        }
        public string passText
        {
            get
            {
                return textBox1.Text;
            }
        }

Form_UI窗体
        private void Form1_Load(object sender, EventArgs e)
        {
            label2.Text = ((LOAD)this.Owner).passText;//提示 : 未将对象设置引用到实例!
            
            DataSet ds = BLL.BllServer.GetSourceFromDAL();

            dataGridView1.DataSource = ds.Tables[0];
            
        }

哪里出现问题了啊

两个不同的窗体你想用上面那个窗体的方法这样用会报没有实例化对象错误的,你要么把你上面想调用的方法放一个新类再实例化新类调用就可以了 --------------------编程问答-------------------- 未将对象设置引用到实例,报这个错一般都是出现了空引用,断点调试会发现等号后面的内容是空的。

传值的话,需要传的是全局的,比如用户名,密码,我一般会在实体类中定义静态字段。

需要传递的是这个对象的全部信息,比如一个学生的全部信息,那就通过实体类来做媒介来一次传递一个对象。 --------------------编程问答-------------------- 编写一个公共类,就像4L说的的都可以啊。 --------------------编程问答-------------------- 一个比较笨的办法,希望能够帮到你。定义一个全局变量,获取登录的学生姓名,然后再登录成功后,将获取到学生姓名的全局变量的值赋值给画面当中的一个文本框里,然后后台自动调一个查询,就能查到登录学生的信息 --------------------编程问答--------------------

//ParentForm
ChildForm cf = new ChildForm();
            cf.Owner = this;
            cf.ShowDialog();

//ChildForm
ParentForm pf = (ParentForm)this.Owner;
            pf.Init();//Init为ParentForm中的方法


//ParentForm
ChildForm cf = new ChildForm();
            cf.Flag = this;
            cf.Show();
//ChildForm
public ParentForm Flag{ get; set; }

Test.Init();

模态和非模态弹出传值 --------------------编程问答-------------------- 可以建一个你要传值的类,类里面建一个属性, 把参数赋给属性,然后继承那个类, new一个就可以点去那个属性了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,