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

VS C# 在一个界面中,调用另外一个界面的textbox,如何实现?

比如说,我想在Form5的界面下调用Form1中textBox1.Text信息,怎么实现。。
Form5下的代码:
public Form5()
        {   
            InitializeComponent();
            Form1 F = new Form1();
            string sqlstr = "select * from stujiben where sid='"+;(输入Form1中textBox1.Text信息)
求大神帮忙。。 C# 界面 --------------------编程问答-------------------- 最简单的方法是把FORM1里边的textBox1 声明称public的

--------------------编程问答-------------------- Form1里边 public TextBox textBox1=new TextBox();

public Form5()
        {   
            InitializeComponent();
            Form1 F = new Form1();
            string sqlstr = "select * from stujiben where sid='"+F.textBox1.Text+"'; --------------------编程问答--------------------
引用 1 楼 kingknght 的回复:
最简单的方法是把FORM1里边的textBox1 声明称public的
是在textbox1的属性中把modifiers属性由private改为public吗? --------------------编程问答--------------------
引用 3 楼 u010485224 的回复:
Quote: 引用 1 楼 kingknght 的回复:

最简单的方法是把FORM1里边的textBox1 声明称public的
是在textbox1的属性中把modifiers属性由private改为public吗?


对 --------------------编程问答--------------------
引用 4 楼 kingknght 的回复:
Quote: 引用 3 楼 u010485224 的回复:

Quote: 引用 1 楼 kingknght 的回复:

最简单的方法是把FORM1里边的textBox1 声明称public的
是在textbox1的属性中把modifiers属性由private改为public吗?


多谢,这个问题解决了,再有问题我再向你咨询。。 --------------------编程问答--------------------
引用 2 楼 kingknght 的回复:
Form1里边 public TextBox textBox1=new TextBox();

public Form5()
        {   
            InitializeComponent();
            Form1 F = new Form1();
            string sqlstr = "select * from stujiben where sid='"+F.textBox1.Text+"';
出现点问题,当我把代码打上去之后,出现了一个意想不到的错误,Form5的界面上什么信息都没有,只留下空白的textbox...
见图片

我写的两种不同的代码,都出现了同样的错误。
第一种代码:
InitializeComponent();
            Form1 F = new Form1();
            string sqlstr = "select * from stujiben where sid='" + F.textBox1.Text + "'";
            con = new SqlConnection(st);
            adap = new SqlDataAdapter(sqlstr, con);
            SqlCommandBuilder builder = new SqlCommandBuilder(adap);
            adap.UpdateCommand = builder.GetUpdateCommand();
            ds = new DataSet();
            adap.Fill(ds, "stujiben");
            myBind = this.BindingContext[ds, "stujiben"];
            n = myBind.Position;
            this.textBox1.DataBindings.Add(new Binding("Text", ds, "stujiben.sid"));
            this.textBox2.DataBindings.Add(new Binding("Text", ds, "stujiben.name"));
            this.textBox3.DataBindings.Add(new Binding("Text", ds, "stujiben.sex"));
            this.textBox4.DataBindings.Add(new Binding("Text", ds, "stujiben.pep"));
            this.textBox7.DataBindings.Add(new Binding("Text", ds, "stujiben.pol"));
            this.textBox5.DataBindings.Add(new Binding("Text", ds, "stujiben.birt"));
            this.textBox6.DataBindings.Add(new Binding("Text", ds, "stujiben.addr"));
            this.textBox8.DataBindings.Add(new Binding("Text", ds, "stujiben.id"));
            this.textBox9.DataBindings.Add(new Binding("Text", ds, "stujiben.tel"));
            this.textBox10.DataBindings.Add(new Binding("Text", ds, "stujiben.haddr"));
            this.textBox11.DataBindings.Add(new Binding("Text", ds, "stujiben.etim"));
            this.textBox12.DataBindings.Add(new Binding("Text", ds, "stujiben.post"));
            this.textBox13.DataBindings.Add(new Binding("Text", ds, "stujiben.email"));
            this.textBox14.DataBindings.Add(new Binding("Text", ds, "stujiben.col"));
            this.textBox15.DataBindings.Add(new Binding("Text", ds, "stujiben.mai"));
            this.textBox16.DataBindings.Add(new Binding("Text", ds, "stujiben.xq"));
            this.textBox17.DataBindings.Add(new Binding("Text", ds, "stujiben.xz"));
            this.textBox18.DataBindings.Add(new Binding("Text", ds, "stujiben.cln"));
            this.textBox19.DataBindings.Add(new Binding("Text", ds, "stujiben.con"));
            this.textBox20.DataBindings.Add(new Binding("Text", ds, "stujiben.oth"));
   private SqlDataAdapter adap;
        private DataSet ds;
private BindingManagerBase myBind;
        private int n;
第二种代码:
 public Form5()
        {
            InitializeComponent();
            string st = @"Data Source=(localdb)\Projects;Initial Catalog=stumane";
            SqlConnection con = new SqlConnection(st);
            con.Open();
         Form1 F = new Form1();
         string sqlstr = "select * from stujiben where sid='" + F.textBox1.Text + "'";    
            SqlCommand com=new SqlCommand(sqlstr,con);
            SqlDataReader sdr=com.ExecuteReader();
            if (sdr.Read())
            {
                this.textBox1.Text = Convert.ToString(sdr["sid"]);
                this.textBox2.Text = Convert.ToString(sdr["name"]);
                this.textBox3.Text = Convert.ToString(sdr["sex"]);
                this.textBox4.Text = Convert.ToString(sdr["pep"]);
                this.textBox5.Text = Convert.ToString(sdr["sid"]);
                this.textBox6.Text = Convert.ToString(sdr["sid"]);
                this.textBox7.Text = Convert.ToString(sdr["sid"]);
                this.textBox8.Text = Convert.ToString(sdr["sid"]);
                this.textBox9.Text = Convert.ToString(sdr["sid"]);
                this.textBox10.Text = Convert.ToString(sdr["sid"]);
                this.textBox11.Text = Convert.ToString(sdr["sid"]); ;
                this.textBox12.Text = Convert.ToString(sdr["sid"]);
                this.textBox13.Text = Convert.ToString(sdr["sid"]);
                this.textBox14.Text = Convert.ToString(sdr["sid"]);
                this.textBox15.Text = Convert.ToString(sdr["sid"]);
                this.textBox16.Text = Convert.ToString(sdr["sid"]);
                this.textBox17.Text = Convert.ToString(sdr["sid"]);
                this.textBox18.Text = Convert.ToString(sdr["sid"]); ;
                this.textBox19.Text = Convert.ToString(sdr["sid"]);
                this.textBox20.Text = Convert.ToString(sdr["sid"]);
            }
sdr.Close();
con.Close();



        }
问题就出现在了
“ Form1 F = new Form1();
         string sqlstr = "select * from stujiben where sid='" + F.textBox1.Text + "'";   ”
这两句上面了。。
不知道怎样改正。 --------------------编程问答-------------------- 你可以定义一个专门的类的某字段去存textBox1的值啊!这样你就可以直接拿那个类的某属性的值就好了 --------------------编程问答--------------------
引用 6 楼 u010485224 的回复:
Quote: 引用 2 楼 kingknght 的回复:

Form1里边 public TextBox textBox1=new TextBox();

public Form5()
        {   
            InitializeComponent();
            Form1 F = new Form1();
            string sqlstr = "select * from stujiben where sid='"+F.textBox1.Text+"';
出现点问题,当我把代码打上去之后,出现了一个意想不到的错误,Form5的界面上什么信息都没有,只留下空白的textbox...
见图片

我写的两种不同的代码,都出现了同样的错误。
第一种代码:
InitializeComponent();
            Form1 F = new Form1();
            string sqlstr = "select * from stujiben where sid='" + F.textBox1.Text + "'";
            con = new SqlConnection(st);
            adap = new SqlDataAdapter(sqlstr, con);
            SqlCommandBuilder builder = new SqlCommandBuilder(adap);
            adap.UpdateCommand = builder.GetUpdateCommand();
            ds = new DataSet();
            adap.Fill(ds, "stujiben");
            myBind = this.BindingContext[ds, "stujiben"];
            n = myBind.Position;
            this.textBox1.DataBindings.Add(new Binding("Text", ds, "stujiben.sid"));
            this.textBox2.DataBindings.Add(new Binding("Text", ds, "stujiben.name"));
            this.textBox3.DataBindings.Add(new Binding("Text", ds, "stujiben.sex"));
            this.textBox4.DataBindings.Add(new Binding("Text", ds, "stujiben.pep"));
            this.textBox7.DataBindings.Add(new Binding("Text", ds, "stujiben.pol"));
            this.textBox5.DataBindings.Add(new Binding("Text", ds, "stujiben.birt"));
            this.textBox6.DataBindings.Add(new Binding("Text", ds, "stujiben.addr"));
            this.textBox8.DataBindings.Add(new Binding("Text", ds, "stujiben.id"));
            this.textBox9.DataBindings.Add(new Binding("Text", ds, "stujiben.tel"));
            this.textBox10.DataBindings.Add(new Binding("Text", ds, "stujiben.haddr"));
            this.textBox11.DataBindings.Add(new Binding("Text", ds, "stujiben.etim"));
            this.textBox12.DataBindings.Add(new Binding("Text", ds, "stujiben.post"));
            this.textBox13.DataBindings.Add(new Binding("Text", ds, "stujiben.email"));
            this.textBox14.DataBindings.Add(new Binding("Text", ds, "stujiben.col"));
            this.textBox15.DataBindings.Add(new Binding("Text", ds, "stujiben.mai"));
            this.textBox16.DataBindings.Add(new Binding("Text", ds, "stujiben.xq"));
            this.textBox17.DataBindings.Add(new Binding("Text", ds, "stujiben.xz"));
            this.textBox18.DataBindings.Add(new Binding("Text", ds, "stujiben.cln"));
            this.textBox19.DataBindings.Add(new Binding("Text", ds, "stujiben.con"));
            this.textBox20.DataBindings.Add(new Binding("Text", ds, "stujiben.oth"));
   private SqlDataAdapter adap;
        private DataSet ds;
private BindingManagerBase myBind;
        private int n;
第二种代码:
 public Form5()
        {
            InitializeComponent();
            string st = @"Data Source=(localdb)\Projects;Initial Catalog=stumane";
            SqlConnection con = new SqlConnection(st);
            con.Open();
         Form1 F = new Form1();
         string sqlstr = "select * from stujiben where sid='" + F.textBox1.Text + "'";    
            SqlCommand com=new SqlCommand(sqlstr,con);
            SqlDataReader sdr=com.ExecuteReader();
            if (sdr.Read())
            {
                this.textBox1.Text = Convert.ToString(sdr["sid"]);
                this.textBox2.Text = Convert.ToString(sdr["name"]);
                this.textBox3.Text = Convert.ToString(sdr["sex"]);
                this.textBox4.Text = Convert.ToString(sdr["pep"]);
                this.textBox5.Text = Convert.ToString(sdr["sid"]);
                this.textBox6.Text = Convert.ToString(sdr["sid"]);
                this.textBox7.Text = Convert.ToString(sdr["sid"]);
                this.textBox8.Text = Convert.ToString(sdr["sid"]);
                this.textBox9.Text = Convert.ToString(sdr["sid"]);
                this.textBox10.Text = Convert.ToString(sdr["sid"]);
                this.textBox11.Text = Convert.ToString(sdr["sid"]); ;
                this.textBox12.Text = Convert.ToString(sdr["sid"]);
                this.textBox13.Text = Convert.ToString(sdr["sid"]);
                this.textBox14.Text = Convert.ToString(sdr["sid"]);
                this.textBox15.Text = Convert.ToString(sdr["sid"]);
                this.textBox16.Text = Convert.ToString(sdr["sid"]);
                this.textBox17.Text = Convert.ToString(sdr["sid"]);
                this.textBox18.Text = Convert.ToString(sdr["sid"]); ;
                this.textBox19.Text = Convert.ToString(sdr["sid"]);
                this.textBox20.Text = Convert.ToString(sdr["sid"]);
            }
sdr.Close();
con.Close();



        }
问题就出现在了
“ Form1 F = new Form1();
         string sqlstr = "select * from stujiben where sid='" + F.textBox1.Text + "'";   ”
这两句上面了。。
不知道怎样改正。


TextBox.Text是String类型,你的SID是什么类型,如果你是想模糊查询应该写sid like '"+F.textBox1.Text +"' --------------------编程问答-------------------- 上面错了不好意思是 sid like '%"+F.textBox1.Text +"%'  --------------------编程问答-------------------- 你是原本查询的到改了那两句后查不到了? 如果不是,那就是你的查询语句有问题 或者 你数据库中没数据 --------------------编程问答--------------------
引用 10 楼 e65363581 的回复:
你是原本查询的到改了那两句后查不到了? 如果不是,那就是你的查询语句有问题 或者 你数据库中没数据
如果没有“where sid='" + F.textBox1.Text + "'";”这句,我本是可以显示出来数据的,但是对应的信息不正确,比如说我想查学号为09104302的学生的信息,结果显示出来的信息居然是学号0910430101的学生信息。我这两天一直在纠结这个问题,现在唯一知道的就是我的F.textBox1.Text信息居然是空的(数据库里面是有信息的),我加了一些代码之后检测了一下,出现了如下情况:
新加的代码为:
if (sdr.Read())
                {
                    。。。。。。。。。(省略)
                }
            }
            else
            {
                MessageBox.Show("没有记录");
            }
运行之后,真的就出现了“没有记录”的提示信息。
这我就更疑惑不解了,我的F.textBox1.Text是登录信息,在初始状态下是没有记录的,但是我在向其中加入我的登录信息了,难道我要在textBox1的属性中改正吗?

--------------------编程问答--------------------
引用 7 楼 zhoumeiwen 的回复:
你可以定义一个专门的类的某字段去存textBox1的值啊!这样你就可以直接拿那个类的某属性的值就好了
谢谢,你的这句话对我启发很大,我现在就是用这种方法去试试看。。 --------------------编程问答--------------------
引用 7 楼 zhoumeiwen 的回复:
你可以定义一个专门的类的某字段去存textBox1的值啊!这样你就可以直接拿那个类的某属性的值就好了
求说的具体一点,最好举个实例。 --------------------编程问答--------------------
引用 13 楼 u010485224 的回复:
Quote: 引用 7 楼 zhoumeiwen 的回复:

你可以定义一个专门的类的某字段去存textBox1的值啊!这样你就可以直接拿那个类的某属性的值就好了
求说的具体一点,最好举个实例。


他的意思是定义一个公共类,里边定义公共变量 --------------------编程问答-------------------- 你把Form1的代码贴上来看看 --------------------编程问答-------------------- 才发现,你是不是把上面那些代码都写到Form5的构造函数里了? --------------------编程问答--------------------
引用 15 楼 kingknght 的回复:
你把Form1的代码贴上来看看
Form1代码如下:
namespace bysj
{
    public partial class Form1 : Form
    {
        public static bool b = false;
        
        public class Ssid { 
        
        
        
        }

        public Form1()
        {
            InitializeComponent();
           

        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {     
            
            String st = @"Data Source=(localdb)\Projects;Initial Catalog=stumane";
            SqlConnection conn= new SqlConnection(st);
            conn.Open();
            String strsql = "select * from stujiben where sid='" + textBox1.Text + "'and code='" + textBox2.Text + "' ";
            SqlCommand da = new SqlCommand(strsql, conn);
            SqlDataReader myread = da.ExecuteReader();

            if (myread.Read())
            {
                MessageBox.Show(textBox1.Text + "用户通过了!,你不是管理员");
                string sid = myread.GetString(0);
                myread.Close();
                b = true;
                this.Hide();
                Form2 F = new Form2();
                F.Show();
            }
            else
             MessageBox.Show( "用户昵称或密码错误,请重新登录");


            
        }
关键代码就这些。。 --------------------编程问答--------------------
引用 16 楼 kingknght 的回复:
才发现,你是不是把上面那些代码都写到Form5的构造函数里了?
算是吧。。。有问题吗? --------------------编程问答--------------------
引用 9 楼 kingknght 的回复:
上面错了不好意思是 sid like '%"+F.textBox1.Text +"%' 
按照你的方法,我把代码改为了你说的那样,运行之后,结果是textbox并没有出现空白信息,而是信息输出错误,也就是说我想查询学号为0910430102的学生信息(在数据库的表中为第二行),结果显示的确实0910430101的学生信息(在数据库的表中为第一行)。 --------------------编程问答--------------------
引用 19 楼 u010485224 的回复:
Quote: 引用 9 楼 kingknght 的回复:

上面错了不好意思是 sid like '%"+F.textBox1.Text +"%' 
按照你的方法,我把代码改为了你说的那样,运行之后,结果是textbox并没有出现空白信息,而是信息输出错误,也就是说我想查询学号为0910430102的学生信息(在数据库的表中为第二行),结果显示的确实0910430101的学生信息(在数据库的表中为第一行)。


输入完整的学号看看,改成这样是模糊查询了 --------------------编程问答--------------------


引用 18 楼 u010485224 的回复:
Quote: 引用 16 楼 kingknght 的回复:

才发现,你是不是把上面那些代码都写到Form5的构造函数里了?
算是吧。。。有问题吗?


放到LOAD事件里试试 --------------------编程问答--------------------
引用 21 楼 kingknght 的回复:
Quote: 引用 18 楼 u010485224 的回复:

Quote: 引用 16 楼 kingknght 的回复:

才发现,你是不是把上面那些代码都写到Form5的构造函数里了?
算是吧。。。有问题吗?


放到LOAD事件里试试
放了,可惜还是不行。。到目前为止,我觉得我的程序的问题的关键点就是如何正确地在C#中编写SQL server语言。。比如说上面提到的,我用模糊查询可以把信息显示出来,即使他的信息是错误的,而换成精确查询却什么信息都没有了,所以,我觉得还是SQL server语言问题。。。好蛋疼啊。。 --------------------编程问答-------------------- 静态类,静态字段 可以用于窗体间的传值
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,