在Form1窗体中代码如下
private void BtLogin_Click(object sender, EventArgs e)
{
string loginid = txtLoginID.Text.Trim();
if (true)
{
this.DialogResult = DialogResult.OK;
UserLoginID LogID = new UserLoginID(main.LoginLog);
LogID(loginid);
}
}
在Form2窗体的代码如下:
delegate void UserLoginID(string LoginID);
public void LoginLog(string Log)
{
label1.Text = Log;
}在Program中代码是这样的:
Form1 frm1 = new Fomr1();
if (frm1 .ShowDialog() == DialogResult.OK)
{
Application.Run(new MainMDI());
}我加断点运行的时候看见能传过去值,但是后边部知道什么地方,就会把这个值给刷新掉,就没有了,还是没有传值过去!!!帮帮我啊!!
private void BtLogin_Click(object sender, EventArgs e)
{
string loginid = txtLoginID.Text.Trim();
if (true)
{
this.DialogResult = DialogResult.OK;
UserLoginID LogID = new UserLoginID(main.LoginLog);
LogID(loginid);
}
}
在Form2窗体的代码如下:
delegate void UserLoginID(string LoginID);
public void LoginLog(string Log)
{
label1.Text = Log;
}在Program中代码是这样的:
Form1 frm1 = new Fomr1();
if (frm1 .ShowDialog() == DialogResult.OK)
{
Application.Run(new MainMDI());
}我加断点运行的时候看见能传过去值,但是后边部知道什么地方,就会把这个值给刷新掉,就没有了,还是没有传值过去!!!帮帮我啊!!
看不懂了
public Form2(string Log)
{
InitializeComponent();
label1.Text = Log;
}Form1调用:Form2 frm2 = new Form2(this.txtLoginID.Text..Trim());
frm2.Show();
Form1调用:
这里的main是form2?
贴出完整一点的代码。
label1.Text = Log = loginid = txtLoginID.Text.Trim();
如果我们需要将主窗体FMMain中的string strValueA的值传给FMChild,那么我们首先对strValueA进行如下处理:private string strValueA;public string StrValueA { get { return strValueA; } set { strValueA = value; } }
使其成为主窗体FMMain的一个属性,接着修改显示子窗体的代码为以下两种的其中一种。方法一:FMChild fmChild = new FMChild();fmChild.ShowDialog(this);fmChild.Dispose();
方法二:FMChild fmChild = new FMChild();FMChild.Owner = this;fmChild.ShowDialog();fmChild.Dispose();
然后在修改子窗体FMChild中申明一个主窗体FMMain对象,FMMain fmMain;
在需要使用主窗体FMMain的string strValueA的地方加上如下代码:fmMain = (FMMain)this.Owner;
这样,就可以获得主窗体FMMain中strValueA的值了。
LogID(loginid);跟 main.LoginLog(loginid); 没有任何区别……你的名为main的Form2实例是在什么时候创建的?
main.LoginLog是你Form2里的方法,你在From1里可见吗?
public static string haha="";
haha=txtLoginID.Text.Trim();
label1.text=hehe.haha;
public partial class UserLogin : Form
{
MainMDI main = new MainMDI();
public UserLogin()
{
InitializeComponent();
this.AcceptButton = this.btnOK;
this.CancelButton = this.btnCancel;
} private void BtLogin_Click(object sender, EventArgs e)
{
string loginid = txtLoginID.Text.Trim();
string loginpwd = txtPwd.Text.Trim();
if (true)
{
this.DialogResult = DialogResult.OK;
UserLoginID LogID = new UserLoginID(main.LoginLog);
LogID(loginid);
}
else
{
MessageBox.Show("用户名密码错误,请返回检查!", "错误提示");
}
}
Form2delegate void UserLoginID(string LoginID);
public partial class MainMDI : Form
{
public MainMDI()
{
InitializeComponent();
} public void LoginLog(string Log)
{
label1.Text = Log;
}很乱,不好意思贴出来!!
在Form1里添加事件定义:
public event UserLoginID showId;
然后:BtLogin_Click事件里
将 UserLoginID LogID = new UserLoginID(main.LoginLog);
LogID(loginid);
这两句去掉改成:
if (showId != null)
showId(loginid); 在Form2里面:Form1 frm1 = new Fomr1();
构造函数里加:frm1.showId+=new ShowMessageEventHandler(LoginLog);
Form2的LoginLog方法体修改为:
{
UserLoginID showDel = delegate(string msgToshow)
{
label1.Text = msgToshow;
};
}
在Program中 直接加载Form2就OK了
我感觉是这个问题,你的MainMDI定义在类内了,而没有传递
frm1.showId+=new ShowMessageEventHandler(LoginLog);
的ShowMessageEventHandler报错了,不知道什么原因,请帮忙
//Program.cs
MainMDI mainMDI = new MainMDI()
Form1 frm1 = new Fomr1(mainMDI);
if (frm1 .ShowDialog() == DialogResult.OK)
{
Application.Run(mainMDI);
}
// From1.cs
public partial class UserLogin : Form
{// 这一行去掉。
// MainMDI main = new MainMDI();
// 添加参数传递
public UserLogin(MainMDI amain)
{
// 设定参数。
this.main = amain;
InitializeComponent();
this.AcceptButton = this.btnOK;
this.CancelButton = this.btnCancel;
} private void BtLogin_Click(object sender, EventArgs e)
{
string loginid = txtLoginID.Text.Trim();
string loginpwd = txtPwd.Text.Trim();
if (true)
{
this.DialogResult = DialogResult.OK;
UserLoginID LogID = new UserLoginID(main.LoginLog);
LogID(loginid);
}
else
{
MessageBox.Show("用户名密码错误,请返回检查!", "错误提示");
}
}