VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 821|回复: 5

C#中Dialog窗体返回一些数据的问题,(菜鸟级),请帮忙!

[复制链接]

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-20 16:00:02 | 显示全部楼层 |阅读模式
启动主窗体frmMain,同时在frmMain的Load事件中加载登录窗体frmLogin,方法是ShowDialog().
现在我在frmLogin中处理一些数据,如操作人员、注册日期等,怎么样在frmLogin执行Close()的时候把这些数据传给frmMain?
frmMain中的一段代码是这样的:

    //显示登录窗口
        private void ShowLogin()
        {
            frmLogin LoginFrm = new frmLogin();
            DialogResult dr = LoginFrm.ShowDialog();
            if (dr == DialogResult.OK)
            {
                //TODO:这里写登录窗体成功登录并关闭后要处理的代码。
            }
            else
            {
                Close();
            }
        }

那样的代码怎么写呢?
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-6-26 22:15:01 | 显示全部楼层
首先,在frmMain 中定义一些属性,用来接收你从frmLogin传来的数据;
然后,frmLogin LoginFrm = new frmLogin(this);
LoginFrm 中,设定你要传的值,让他们等于 frmMain 中定义的属性

回复

使用道具 举报

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-28 11:15:01 | 显示全部楼层
应该有个什么FormClosing事件吧~~~
回复

使用道具 举报

4

主题

12

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-7-22 13:00:01 | 显示全部楼层
举个例子:
//登录窗体中定义name,并把登录id文本框的文本赋值到name
public class frmLogin : Form
    {
        //定义一个string,并赋值后,可以作为类frmLogin的属性使用
        public static string name;
        private void btn_Login_Click(object sender, System.EventArgs e)
        {
            name = loginidTextBox.Text;
        }
    }

//主窗体中调用
public class frmMain : Form
{
    private void MainFrm_Load(object sender, System.EventArgs e)
    {
        frmLogin LoginFrm = new frmLogin();
        LoginFrm.ShowDialog();
        if(LoginFrm.DialogResult == DialogResult.OK)
            {
                //使用类frmLogin的实例LoginFrm的name属性进行赋值
                string newName = LoginFrm.name;
            }
    }
}
回复

使用道具 举报

0

主题

27

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-7-22 16:15:02 | 显示全部楼层
參看窗體間的傳值。
http://blog.csdn.net/ooloife/archive/2006/06/23/824617.aspx
回复

使用道具 举报

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-7-26 15:45:01 | 显示全部楼层
谢谢:withsprite,还有 ooloife

原先的问题已经解决,我还有一个问题,附带问了吧,呵呵 :)
我在frmLogin类中定义变量:
public int intYear;     //注册日期所在的年度
public byte bytePeriod; //注册日期所在的期间
在frmMain中调用它:
//显示登录窗口
        private void ShowLogin()
        {
            frmLogin LoginFrm = new frmLogin();
            DialogResult dr = LoginFrm.ShowDialog();
            if (dr == DialogResult.OK)
            {
                SLblOperator.Text = LoginFrm.strOperator;
                SLblPeriod.Text = LoginFrm.intYear.ToString() + "年第" + LoginFrm.bytePeriod.ToString() + "期";
                SLblRegDate.Text = LoginFrm.strRegDate;
            }
            else
            {
                Close();
            }
        }

编译后有个警告提示:由于“HLLW.frmLogin.intYear”是引用封送类的字段,访问上面的成员可能导致运行时异常。还有,由于“HLLW.frmLogin.bytePeriod”是引用封送类的字段,访问上面的成员可能导致运行时异常。
导致这个警告发生的原因是什么呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表