winform的问题。我在first窗体内有以下代码:frmMain fmain = new frmMain();
fmain.Show();
frmLogin Login = new frmLogin();
Login.ShowDialog();
this.Hide();我在Login窗体的代码中有这样一句代码:
fmain.tsslUser.Text = "||当前操作用户: " + frmLogin.M_str_name;
然而系统提示错误:当前上下文中不存在名称“fmain”。可我并没有关闭fmain窗体啊,在屏幕上也看到了fmain窗体的模样了,为什么不能引用到fmain窗体呢?谢谢指点!

解决方案 »

  1.   

    你应该把fmain 对象,传递到Login 窗体中。然后再在Login 窗口中调用
      

  2.   

    frmMain fmain = new frmMain(); 
    fmain.Show(); 
    frmLogin Login = new frmLogin(fmain); 
    Login.ShowDialog(); 
    this.Hide();
    把fmain变量传过去才能访问到的...
      

  3.   

    fmain对象没有传递到Login窗体,你需要把fmain对象传递到Login窗体
    在Login窗体除了默认构造函数增加一个传参的构造函数并继承默认构造函数
    修改first窗体内有以下代码如下:
    frmMain fmain = new frmMain(); 
    fmain.Show(); 
    frmLogin Login = new frmLogin(fmain); 
    Login.ShowDialog(); 
    this.Hide();
     
    Login窗体要定义一窗体变量接收传递的窗体参数,这样即可用该变量操作
      

  4.   

    fmain对象没有传递到Login窗体,你需要把fmain对象传递到Login窗体 
    具体应该如何传递呀?请高手明示。
      

  5.   

    我不是已经说了吗,你需要在Login窗体除了默认构造函数增加一个传参的构造函数并继承默认构造函数 
      

  6.   

    把fmain作为一个参数传递到Login窗体里面就可以,需要在Login窗体的构造函数增加一个参数
      

  7.   

    -_-!你百度搜,或者google搜,这问题问了太多遍了............
      

  8.   

    frmLogin窗体的代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace WindowsApplication1
    {
        public partial class frmLogin : Form
        {
            Form frm;
            public frmLogin()
            {
                InitializeComponent();
            }
            public frmLogin(Form f):this()
            {
                frm = f;
            }
            frm..tsslUser.Text = "||当前操作用户: " + frmLogin.M_str_name; 
        }
    }
    在first窗体内有以下代码: frmMain fmain = new frmMain(); 
    fmain.Show(); 
    frmLogin Login = new frmLogin(fmain); 
    Login.ShowDialog(); 
    this.Hide(); 
      

  9.   

    初学者,多问勿怪!
    我按照以上的提示自己写了一下,但不太对,请看代码:
    frmMain fmain = new frmMain();
    fmain.Show();
    frmLogin Login = new frmLogin();
    Login.ShowDialog(fmain);  <- 这里加上fmain
    this.Hide();然后在frmLogin中这样写:
    public partial class frmLogin : Form
    {
        private object objMain = null; 
        public frmLogin(object obj)
        {
            objMain = obj;
        }    private void btnLogin_Click(object sender, EventArgs e) //登录
        {
            ......
            objMain.tsslUser.Text = "||当前操作用户: " + frmLogin.M_str_name; <- 这里出错!
    请高手帮看看错在哪儿?谢谢!
      

  10.   

    frmLogin Login = new frmLogin(); 
    Login.ShowDialog(fmain);  <- 这里加上fmain 
    修改
    frmLogin Login = new frmLogin(fmain); <- 这里加上fmain 
    Login.ShowDialog();  
      

  11.   

    在frmLogin中增加非默认构造方法必须有默认构造方法如下:
    public partial class frmLogin : Form 

            Form frm; 
            public frmLogin() 
            { 
                InitializeComponent(); 
            } 
            public frmLogin(Form f):this() 
            { 
                frm = f; 
            } 
            frm..tsslUser.Text = "||当前操作用户: " + frmLogin.M_str_name; 

      

  12.   

    不行啊,怎么运行后还是找不到sslUser控件?
    frmMain fmain = new frmMain();
    fmain.Show();
    frmLogin Login = new frmLogin(fmain);
    Login.ShowDialog();
    this.Hide();public partial class frmLogin : Form
    {
        Form frm;
        public frmLogin()
        {
            InitializeComponent();
        }    public frmLogin(Form f) : this()
        {
            frm = f;
        }     private void btnLogin_Click(object sender, EventArgs e) //登录
        {
            .....
            frm.tsslUser.Text = "||当前操作用户: " + M_str_name;   <- 本句出错,说是找不到tsslUser看来好像还是无法引用fmain。不知哪儿还有错?
      

  13.   

    tsslUser是 frmMain窗体上的控件吗?如果是不能直接访问到因为控件在窗体上定义是Private即私有变量,如果想给控件赋值,你只能通过在frmMain窗体代码内定义公用方法或属性值,传递的值在修改窗体控件值
      

  14.   

    frm.tsslUser.Text = "||当前操作用户: " + M_str_name;
    运行后我在上句中断了一下,发现frm的确是窗体fmain,比如frm.Text显示的确实是fmain窗体的标题内容,不过像tssl(状态行)、frmMain_Load()以及自己写的函数都无法引用,Why?
      

  15.   

    有3个类ClassA,ClassB,ClassCClassA
    {
     private ClassB B;
     private ClassC C;
    }
    //在类ClassC中能访问到ClassA中的私有变量B?
    //两种解决方案
    //1.将B定义为共有
    //2.上面说的传参
    //记住Form也是类,具有类的所有特性
      

  16.   

    ....你的fmain 只在first窗体中有效