C#数据库工具开发(七)

问题(07/18)

1. 返回登录界面

程序入口是登录界面,登录成功后隐藏登陆界面,显示主界面。现在想要实现点击主界面的按钮,返回登录界面。

思路一:
登录成功后,hide登录界面,new主界面。点击back按钮,hide主界面,show登陆界面。再次点击登陆,更新(reload)主界面

有两个问题,第一为了防止之后反复创建新的主界面,我把主界面先作为登陆界面属性创建,在login按钮事件中,只是添加参数,将其显示出来。可以增加一个静态变量isShown表示主界面是hide还是show。问题在于,主界面的load方法只在一开始调用,要想办法实现主界面的重新加载。

第二,主界面hide之后如何重新show登录界面。已知能用委托实现。

思路二:
登录成功后,hide登陆界面,new主界面。点击back按钮,close主界面,show登录界面。再次点击登录,新建(new)主界面

同样有两个问题,第二,我想保留当主界面close时,整个程序exit这个特性,所以我在FormMainOrcl_FormClosed事件中,有Application.Exit();,但是form.close()方法,也会引起这个事件的响应,这就导致点击back按钮后,整个程序都退出了。

第二,与思路一第二点一致

目前暂时能想到的解决方案:

不保留主界面close,程序exit这个设定,程序只有在登陆界面退出时才退出。

改进的实现思路二的方案:

在主界面添加变量justback,默认false,若点击back按钮,将justback设为true,在formclosed事件中判断justback,可以跳过程序退出。
对于第二点,不用委托,更简单的实现方法
在登录界面中

1
2
3
4
this.Hide();
FormMainTableShow formMain = new FormMainTableShow();
formMain.Tag = this;
formMain.Show();

在主界面中

1
2
3
FormLogin login = (FormLogin)this.Tag;
login.Show();
this.Close();

2. 设置16进制颜色值

例子:
Color color=ColorTranslator.FromHtml("#CE76D1");

3. 调用资源文件

例子:
XElement root = XElement.Parse(Resources.ResourceManager.GetObject("XMLTypeOracle") as string);