首页上一页 1 下一页尾页 1 条记录 1/1页
按书上做的出错{ 未将对象引用设置到对象的实例。 }
发表在C#图书答疑
2009-06-22
是否精华
是
否
版块置顶:
是
否
<<c#从入门到精通>>第526页代码是:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace PWMS
{
public partial class F_Login : Form
{
DataClass.MyMeans MyClass = new PWMS.DataClass.MyMeans();
public F_Login()
{
InitializeComponent();
}
private void butClose_Click(object sender, EventArgs e)
{
if ((int)(this.Tag) == 1)
{
DataClass.MyMeans.Login_n = 3;
Application.Exit();
}
else
if ((int)(this.Tag) == 2)
this.Close();
}
private void butLogin_Click(object sender, EventArgs e)
{
if(textName.Text!="" & textPass.Text !="")
{
//用自定义getcom()在tb_Login数据表中查找是否有当前登录用户
SqlDataReader temDR = MyClass.getcom("Select*from tb_Login where Name ='"+textName.Text.Trim()+"'and pass='"+textPass.Text.Trim()+"'");
bool ifcom = temDR.Read();//用read()方法读取数据
// 当有记录表示
if(ifcom)
{
//用户名记录到公共变量中
DataClass.MyMeans.Login_Name = textName.Text.Trim();
//获取当前操作员编号
DataClass.MyMeans.Login_ID = temDR.GetString(0);
DataClass.MyMeans.My_con.Close();
DataClass.MyMeans.My_con.Dispose();
//记录当前窗体的Tag属性值
[font color=#FF0000]DataClass.MyMeans.Login_n = (int)(this.Tag);//这里出错可是我看了一下和书上一样
[/font]
this.Close();
}
else
{
MessageBox.Show("密码或用户名错误","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
textName.Text= "";
textPass.Text = "";
}
}
else
{
MessageBox.Show("请将登录信息填写完整!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
//按enter时移动鼠标焦点
private void textName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
textPass.Focus();
}
private void textPass_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
butLogin.Focus();
}
}
}
出错的是: DataClass.MyMeans.Login_n = (int)(this.Tag);说什么这句:{"未将对象引用设置到对象的实例。"}
可是我和书上的一样,而且在MyMeans公共类中也是定义了静态: public static int Login_n =0;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace PWMS
{
public partial class F_Login : Form
{
DataClass.MyMeans MyClass = new PWMS.DataClass.MyMeans();
public F_Login()
{
InitializeComponent();
}
private void butClose_Click(object sender, EventArgs e)
{
if ((int)(this.Tag) == 1)
{
DataClass.MyMeans.Login_n = 3;
Application.Exit();
}
else
if ((int)(this.Tag) == 2)
this.Close();
}
private void butLogin_Click(object sender, EventArgs e)
{
if(textName.Text!="" & textPass.Text !="")
{
//用自定义getcom()在tb_Login数据表中查找是否有当前登录用户
SqlDataReader temDR = MyClass.getcom("Select*from tb_Login where Name ='"+textName.Text.Trim()+"'and pass='"+textPass.Text.Trim()+"'");
bool ifcom = temDR.Read();//用read()方法读取数据
// 当有记录表示
if(ifcom)
{
//用户名记录到公共变量中
DataClass.MyMeans.Login_Name = textName.Text.Trim();
//获取当前操作员编号
DataClass.MyMeans.Login_ID = temDR.GetString(0);
DataClass.MyMeans.My_con.Close();
DataClass.MyMeans.My_con.Dispose();
//记录当前窗体的Tag属性值
[font color=#FF0000]DataClass.MyMeans.Login_n = (int)(this.Tag);//这里出错可是我看了一下和书上一样
[/font]
this.Close();
}
else
{
MessageBox.Show("密码或用户名错误","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
textName.Text= "";
textPass.Text = "";
}
}
else
{
MessageBox.Show("请将登录信息填写完整!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
//按enter时移动鼠标焦点
private void textName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
textPass.Focus();
}
private void textPass_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
butLogin.Focus();
}
}
}
出错的是: DataClass.MyMeans.Login_n = (int)(this.Tag);说什么这句:{"未将对象引用设置到对象的实例。"}
可是我和书上的一样,而且在MyMeans公共类中也是定义了静态: public static int Login_n =0;