to 愚翁,看完你的文章,请教关于登陆窗体与主窗体数据传递的问题。 刚看完你的文章。在登陆窗体关闭的时候,创建主窗体的对象并显示。此时如何把登陆窗体的数据传送到主窗体。登陆窗体已经消亡,其内部数据已经不存在了。我不想使用静态类的方法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没想出什么好的实现方法,lz直接把登陆窗口hide吧 本人愚见:创建一个单体模式的类AppInfo,将其中要被程序访问的公共变量定义成public,然后在程序中定义public static AppInfo app = new AppInfo(),就能在程序的其他地方通过app.XXX访问公共变量。 普遍的做法都是先把所有窗体创建好,然后暂时不显示(Hide()),等登陆成功了再Show()一下吧。至于传递参数,应该也不难吧。窗体本身也是类。只要修改一下默认的构造函数,使其能够携带参数就好了吧。你所说的一个窗体关闭后再创建新窗体的方法我还真不知道。估计没有吧要有的话,我也想知道。除非这两个窗体还被另外一个什么东西控制,否则应该不行吧public class Main_Win : System.Windows.Forms.Form{ private User_Login login; public Main_Win(){} private static void Main() { Application.Run(new Main_Win()); } private void Main_Win_Load(object sender, System.EventArgs e) { InitializeComponent(); this.Hide(); login = new User_Login(this); login.ShowDialog(); }}public class User_Login : System.Windows.Forms.Form{ private Main_Win mainwin; // 修改[User_Login]窗体默认的构造函数 public User_Login ( Main_Win mainWin ) { InitializeComponent(); this.mainwin = mainWin; } // 中间代码省略 private void Login() { if( LoginSuccess ) { this.mainwin.Show(); this.Close(); } }} 如果你看完我的文章的话,那么可以从login窗体获得userinfo这个类型的对象,那么如果想传递给其他窗体,可以通过其他窗体的构造函数来完成传递。例如frmMain myMain = new frmMain( ui );//Get "ui" from login window kingdomgps(工作没激情) ( ) 信誉:100 Blog 2006-09-13 14:52:00 得分: 0 本人愚见:创建一个单体模式的类AppInfo,将其中要被程序访问的公共变量定义成public,然后在程序中定义public static AppInfo app = new AppInfo(),就能在程序的其他地方通过app.XXX访问公共变量。 这不是跟定义静态类差不多的方法么!实质就是全局变量啊,我不想搞太多的全局变量。 redfoxlee() ( ) 信誉:100 Blog 2006-09-13 14:54:00 得分: 0 普遍的做法都是先把所有窗体创建好,然后暂时不显示(Hide()),等登陆成功了再Show()一下吧。至于传递参数,应该也不难吧。窗体本身也是类。只要修改一下默认的构造函数,使其能够携带参数就好了吧。你的方法建立在登陆窗体存在的情况下,如果hide了,关闭主程序时,就会遇到麻烦。修改构造函数,给他传递参数,参数的值来自的窗体类必须还存在。但是此时登陆窗体已经关闭,哪里来的数据源啊! 我是这样用的 FormLogin formLogin=new FormLogin(); formLogin.ShowDialog(); if(formLogin.LoginOK) { Application.Run(new FormMain(formLogin.m_SupplyInfo)); } else { }在formLogin退出时,用formLogin.Hide();formLogin.m_SupplyInfo是在formLogin中申明的对象。对你说的【你的方法建立在登陆窗体存在的情况下,如果hide了,关闭主程序时,就会遇到麻烦。】有什么麻烦呢,我用起来还可以啊 关于前台页面调用COM组件 按照MSDN的代码打印txt文件却打印不了,请帮忙看一眼啦。。。谢谢啦。。。 一个小菜鸟的问题,关于带引号的字符串 请教一个Pocket PC上基于Wifi通话的问题 这个宏要怎么改写成C# 啊?谢谢 不使用析构函数的话,在类中如何知道 实例已经退出可以释放资源(比如断开数据库)和保存缓存的数据了? 一个关于文件配置的问题,请高手指教啊:) 如何反编译chm文件?? 急问:怎么才能显示全部的数据?? C# 窗体bitmap执行处理图片内存不足 我怎么满眼看到的帖子都像不会结的那种呢 如何在页面显示动态时间
至于传递参数,应该也不难吧。窗体本身也是类。只要修改一下默认的构造函数,使其能够携带参数就好了吧。你所说的一个窗体关闭后再创建新窗体的方法我还真不知道。估计没有吧要有的话,我也想知道。除非这两个窗体还被另外一个什么东西控制,否则应该不行吧public class Main_Win : System.Windows.Forms.Form
{
private User_Login login; public Main_Win(){} private static void Main()
{
Application.Run(new Main_Win());
} private void Main_Win_Load(object sender, System.EventArgs e)
{
InitializeComponent();
this.Hide();
login = new User_Login(this);
login.ShowDialog();
}
}public class User_Login : System.Windows.Forms.Form
{
private Main_Win mainwin; // 修改[User_Login]窗体默认的构造函数
public User_Login ( Main_Win mainWin )
{
InitializeComponent();
this.mainwin = mainWin;
}
// 中间代码省略 private void Login()
{
if( LoginSuccess )
{
this.mainwin.Show();
this.Close();
}
}
}
frmMain myMain = new frmMain( ui );//Get "ui" from login window
本人愚见:创建一个单体模式的类AppInfo,将其中要被程序访问的公共变量定义成public,然后在程序中定义public static AppInfo app = new AppInfo(),就能在程序的其他地方通过app.XXX访问公共变量。
这不是跟定义静态类差不多的方法么!
实质就是全局变量啊,我不想搞太多的全局变量。
redfoxlee() ( ) 信誉:100 Blog 2006-09-13 14:54:00 得分: 0
普遍的做法都是先把所有窗体创建好,然后暂时不显示(Hide()),等登陆成功了再Show()一下吧。
至于传递参数,应该也不难吧。窗体本身也是类。只要修改一下默认的构造函数,使其能够携带参数就好了吧。你的方法建立在登陆窗体存在的情况下,如果hide了,关闭主程序时,就会遇到麻烦。
修改构造函数,给他传递参数,参数的值来自的窗体类必须还存在。
但是此时登陆窗体已经关闭,哪里来的数据源啊!
FormLogin formLogin=new FormLogin();
formLogin.ShowDialog();
if(formLogin.LoginOK)
{
Application.Run(new FormMain(formLogin.m_SupplyInfo));
}
else
{ }在formLogin退出时,用formLogin.Hide();
formLogin.m_SupplyInfo是在formLogin中申明的对象。对你说的【你的方法建立在登陆窗体存在的情况下,如果hide了,关闭主程序时,就会遇到麻烦。】
有什么麻烦呢,我用起来还可以啊