按钮不可用就是不能实现 为什么啊 江湖救急

teddy169 2016-03-29 07:47:36
权限表如下
ID sysuser password save_1 calculate_1 input_1
1 001 abc 1 1 1
2 002 bac 1 1 0
3 003 cab 1 0 0
4 004 cba 0 0 0
(其中save_1 calculate_1 input_1表示主窗体中的按钮,0或1表示能用与否)
private void button1_Click(object sender, EventArgs e)//登录按钮
{
LinkDataBase.Open();
string username = this.textBox1.Text;
string password = this.textBox2.Text;
string selectsql = "select * from 用户权限 where sysuser='" + username + "'and password='" + password + "'";
SqlCommand cmd = new SqlCommand(selectsql, LinkDataBase.Connection);
cmd.CommandType = CommandType.Text;
SqlDataReader sdr;
sdr = cmd.ExecuteReader();

if (sdr.Read())
{
bool enabled2 = Convert.ToBoolean(sdr["save_1"]);
bool enabled3 = Convert.ToBoolean(sdr["calculate_1"]);
bool enabled4 = Convert.ToBoolean(sdr["input_1"]);//问题可能出在这三行,我不确定sdr返回值
FrmMain frmMain = new FrmMain(enabled2, enabled3, enabled4);//重载主窗体函数
public FrmMain(bool enabled2, bool enabled3, bool enabled4):this()
{
this.button2.Enabled = enabled2;
this.button3.Enabled = enabled3;
this.button4.Enabled = enabled4;
}



sdr.Close();
FrmMain.isRunMain = true;
frmMain.Show();
this.Close();
}
else
{
if (MessageBox.Show("输入用户密码有误,是否重新登录", "输入有误",
MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
this.textBox1.Clear();
this.textBox2.Clear();
}
else
{
Application.Exit();
}
}
}
其他都没出问题,就是我把enabled都改成false三个按钮依然可用!!!!!哪位前辈救救我
...全文
160 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
teddy169 2016-03-30
  • 打赏
  • 举报
回复
引用 4 楼 teddy169的回复:
[quote=引用 3 楼 xiaoguidangjiajia的回复:]我觉得是你 if (sdr.Read()) { } 函数体里面的内容没有执行。 bool enabled4 = Convert.ToBoolean(sdr["input_1"]); 当你这个sdr["input_1"]的值为0或者1时,转换会出问题。程序直接接崩了。所以估计if的函数体里面并没有执行
为什么转换会出问题?那要怎么解决呢?请指教[/quote] 我主窗体是可以正常显示的,用户名密码正确就可以登陆,只是权限区分不开,所有按钮4个用户号都能用
teddy169 2016-03-30
  • 打赏
  • 举报
回复
引用 3 楼 xiaoguidangjiajia的回复:
我觉得是你 if (sdr.Read()) { } 函数体里面的内容没有执行。 bool enabled4 = Convert.ToBoolean(sdr["input_1"]); 当你这个sdr["input_1"]的值为0或者1时,转换会出问题。程序直接接崩了。所以估计if的函数体里面并没有执行
为什么转换会出问题?那要怎么解决呢?请指教
小鬼当家家 2016-03-30
  • 打赏
  • 举报
回复
我觉得是你 if (sdr.Read()) { } 函数体里面的内容没有执行。 bool enabled4 = Convert.ToBoolean(sdr["input_1"]); 当你这个sdr["input_1"]的值为0或者1时,转换会出问题。程序直接接崩了。所以估计if的函数体里面并没有执行
小鬼当家家 2016-03-30
  • 打赏
  • 举报
回复
Convert.ToBoolean()本身有多个重载。sdr["save_1"])本身是个字符串。当ToBoolean参数为string的时候,只有“true”和"false"两种值可以转换成功。 当然你可以先把sdr["save_1"])转换为int: bool enabled4 = Convert.ToBoolean( Int32.Parse( sdr["input_1"]));
江南小鱼 2016-03-29
  • 打赏
  • 举报
回复
单步调试下,你的FrmMain窗体load事件是否对三个button的Enabled属性又重新赋值了呢?
teddy169 2016-03-29
  • 打赏
  • 举报
回复
我已经没分了 急求解决方案

111,129

社区成员

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

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

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