LoginFrm-->MainForm怎么传不过值,望高手给我看看,谢谢了!!!!!!!!
loginfrm中有radioButton1代表管理员,radioButton2代表客户,我想实现把radioButton1传到mainfrm(即主窗体)
//loginfrm中判断是否管理员登陆!!!!!!
public bool isselectmanage()
{
bool isselectmanage;
if(this.radioButton1.Checked==true)
isselectmanage=true;
else
isselectmanage=false;
return isselectmanage;
}
//mainform中用委托实现,听说很好用,就试一下
private delegate bool checkstate();
private void MainForm_Load(object sender, System.EventArgs e)
{
LoginFrm login=new LoginFrm();//
checkstate ismanage=new checkstate(login.isselectmanage);//loginfrm中的 isselectmanage方法
this.label1.Text=ismanage().ToString();//
if(ismanage()==true)//判断是否管理员登陆,虽然每次都是以管理员,但每次显示ismanage()==false
{
.....
}
}
------解决方案--------------------首先你这个窗体没有调用显示出来 你应该在
LoginFrm login=new LoginFrm();
后面添加
login.ShowDialog(); 这样窗体才能显示出来 并设置登录模式。这点估计是你没有把代码贴全的原因吧,至少在你贴出来的代码没有看见。
另外委托么 这个地方也没有必要用委托了 呵呵。
------解决方案--------------------麻烦你先看看类,因为类很方便。你的写法比较混乱。
public class frmlogin
{
//管理员
public bool 管理员
{
get
{return radioButton1.Checked;}
set{radioButton1.Checked=value;}
}
}
public void main()
{
frmlogin flogin=new frmlogin();
if(flogin.ShowDialog()==System.Windows.Forms.DialogResults.OK)
{
Application.Run(new form1(flogin.管理员));
}
}
------解决方案--------------------你在login的类里面点一个public变量 bool isselectmanage 表示是不是管理员登陆,然后
LoginFrm login=new LoginFrm();
if(login.ShowDialog()==DialogResult.OK)
{
if(isselectmanage)
{
}
else
{
}
}
这样最省事吧
或者LoginFrm搞个构造函数 应该也可以吧?
LoginFrm login=new LoginFrm(out isselectmanage)
------解决方案--------------------必须在对象frmLogin关闭前就把值传出来
frmLogin.FrmClosing += new .......
//这个做法是错的
public class frmlogin
{
//管理员
public bool 管理员
{
get
{return radioButton1.Checked;}
set{radioButton1.Checked=value;}
}
}
public void main()
{
frmlogin flogin=new frmlogin();
if(flogin.ShowDialog()==System.Windows.Forms.DialogResults.OK)
{
Application.Run(new form1(flogin.管理员));
}
}
------解决方案--------------------晕!
lz在应用程序入口定义了一次loginfrm,然后又在mainfrm的load里面定义了一次loginfrm,这根本就是2个不相干的实例了,应用程序入口登陆的信息没办法弄到你mainfrm的load里面去了