/// <summary> /// 更改密码按钮按下 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnChangePassword_Click(object sender, EventArgs e) { if (ActiveUserID != 0) { switch (btnChangePassword.Text) { case "修改密码": grpUserChangePassword.Visible = true; txtUserCNewPassword.Text = ""; txtUserNewPassword.Text = ""; txtUserOldPassword.Text = ""; btnChangePassword.Text = "保存修改"; btnChangePassword.BackColor = Color.Yellow; break; case "保存修改": bool blnChangePassword = false; if (txtUserCNewPassword.Text.Equals(txtUserNewPassword.Text) == false) { MessageBox.Show("新密码和确认输入的密码不一致!请重新输入新密码", pMsgTitle); txtUserNewPassword.Text = ""; txtUserCNewPassword.Text = ""; return; } //保存修改用户信息 USER_INFO userNewInfo = new USER_INFO("无用参数"); DHClient.DHStringToByteArry(txtUserNewPassword.Text, ref userNewInfo.passWord); USER_INFO userOldInfo = new USER_INFO("无用参数"); userOldInfo.name = userManageInfo.userList[ActiveUserIndex].name; DHClient.DHStringToByteArry(txtUserOldPassword.Text,ref userOldInfo.passWord); blnChangePassword = DHClient.DHOperateUserInfo(pLoginID, USER_OPERATE.DH_USER_CHANGEPASSWORD, userNewInfo,userOldInfo, 3000); if (blnChangePassword == false) { MessageBox.Show("密码修改失败!\n"+DHClient.LastOperationInfo.ToString(pErrInfoFormatStyle), pMsgTitle); } btnChangePassword.Text = "修改密码"; btnChangePassword.BackColor = Color.Transparent; break; } } else { MessageBox.Show("请选择用户!", pMsgTitle); } }
/// <summary> /// 显示用户信息 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="blnShowRights">是否显示权限信息</param> private void ShowUserInfo(USER_INFO userInfo,bool blnShowRights) { txtUserAddName.Text = DHClient.DHByteArrayToString(userInfo.name); txtUserAddName.ReadOnly = true; txtUserAddPassword.Text = DHClient.DHByteArrayToString(userInfo.passWord); txtUserAddPassword.ReadOnly = true; txtUserAddDemo.Text = DHClient.DHByteArrayToString(userInfo.memo); txtUserAddDemo.ReadOnly = true; chkUserReusable.Checked=(userInfo.dwReusable ==1?true:false); chkUserReusable.AutoCheck = false; ActiveUserID = userInfo.dwID; ActiveGroupID = userInfo.dwGroupID; if (blnShowRights == true) { ShowRights(userInfo.rights, userInfo.dwRightNum); } }
/// <summary> /// 修改用户信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnEditUser_Click(object sender, EventArgs e) { if (ActiveUserID != 0) { switch (btnEditUser.Text) { case "修改用户": grpUserChangePassword.Visible = false;//更改用户密码的控件不显示 chkUserReusable.AutoCheck = true; txtUserAddDemo.ReadOnly = false; txtUserAddName.ReadOnly = false; txtUserAddPassword.ReadOnly = true; btnEditUser.BackColor = Color.Yellow; btnEditUser.Text = "保存修改"; break; case "保存修改": bool blnEditUser = false; #region << 保存修改用户信息代码 >> //保存修改用户信息 USER_INFO usrInfo = new USER_INFO("无效参数"); usrInfo.dwGroupID = userManageInfo.userList[ActiveUserIndex].dwGroupID; usrInfo.dwID = userManageInfo.userList[ActiveUserIndex].dwID; usrInfo.dwReusable = (uint)(chkUserReusable.Checked == true ? 1 : 0); usrInfo.passWord = userManageInfo.userList[ActiveUserIndex].passWord; DHClient.DHStringToByteArry(txtUserAddName.Text, ref usrInfo.name); DHClient.DHStringToByteArry(txtUserAddDemo.Text, ref usrInfo.memo); //usrInfo.rights = new uint[100]; uint rightsNum = 0; for (int i = 0; i < chkRightList.Items.Count; i++) { if (chkRightList.GetItemChecked(i) == true) { usrInfo.rights[rightsNum] = rightListArray[i].keyID; rightsNum += 1; } } usrInfo.dwRightNum = rightsNum; blnEditUser = DHClient.DHOperateUserInfo(pLoginID, USER_OPERATE.DH_USER_EDIT, usrInfo, userManageInfo.userList[ActiveUserIndex], 3000); #endregion if (blnEditUser == true)//添加用户信息成功 { GetUserInfo(pLoginID, ref userManageInfo, 3000); } else { MessageBox.Show("修改用户信息失败!\n" + DHClient.LastOperationInfo.ToString(pErrInfoFormatStyle), pMsgTitle); } btnEditUser.BackColor = Color.Transparent; txtUserAddDemo.Text = ""; txtUserAddName.Text = ""; txtUserAddPassword.Text = ""; chkUserReusable.Checked = false; btnEditUser.Text = "修改用户"; ActiveUserID = 0; break; } } }
/// <summary> /// 修改用户基本信息/修改用户密码 /// </summary> /// <param name="iLogin">DHLogin返回值</param> /// <param name="userNewInfo">用户变更后信息</param> /// <param name="userOldInfo">用户变更前信息</param> /// <param name="waitTime">等待时间</param> /// <returns></returns> public static bool DHOperateUserInfo(int iLogin, USER_OPERATE operate, USER_INFO userNewInfo, USER_INFO userOldInfo, int waitTime) { bool retValue = false; IntPtr pBoxInfo = IntPtr.Zero; IntPtr pBoxInfo1 = IntPtr.Zero; try { pBoxInfo = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_INFO)));//分配固定的指定大小的内存空间 pBoxInfo1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_INFO)));//分配固定的指定大小的内存空间 if (pBoxInfo != IntPtr.Zero & pBoxInfo1!=IntPtr.Zero) { Marshal.StructureToPtr(userNewInfo, pBoxInfo, true); Marshal.StructureToPtr(userOldInfo, pBoxInfo1, true); retValue = CLIENT_OperateUserInfo(iLogin, (int)operate, pBoxInfo, pBoxInfo1, waitTime); } DHThrowLastError(retValue); } catch (Exception e) { DHThrowLastError(e); retValue = false; } finally { Marshal.FreeHGlobal(pBoxInfo);//释放固定内存分配 pBoxInfo = IntPtr.Zero; Marshal.FreeHGlobal(pBoxInfo1);//释放固定内存分配 pBoxInfo1 = IntPtr.Zero; } return retValue; }