天津投入产出系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

309 lines
10 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QMAPP.ServicesAgent.LoginService;
using System.Configuration;
using System.ServiceModel.Configuration;
using QMAPP.WinForm.Common;
namespace QMAPP.WinForm
{
/// <summary>
/// 登录窗体
/// </summary>
public partial class LoginForm : Form
{
QMAPP.ServicesAgent.LoginService.LoginServiceClient _loginClient = new ServicesAgent.LoginService.LoginServiceClient();
public static LoginInfo loginUser;
Dictionary<string, QMAPP.ServicesAgent.LoginService.LoginInfo> users = new Dictionary<string, QMAPP.ServicesAgent.LoginService.LoginInfo>();
public LoginForm()
{
try
{
InitializeComponent();
//checkBox1.Visible = false;
//checkBox1.Checked = true;
//加载用户名
string userInfofile = ConfigurationManager.AppSettings["UserInfo"].ToString();
System.IO.FileStream fs = new System.IO.FileStream(userInfofile, System.IO.FileMode.OpenOrCreate);
if (fs.Length > 0)
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
users = bf.Deserialize(fs) as Dictionary<string, QMAPP.ServicesAgent.LoginService.LoginInfo>;
foreach (QMAPP.ServicesAgent.LoginService.LoginInfo user in users.Values)
{
comboBox1.Items.Add(user.LoginUserID);
}
for (int i = 0; i < users.Count; i++)
{
if (comboBox1.Text != "")
{
if (users.ContainsKey(comboBox1.Text))
{
this.txtPassWord.Text = users[comboBox1.Text].PassWord;
//checkBox1.Checked = true;
}
}
}
if (comboBox1.Items.Count > 0)
{
comboBox1.SelectedIndex = 0;
//checkBox1.Checked = true;
}
}
fs.Close();
//if (!users.Keys.Contains("JG1"))
//{
// users.Add("JG1", new LoginInfo { LoginUserID="JG1",PassWord="1" });
// comboBox1.Items.Add("JG1");
//}
}
catch (Exception ex)
{
throw ex;
}
}
#region 登录
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
if (this.comboBox1.Text == "")
{
MessageBox.Show("用户名不能为空!");
return;
}
if (this.txtPassWord.Text == "")
{
MessageBox.Show("密码不能为空!");
return;
}
//登录验证
loginUser = _loginClient.IsLogin(new QMAPP.ServicesAgent.LoginService.LoginInfo { LoginUserID = this.comboBox1.Text, PassWord = this.txtPassWord.Text, UserDes= this.txtPassWord.Text }
, ClientContext.GetCredentialInfo());
if (loginUser == null)
{
MessageBox.Show("用户名或密码输入不正确!");
return;
}
//存储用户名以及密码
if (this.checkBox1.Checked)
{
users.Clear();
string userInfofile = ConfigurationManager.AppSettings["UserInfo"].ToString();
System.IO.FileStream fs = new System.IO.FileStream(userInfofile, System.IO.FileMode.Create);
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
loginUser.PassWord = this.txtPassWord.Text;
if (users.Keys.Contains(loginUser.LoginUserID))
{
users[loginUser.LoginUserID] = loginUser;
}
else
{
users.Add(loginUser.LoginUserID, loginUser);
}
bf.Serialize(fs, users);
fs.Close();
}
ClientContext.LoginInfo = loginUser;
//打开主窗体
MainForm form = new MainForm(loginUser);
form.Show();
this.Hide();
}
catch (Exception ex)
{
throw ex;
}
}
private void Login(string userid, string pwd)
{
try
{
pwd = QMFrameWork.Common.Encrypt.DESEncrypt.Decrypt(pwd);
//登录验证
loginUser = _loginClient.IsLogin(new QMAPP.ServicesAgent.LoginService.LoginInfo { LoginUserID = userid, PassWord = pwd, UserDes = "" }
, ClientContext.GetCredentialInfo());
if (loginUser == null)
{
MessageBox.Show("登录码不正确或已过期,请联系管理员更换!");
return;
}
ClientContext.LoginInfo = loginUser;
//打开主窗体
MainForm form = new MainForm(loginUser);
form.Show();
this.Hide();
}
catch (System.Security.Cryptography.CryptographicException)
{
MessageBox.Show("登录码格式不正确!");
}
catch (System.FormatException)
{
MessageBox.Show("登录码格式不正确!");
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 取消
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
private void LoginForm_Load(object sender, EventArgs e)
{
LoadServerHost();
comboBox1.Focus();
comboBox1.SelectAll();
txtPassWord.SelectAll();
}
private void LoadServerHost()
{
Configuration cfg = ConfigurationManager.OpenExeConfiguration("");
var clientSecion = cfg.GetSection("system.serviceModel/client") as ClientSection;
lblServerHost.Text = GetEndointByName(clientSecion, "BasicHttpBinding_IGeneralService").Address.Host;
}
private ChannelEndpointElement GetEndointByName(ClientSection section, string endpointname)
{
foreach (ChannelEndpointElement endpoint in section.Endpoints)
{
if (string.Equals(endpoint.Name, endpointname))
{
return endpoint;
}
}
return null;
}
#region 输入控制
private void txtUserName_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (comboBox1.Text.StartsWith("<") && comboBox1.Text.EndsWith(">"))
{
var passport = comboBox1.Text.Trim('<', '>').Split(new string[]{"::"},StringSplitOptions.RemoveEmptyEntries);
if (passport.Length == 2)
{
string userid = passport[0];
string pwd = passport[1];
comboBox1.Text = "";
txtPassWord.Text = "";
Login(userid, pwd);
return;
}
}
txtPassWord.SelectAll();
txtPassWord.Focus();
e.Handled = true;
}
}
private void txtPassWord_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
this.btnLogin_Click(this.btnLogin, new EventArgs());
}
}
#endregion
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
if (users.ContainsKey(comboBox1.Text) && users[comboBox1.Text].PassWord != "")
{
this.txtPassWord.Text = users[comboBox1.Text].PassWord;
//checkBox1.Checked = true;
}
}
private void comboBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
MessageBox.Show("1");
}
DateTime lastDownTime = DateTime.Now;
private void comboBox1_MouseClick(object sender, MouseEventArgs e)
{
//TimeSpan sp = DateTime.Now - lastDownTime;
//if (sp.Milliseconds <= 500)
//{
// lastDownTime = DateTime.Now;
// QMAPP.WinForm.Forms.Common.TouchKey key = new Forms.Common.TouchKey((ComboBox)sender);
// key.ShowDialog();
//}
}
int clickcounter = 0;
private void lblServerHost_DoubleClick(object sender, EventArgs e)
{
clickcounter += 1;
if (clickcounter >= 3)
{
if (MessageBox.Show("您希望切换WCF服务器吗?\r\n点击“确定”,程序重启后将进入服务器切换界面;\r\n点击“取消”,不执行任何操作。", "服务器切换"
, MessageBoxButtons.OKCancel
, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK)
{
LocalSetting.Settings["SwitchServer"] = "1";
}
clickcounter = 0;
}
}
private void LoginForm_DoubleClick(object sender, EventArgs e)
{
comboBox1.SelectAll();
comboBox1.Focus();
}
}
}