问题描述
stringselectsql="select*from用户权限wheresysuser='"+username+"'andpassword='"+password+"'";SqlCommandcmd=newSqlCommand(selectsql,LinkDataBase.Connection);cmd.CommandType=CommandType.Text;SqlDataReadersdr;sdr=cmd.ExecuteReader();if(sdr.Read()){sdr.Close();FrmMainfrmMain=newFrmMain();FrmMain.isRunMain=true;frmMain.Show();if(Convert.ToBoolean(dt.Rows[0]["save_1"]))frmMain.button2.Enabled=true;if(Convert.ToBoolean(dt.Rows[0]["calculate_1"]))frmMain.button3.Enabled=true;if(Convert.ToBoolean(dt.Rows[0]["input_1"]))frmMain.button4.Enabled=true;//以上3行button用不了啊!!好烦!!this.Close();}else{if(MessageBox.Show("输入用户密码有误,是否重新登录","输入有误",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){this.textBox1.Clear();this.textBox2.Clear();}
解决方案
解决方案二:
FrmMain构造函数里传3个参数进去,在FrmMain里去改控件。或者FrmMain()写一个改控件的方法,传3个参数进去
解决方案三:
改成public
解决方案四:
//FrmMain窗体重载一个带三个参数的构造函数publicFrmMain(boolenabled2,boolenabled3,boolenabled4){this.button2.Enabled=c;this.button3.Enabled=enabled3;this.button4.Enabled=enabled4;}//调用boolenabled2=Convert.ToBoolean(dt.Rows[0]["save_1"]);boolenabled3=Convert.ToBoolean(dt.Rows[0]["calculate_1"]);boolenabled4=Convert.ToBoolean(dt.Rows[0]["input_1"]);FrmMainfrmMain=newFrmMain(enabled2,enabled3,enabled4);FrmMain.isRunMain=true;frmMain.Show();
解决方案五:
构造函数里面更正下:this.button2.Enabled=enabled2;
解决方案六:
引用3楼BitCoffee的回复:
//FrmMain窗体重载一个带三个参数的构造函数publicFrmMain(boolenabled2,boolenabled3,boolenabled4){this.button2.Enabled=c;this.button3.Enabled=enabled3;this.button4.Enabled=enabled4;}//调用boolenabled2=Convert.ToBoolean(dt.Rows[0]["save_1"]);boolenabled3=Convert.ToBoolean(dt.Rows[0]["calculate_1"]);boolenabled4=Convert.ToBoolean(dt.Rows[0]["input_1"]);FrmMainfrmMain=newFrmMain(enabled2,enabled3,enabled4);FrmMain.isRunMain=true;frmMain.Show();
太棒了,多谢前辈!我上完课去试试!
解决方案七:
另外主窗体控件modifiers属性改为protected,这个只能继承主窗体控件的子类能访问这个控件,与你子窗体访问主窗体控件无关。