C# 类 传值

wwjlee123 2014-02-17 03:58:25
C# 创建了一个类 里面有这句代码

static string strConn = "Data Source= " + Form4.server + ";User ID=" + Form4.uname + ";Password=" + Form4.pword + "";

Form4.server、 Form4.uname、Form4.pword这三个值是窗体4的三个textbox的值
为什么我运行的时候发现这三个值传不到类里面去?


大神来啊,我只个问题已经是第三次发帖了,浪费我60分,不要让我绝望啊!
...全文
402 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbaldy 2014-02-18
  • 打赏
  • 举报
回复
这种问题你自己调试就能解决,否则就别编程了
BenBenBears 2014-02-18
  • 打赏
  • 举报
回复
在你其他帖子回复你了。
jrl5365 2014-02-18
  • 打赏
  • 举报
回复
跟踪看一下,txt的值传得对不对
LanPst 2014-02-17
  • 打赏
  • 举报
回复
引用 18 楼 wwjlee123 的回复:
[quote=引用 9 楼 sunlyk 的回复:] [quote=引用 6 楼 wwjlee123 的回复:] form4 代码: uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim();
..... 静态属性在一开始就应该初始化了.此时Form4里的三个参数还没有初始化,调用不到.你可以设置断点看看,估计是空的. 请写到方法里,然后调用方法: public void UpdateParameter() { Form4.strConn = "Data Source= " + form .server+ ";User ID=" + form .uname+ ";Password=" + form .pword+ ""; }[/quote] 类的代码:namespace WindowsFormsApplication3 { class DataBase { static string strConn = "Data Source= " + Form4.server + ";User ID=" + Form4.uname.ToString() + ";Password=" + Form4.pword.ToString() + ""; //"Data Source=ORCL;User ID=zlhis;Password=his"; static OracleConnection sqlcon=new OracleConnection (strConn); public int getExecuteNonQuery(string strSql)//执行SQL语句 { OracleConnection conn = getSqlCon(); conn.Open(); OracleCommand cmd = new OracleCommand(strSql, conn); int i = cmd.ExecuteNonQuery();// conn.Close(); return i; } public OracleConnection getSqlCon()//连接数据库 { return sqlcon; } } } 我贴了form4和类的代码,帮我看看你说的方法怎么写的,谢谢了[/quote] 找到一篇Oricle数据库通用类的文章: http://blog.csdn.net/wxg22526451/article/details/1911716 看看他是怎么写的吧.道理一样的.
Wang-Yucai 2014-02-17
  • 打赏
  • 举报
回复
引用 17 楼 wangyucai0915 的回复:
你是想将Form4中的值传入一个新类中么?
看你的写法应该是在新类中访问Form4的控件值吧。 那我想你是不是在新类中这样写的吧:
Form4 form4 = new Form4(); form4.server;
如果你是这样写的,那么是肯定获取不到值的。因为这样相当于重新声明了一个新的Form4实例了。 如果你必须要在新类中访问form4,你可以将Form4改为public。
  • 打赏
  • 举报
回复
建议先多动动手
  • 打赏
  • 举报
回复
和上面版主说的一样 VS调试 打断点 跟踪 最直接 不像你在这发帖 回头的猜答案 你在那看答案 而不是自己为了找答案而去研究
wwjlee123 2014-02-17
  • 打赏
  • 举报
回复
引用 9 楼 sunlyk 的回复:
[quote=引用 6 楼 wwjlee123 的回复:] form4 代码: uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim();
..... 静态属性在一开始就应该初始化了.此时Form4里的三个参数还没有初始化,调用不到.你可以设置断点看看,估计是空的. 请写到方法里,然后调用方法: public void UpdateParameter() { Form4.strConn = "Data Source= " + form .server+ ";User ID=" + form .uname+ ";Password=" + form .pword+ ""; }[/quote] 类的代码:namespace WindowsFormsApplication3 { class DataBase { static string strConn = "Data Source= " + Form4.server + ";User ID=" + Form4.uname.ToString() + ";Password=" + Form4.pword.ToString() + ""; //"Data Source=ORCL;User ID=zlhis;Password=his"; static OracleConnection sqlcon=new OracleConnection (strConn); public int getExecuteNonQuery(string strSql)//执行SQL语句 { OracleConnection conn = getSqlCon(); conn.Open(); OracleCommand cmd = new OracleCommand(strSql, conn); int i = cmd.ExecuteNonQuery();// conn.Close(); return i; } public OracleConnection getSqlCon()//连接数据库 { return sqlcon; } } } 我贴了form4和类的代码,帮我看看你说的方法怎么写的,谢谢了
Wang-Yucai 2014-02-17
  • 打赏
  • 举报
回复
你是想将Form4中的值传入一个新类中么?
wwjlee123 2014-02-17
  • 打赏
  • 举报
回复
引用 11 楼 junjun0509 的回复:
[quote=引用 8 楼 wwjlee123 的回复:] [quote=引用 2 楼 CMIC 的回复:] Form4代码也贴出来
贴出来了[/quote] 代码贴出来了?在哪里啊?没看见。 如果你的Form4.server、 Form4.uname、Form4.pword是Form4类的静态字段,那怎么初始化的,哪里有赋值,贴出来看看嘛。[/quote] 贴了代码,你之前的说法加text行不通啊。
被吃了的狗 2014-02-17
  • 打赏
  • 举报
回复
引用 13 楼 wwjlee123 的回复:
[quote=引用 12 楼 sunlyk 的回复:] [quote=引用 11 楼 junjun0509 的回复:] [quote=引用 8 楼 wwjlee123 的回复:] [quote=引用 2 楼 CMIC 的回复:] Form4代码也贴出来
贴出来了[/quote] 代码贴出来了?在哪里啊?没看见。 如果你的Form4.server、 Form4.uname、Form4.pword是Form4类的静态字段,那怎么初始化的,哪里有赋值,贴出来看看嘛。[/quote] 在#6: form4 代码: uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim(); 1 猜测三个变量是静态的,因为可以Form4.xxx地方法写 2 这3句赋值肯定是在方法里,而不是初始化. 3 strConn 初始化的时候.三个变量还没有赋值,三个变量赋值之后strConn 又没有再更新.直接调用strConn让你感觉传不进去.请重新赋值吧.参考#9.[/quote] namespace WindowsFormsApplication3 { public partial class Form4 : Form { public static string uname; public static string pword; public static string server; public Form4() { InitializeComponent(); } private void Form4_Load(object sender, EventArgs e) { this.comboBox1.Items.AddRange(new string[] { "ORCL", "TXYY" }); this.comboBox1.SelectedIndex = 0; } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text.Trim() != "" && textBox2.Text.Trim() != "" && comboBox1.Text.Trim() != "") { uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim(); OracleConnection conn = new OracleConnection(); //数据库连接 conn.ConnectionString = "Data Source= " + server + ";User ID=" + uname + ";Password=" + pword + ""; conn.Open(); 你说的初始化怎么写的?[/quote] 初始化是说在声明静态变量的时候赋初值。 你不是说你的连接语句啊是另一个类里的吗,应该是放在某方法里的吧? 那就在你给这几个变量赋值后,创建那个类对象,call那个方法就好了啊。这样怎么会传不过去。 没传过去,唯一的原因,就像楼上说的,你是在赋值前call的。
LanPst 2014-02-17
  • 打赏
  • 举报
回复
引用 13 楼 wwjlee123 的回复:
[quote=引用 12 楼 sunlyk 的回复:] [quote=引用 11 楼 junjun0509 的回复:] [quote=引用 8 楼 wwjlee123 的回复:] [quote=引用 2 楼 CMIC 的回复:] Form4代码也贴出来
贴出来了[/quote] 代码贴出来了?在哪里啊?没看见。 如果你的Form4.server、 Form4.uname、Form4.pword是Form4类的静态字段,那怎么初始化的,哪里有赋值,贴出来看看嘛。[/quote] 在#6: form4 代码: uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim(); 1 猜测三个变量是静态的,因为可以Form4.xxx地方法写 2 这3句赋值肯定是在方法里,而不是初始化. 3 strConn 初始化的时候.三个变量还没有赋值,三个变量赋值之后strConn 又没有再更新.直接调用strConn让你感觉传不进去.请重新赋值吧.参考#9.[/quote] namespace WindowsFormsApplication3 { public partial class Form4 : Form { public static string uname; public static string pword; public static string server; public Form4() { InitializeComponent(); } private void Form4_Load(object sender, EventArgs e) { this.comboBox1.Items.AddRange(new string[] { "ORCL", "TXYY" }); this.comboBox1.SelectedIndex = 0; } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text.Trim() != "" && textBox2.Text.Trim() != "" && comboBox1.Text.Trim() != "") { uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim(); OracleConnection conn = new OracleConnection(); //数据库连接 conn.ConnectionString = "Data Source= " + server + ";User ID=" + uname + ";Password=" + pword + ""; conn.Open(); 你说的初始化怎么写的?[/quote] 这三个变量一开始都不知道.所以设置Empty,其他两个其他以此类推 public static string uname=strint.Empty;
wwjlee123 2014-02-17
  • 打赏
  • 举报
回复
引用 12 楼 sunlyk 的回复:
[quote=引用 11 楼 junjun0509 的回复:] [quote=引用 8 楼 wwjlee123 的回复:] [quote=引用 2 楼 CMIC 的回复:] Form4代码也贴出来
贴出来了[/quote] 代码贴出来了?在哪里啊?没看见。 如果你的Form4.server、 Form4.uname、Form4.pword是Form4类的静态字段,那怎么初始化的,哪里有赋值,贴出来看看嘛。[/quote] 在#6: form4 代码: uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim(); 1 猜测三个变量是静态的,因为可以Form4.xxx地方法写 2 这3句赋值肯定是在方法里,而不是初始化. 3 strConn 初始化的时候.三个变量还没有赋值,三个变量赋值之后strConn 又没有再更新.直接调用strConn让你感觉传不进去.请重新赋值吧.参考#9.[/quote] namespace WindowsFormsApplication3 { public partial class Form4 : Form { public static string uname; public static string pword; public static string server; public Form4() { InitializeComponent(); } private void Form4_Load(object sender, EventArgs e) { this.comboBox1.Items.AddRange(new string[] { "ORCL", "TXYY" }); this.comboBox1.SelectedIndex = 0; } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text.Trim() != "" && textBox2.Text.Trim() != "" && comboBox1.Text.Trim() != "") { uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim(); OracleConnection conn = new OracleConnection(); //数据库连接 conn.ConnectionString = "Data Source= " + server + ";User ID=" + uname + ";Password=" + pword + ""; conn.Open(); 你说的初始化怎么写的?
LanPst 2014-02-17
  • 打赏
  • 举报
回复
引用 11 楼 junjun0509 的回复:
[quote=引用 8 楼 wwjlee123 的回复:] [quote=引用 2 楼 CMIC 的回复:] Form4代码也贴出来
贴出来了[/quote] 代码贴出来了?在哪里啊?没看见。 如果你的Form4.server、 Form4.uname、Form4.pword是Form4类的静态字段,那怎么初始化的,哪里有赋值,贴出来看看嘛。[/quote] 在#6: form4 代码: uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim(); 1 猜测三个变量是静态的,因为可以Form4.xxx地方法写 2 这3句赋值肯定是在方法里,而不是初始化. 3 strConn 初始化的时候.三个变量还没有赋值,三个变量赋值之后strConn 又没有再更新.直接调用strConn让你感觉传不进去.请重新赋值吧.参考#9.
被吃了的狗 2014-02-17
  • 打赏
  • 举报
回复
引用 8 楼 wwjlee123 的回复:
[quote=引用 2 楼 CMIC 的回复:] Form4代码也贴出来
贴出来了[/quote] 代码贴出来了?在哪里啊?没看见。 如果你的Form4.server、 Form4.uname、Form4.pword是Form4类的静态字段,那怎么初始化的,哪里有赋值,贴出来看看嘛。
被吃了的狗 2014-02-17
  • 打赏
  • 举报
回复
1.你的Form4是对象吗,看起来像是类名; 2.若Form4是窗体对象,那Form4.后面那些是TextBox的名字吗? 如果是,那取值就应该是Form4.TextBoxName.Text。
LanPst 2014-02-17
  • 打赏
  • 举报
回复
引用 6 楼 wwjlee123 的回复:
form4 代码: uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim();
..... 静态属性在一开始就应该初始化了.此时Form4里的三个参数还没有初始化,调用不到.你可以设置断点看看,估计是空的. 请写到方法里,然后调用方法: public void UpdateParameter() { Form4.strConn = "Data Source= " + form .server+ ";User ID=" + form .uname+ ";Password=" + form .pword+ ""; }
wwjlee123 2014-02-17
  • 打赏
  • 举报
回复
引用 2 楼 CMIC 的回复:
Form4代码也贴出来
贴出来了
wwjlee123 2014-02-17
  • 打赏
  • 举报
回复
引用 1 楼 sunlyk 的回复:
textBox的名字是什么? 如果是server,那么直接取 static string strConn = "Data Source= " + server.Text + ";User ID=" + uname.Text+ ";Password=" + pword.Text + ""; 你的命名太不懂了吧 一般tx_Server,tx_UserName等等
贴出来了
wwjlee123 2014-02-17
  • 打赏
  • 举报
回复
form4 代码: uname = textBox1.Text.Trim(); pword = textBox2.Text.Trim(); server = comboBox1.Text.Trim();
加载更多回复(5)

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧