Winform中怎样在一个窗体中获得另一个窗体中的控件的值?

来源:互联网 发布:索隆是副船长知乎 编辑:程序博客网 时间:2024/05/01 21:37
Winform中怎样在一个窗体中获得另一个窗体中的控件的值?

有两个窗体:一个是Form1.cs的主窗体,另一个是Login.cs的登录窗口,现在在login.cs窗口中有一个combobox控件(JSXZ),想在Form1.cs中获取它的值,应该怎样做?

请多指教/
  
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
回复次数:11
  • Neil198用户头像
  • Neil198
  • (劳驾借过!不借!)
  • 等 级:
#1楼 得分:2回复于:2010-09-15 10:40:54
在login.cs里面定义一个属性访问器

C# code
private string _cmbSelValue = "";public string CmbSelValue{ get{return combobox.SelectedText;}//or combobox.SelectedItem………………}如果想要获得整个控件就直接把string 改成Combobox类型
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:本贴收集C#完整的通信代码(点对点,点对多,同步,异步,UDP,TCP),多多宜善。
  • tyang258用户头像
  • tyang258
  • (tyang258)
  • 等 级:
#2楼 得分:2回复于:2010-09-15 10:47:01
自己写一个帮助类,将值先给帮助类成员,在到需要的地方调用
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:SQLServer2005 String类的移植尝试
  • fywindmoon用户头像
  • fywindmoon
  • (猎色之狼)
  • 等 级:
#3楼 得分:2回复于:2010-09-15 10:48:29
在login窗体中将comboBox声明改为public试试。或者再绕点,在login里面public一个变量,将SelectedItem的值赋给它。楼上的比较高级,一会俺试试。
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:.net老版主的面试,分享共勉
  • guhonglangzi用户头像
  • guhonglangzi
  • (孤鸿浪子)
  • 等 级:
#4楼 得分:0回复于:2010-09-15 10:49:25
“帮助类”,怎样写啊。。。
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:【散分】公布一些常用的WebServices,希望对大家的应用有帮助~
  • HolyPlace用户头像
  • HolyPlace
  • (小鲁)
  • 等 级:
#5楼 得分:2回复于:2010-09-15 10:52:39
写一个公共属性类,Login.cs中combobox的有他对应的属性值,只要combobox值发生改变都会改变属性值,在Form1中直接取公共属性类中对应的combobox值
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:Share Some Methods about Linq to Entry
  • Fibona用户头像
  • Fibona
  • (Fibona)
  • 等 级:
#6楼 得分:2回复于:2010-09-15 10:55:03
第一种,在Loginfrm中写一个公共属性


public class Loginfrm:form
{
  private string _cmbvalue=string.Empty;
   
  public CmbValue
  {
  set{_cmbvalue=value;}
  get{return _cmbvalue;}
  }

}

在frm1中,
Loginfrm frm=new Loginfrm();
//显示frm,
string value=frm.CmbValue;



第二种,放一个静态属性,放到应用程序主类,或者其它公共类中
namespace aa.App
{
  static class Program
  {
  public static string LoginFrmCmbValue= string.Empty;
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
}

//在LoginFrm中,更改时,更改
Program.LoginFrmCmbValue="值";

在主窗体中,直接用Program.LoginFrmCmbValue获取值
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • qiuxin425用户头像
  • qiuxin425
  • (秋鑫)
  • 等 级:
#7楼 得分:2回复于:2010-09-15 10:55:26
引用 1 楼 neil198 的回复:
在login.cs里面定义一个属性访问器


C# code

private string _cmbSelValue = "";
public string CmbSelValue
{
get{return combobox.SelectedText;}//or combobox.SelectedItem………………
}

如果想要获得整个控件就直接把string 改……


+1
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • mervyn807用户头像
  • mervyn807
  • (梦幻舞天姬)
  • 等 级:
#8楼 得分:2回复于:2010-09-15 10:56:34
我学C#的时候是直接定义一个public的全局量
然后赋值
这样哪个窗体都能通过这个量来得到值

比较笨的方法
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • herott632482577用户头像
  • herott632482577
  • (herott632482577)
  • 等 级:
#9楼 得分:2回复于:2010-09-15 11:08:08
设置个PUBLIC全局变量 A窗体
  int index1 = 0;//dataGridView1中ID列的索引
 string Id = dataGridView2[index1, dataGridView2.SelectedCells[0].RowIndex].Value.ToString();
B b=new B(id)
b.show();

B窗体
PUBLIC INT ID;
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • guhonglangzi用户头像
  • guhonglangzi
  • (孤鸿浪子)
  • 等 级:
#10楼 得分:0回复于:2010-09-15 11:37:17
在下整了个公共类,如下:namespace tsleyyg.App_Help
{
  class Tfvalue
  {
  public static string val = string.Empty;
  }
}
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lishenghu365用户头像
  • lishenghu365
  • (飞扬跋扈)
  • 等 级:
#11楼 得分:4回复于:2010-09-15 16:03:26
我觉得你问的这个问题是关于两个窗体间传值的问题,基本有三中方式.
不过你这种情况,最好使用类似session 的方法

首先,在登陆窗体中将用户名和密码保存到一个对象中 userInfo,包括用户名和密码

public class UserInfo
{  
  public string _userName;
  public string _userPassword;
  public UserInfo(string userName,string userPassword)
  {
  _userName=userName;
  _userPassword = userPassword;
  }
}
UserInfo userInfo = new UserInfo("张三","123456");
AppDomain.CurrentDomain.SetData("UserInfo",userInfo)

然后,在该进程中(单程序域进程),所有窗体或其他类对象中都可以这样获得该对象

UserInfo temp = (UserInfo)AppDomain.CurrentDomain.GetData("UserInfo");