我只是想知道,如何删除所选的datagridview项,因此删除变量中的item成员,从而更新表和文本文件?
frmMainPage:
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Threading.Tasks;
using System.Windows.Forms;
using AForge.Video;
using AForge.Imaging;
using AForge.Imaging.Filters;
using AForge;
using AForge.Video.DirectShow;
using System.Drawing.Imaging;
namespace BusinessSoftware
{
public partial class frmMainPage : Form
{
private FilterInfoCollection VideoCaptureDevices;
private VideoCaptureDevice FinalVideoSource;
Bitmap image;
int currentlySelectedRow;
string currentlySelectedName;
int currentlySelectedId;
int currentlySelectedAuthority;
bool isCurrentlyUserLoginPage;
bool isCurrentlyAdminLoginPage;
bool isCurrentlyForgotPasswordPage;
bool isCurrentlyViewEmployeesPage;
bool isCurrentlyScanBarcodePage;
bool isCurrentlyEmployeeFoundPage;
bool isCurrentlyEditEmployeeDetailsPage;
DataTable table = new DataTable();
bool isCurrentlyControlPanelPage;
string txtUsernameFieldPlaceholder;
string btnLoginValue;
string employeeDetailsFileContents;
string userLoginDetailsFileContents;
string[] employeeDetails;
string[] userLoginDetails;
string[] employeeInformationElements;
List<string> employeeDetailElements = new List<string>();
string[] userLoginInformationElements;
List<string> userLoginDetailElements = new List<string>();
string isAUser;
string enteredPassword;
string usernameOfForgottenUser;
string passwordOfForgottenUser;
public frmMainPage()
{
InitializeComponent();
}
private void frmMainPage_Load(object sender, EventArgs e)
{
HideEverything();
btnForgotPassword.Show();
txtUsernameField.Text = txtUsernameFieldPlaceholder;
txtPasswordField.Text = "Password";
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
GlobalVariables.emailSent = false;
btnLoginValue = "Login";
btnLogin.Text = btnLoginValue;
lblLoginTypePage.Text = "User Login";
isCurrentlyUserLoginPage = true;
isCurrentlyAdminLoginPage = false;
isCurrentlyForgotPasswordPage = false;
txtUsernameFieldPlaceholder = "Username";
txtUsernameField.Text = txtUsernameFieldPlaceholder;
GetAndStoreEmployeeInformation();
GetAndStoreUserInformation();
btnFocusOnThis.Text = "";
btnFocusOnThis.Focus();
}
private void btnLoginTypePage_Click(object sender, EventArgs e)
{
if (isCurrentlyUserLoginPage)
{
AdminLoginPage();
}
else if (isCurrentlyAdminLoginPage)
{
UserLoginPage();
}
else
{
UserLoginPage();
}
}
private void txtUsernameField_Leave(object sender, EventArgs e)
{
if (String.IsNullOrWhiteSpace(txtUsernameField.Text))
{
txtUsernameField.Text = txtUsernameFieldPlaceholder;
}
}
private void txtUsernameField_Enter(object sender, EventArgs e)
{
txtUsernameField.Text = "";
}
private void txtPasswordField_Leave(object sender, EventArgs e)
{
if (String.IsNullOrWhiteSpace(txtPasswordField.Text))
{
txtPasswordField.PasswordChar = '\0';
txtPasswordField.Text = "Password";
}
}
private void txtPasswordField_Enter(object sender, EventArgs e)
{
txtPasswordField.Text = "";
txtPasswordField.PasswordChar = '*';
}
private void frmMainPage_MouseClick(object sender, MouseEventArgs e)
{
if (txtPasswordField.Focused || txtUsernameField.Focused)
{
btnFocusOnThis.Focus();
}
}
private void frmLoginPage_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13 && (txtPasswordField.Focused || txtUsernameField.Focused))
{
btnLogin.PerformClick();
}
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (isCurrentlyAdminLoginPage)
{
if (txtUsernameField.Text == "admin" && txtPasswordField.Text == "password")
{
}
}
else if (isCurrentlyUserLoginPage)
{
enteredPassword = txtPasswordField.Text;
isAUser =
(from p in GlobalVariables.users
where p.Username == txtUsernameField.Text
select p.Password).SingleOrDefault();
if (isAUser != null)
{
if (isAUser == enteredPassword)
{
GlobalVariables.currentUser = txtUsernameField.Text;
ControlPanelPage();
}
else
{
MessageBox.Show("Incorrect Password");
}
}
else
{
MessageBox.Show("User not found!");
}
}
else
{
usernameOfForgottenUser =
(from p in GlobalVariables.users
where p.Email == txtUsernameField.Text
select p.Username).SingleOrDefault();
passwordOfForgottenUser =
(from p in GlobalVariables.users
where p.Email == txtUsernameField.Text
select p.Password).SingleOrDefault();
if (passwordOfForgottenUser != null && usernameOfForgottenUser != null)
{
SendEmail();
}
else
{
MessageBox.Show("Email not registered to user!");
}
}
}
public void AdminLoginPage()
{
btnForgotPassword.Show();
btnFocusOnThis.Focus();
btnLoginTypePage.Text = "User Login";
txtUsernameField.Text = "Username";
lblLoginTypePage.Text = "Administrator Login";
btnLoginValue = "Login";
btnLogin.Text = btnLoginValue;
isCurrentlyUserLoginPage = false;
isCurrentlyAdminLoginPage = true;
isCurrentlyForgotPasswordPage = false;
txtPasswordField.Show();
}
public void ForgotPasswordPage()
{
isCurrentlyForgotPasswordPage = true;
isCurrentlyAdminLoginPage = false;
isCurrentlyUserLoginPage = false;
btnForgotPassword.Hide();
lblLoginTypePage.Text = "Forgot Password";
btnLoginTypePage.Text = "User Login";
btnLoginValue = "Send Email";
btnLogin.Text = btnLoginValue;
txtUsernameFieldPlaceholder = "Email";
txtUsernameField.Text = txtUsernameFieldPlaceholder;
isCurrentlyUserLoginPage = false;
isCurrentlyAdminLoginPage = false;
isCurrentlyForgotPasswordPage = true;
txtPasswordField.Hide();
}
public void UserLoginPage()
{
lblLoginTypePage.Text = "User Login";
btnLoginTypePage.Text = "Admin Login";
txtPasswordField.PasswordChar = '\0';
txtPasswordField.Text = "Password";
btnFocusOnThis.Focus();
btnForgotPassword.Show();
txtUsernameField.Show();
txtPasswordField.Show();
btnLogin.Show();
btnForgotPassword.Show();
btnLoginTypePage.Show();
btnQuit.Show();
lblLoginTypePage.Show();
txtUsernameFieldPlaceholder = "Username";
txtUsernameField.Text = txtUsernameFieldPlaceholder;
btnLoginValue = "Login";
btnLogin.Text = btnLoginValue;
isCurrentlyUserLoginPage = true;
isCurrentlyAdminLoginPage = false;
isCurrentlyForgotPasswordPage = false;
txtPasswordField.Show();
}
public void GetAndStoreEmployeeInformation()
{
employeeDetailsFileContents = System.IO.File.ReadAllText(@"EmployeeDetails.txt");
employeeDetails = employeeDetailsFileContents.Split("\n\r".ToArray(), StringSplitOptions.RemoveEmptyEntries);
GlobalVariables.employees.Clear();
foreach (string line in employeeDetails)
{
employeeInformationElements = line.Split(',');
List<string> employeeDetailElements = new List<string>();
foreach (string element in employeeInformationElements)
{
employeeDetailElements.Add(element);
}
GlobalVariables.employees.Add(new Employee
{
Name = employeeDetailElements[0],
Id = Convert.ToInt32(employeeDetailElements[1]),
Authority = Convert.ToInt32(employeeDetailElements[2])
});
}
}
public void GetAndStoreUserInformation()
{
userLoginDetailsFileContents = System.IO.File.ReadAllText(@"UserLoginDetails.txt");
userLoginDetails = userLoginDetailsFileContents.Split("\n\r".ToArray(), StringSplitOptions.RemoveEmptyEntries);
foreach (string line in userLoginDetails)
{
userLoginInformationElements = line.Split(',');
List<string> userLoginDetailElements = new List<string>();
foreach (string element in userLoginInformationElements)
{
userLoginDetailElements.Add(element);
}
GlobalVariables.users.Add(new User
{
Username = userLoginDetailElements[0],
Email = userLoginDetailElements[1],
Password = userLoginDetailElements[2]
});
}
}
private void btnForgotPassword_Click(object sender, EventArgs e)
{
ForgotPasswordPage();
}
public void SendEmail()
{
string fromaddr = "exampleCompany@gmail.com";
string toaddr = txtUsernameField.Text;
string password = "founder1971";
MailMessage msg = new MailMessage();
msg.Subject = "Username & Password";
msg.From = new MailAddress(fromaddr);
msg.Body = "Your username is: " + usernameOfForgottenUser + "\n" + "Your password is: " + passwordOfForgottenUser + "\n\nRegards,\nThe IT Team.";
msg.To.Add(new MailAddress(toaddr));
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.UseDefaultCredentials = false;
smtp.EnableSsl = true;
NetworkCredential nc = new NetworkCredential(fromaddr, password);
smtp.Credentials = nc;
frmAlertBox frm = new frmAlertBox();
frm.Show();
smtp.Send(msg);
GlobalVariables.emailSent = true;
UserLoginPage();
}
public void HideLogin()
{
txtUsernameField.Hide();
txtPasswordField.Hide();
btnLogin.Hide();
btnForgotPassword.Hide();
btnLoginTypePage.Hide();
btnQuit.Hide();
lblLoginTypePage.Hide();
isCurrentlyUserLoginPage = false;
isCurrentlyAdminLoginPage = false;
isCurrentlyForgotPasswordPage = false;
}
public void ControlPanelPage()
{
HideLogin();
HideEverything();
isCurrentlyViewEmployeesPage = false;
isCurrentlyScanBarcodePage = false;
isCurrentlyEmployeeFoundPage = false;
isCurrentlyEditEmployeeDetailsPage = false;
isCurrentlyControlPanelPage = true;
btnLogOut.Show();
btnScanBarcode.Show();
btnViewEmployees.Show();
}
public void HideEverything()
{
btnDelete.Hide();
btnEditEmployeeDetails.Hide();
btnCancelUpdate.Hide();
btnAdd.Hide();
btnCancel.Hide();
btnEditDetails.Hide();
lblEmployeeName.Hide();
lblEmployeeId.Hide();
lblEmployeeAuthority.Hide();
btnForgotPassword.Hide();
btnScanBarcode.Hide();
btnViewEmployees.Hide();
btnLogOut.Hide();
dgvViewEmployees.Hide();
btnBack.Hide();
picScanBarcode.Hide();
txtAuthority.Hide();
txtId.Hide();
txtName.Hide();
lblName.Hide();
picEmployeeFoundImage.Hide();
lblId.Hide();
lblAuthority.Hide();
btnSaveAndUpdate.Hide();
txtScanBarcode.Hide();
picEmployeeImage.Hide();
btnCaptureNewImage.Hide();
txtEmployeeAuthority.Hide();
txtEmployeeId.Hide();
txtEmployeeName.Hide();
btnCaptureNewEmployeeImage.Hide();
}
private void btnQuit_Click(object sender, EventArgs e)
{
this.Close();
Application.Exit();
}
private void btnLogOut_Click(object sender, EventArgs e)
{
HideEverything();
UserLoginPage();
}
private void btnViewEmployees_Click(object sender, EventArgs e)
{
ViewEmployees();
}
public void ViewEmployees()
{
HideEverything();
btnDelete.Show();
btnAdd.Show();
btnEditEmployeeDetails.Show();
txtName.Enabled = false;
txtId.Enabled = false;
txtAuthority.Enabled = false;
btnCaptureNewImage.Show();
dgvViewEmployees.Show();
btnBack.Show();
dgvViewEmployees.DataSource = null;
dgvViewEmployees.Rows.Clear();
dgvViewEmployees.Columns.Clear();
picEmployeeImage.Show();
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Id", typeof(string));
table.Columns.Add("Authority", typeof(string));
int x = 0;
Employee employee;
while (x < GlobalVariables.employees.Count())
{
employee = GlobalVariables.employees[x];
table.Rows.Add(employee.Name, employee.Id, employee.Authority);
x++;
}
dgvViewEmployees.DataSource = table;
txtAuthority.Show();
txtId.Show();
txtName.Show();
lblName.Show();
lblId.Show();
lblAuthority.Show();
}
public void ScanBarcode()
{
HideEverything();
picScanBarcode.Show();
btnBack.Show();
txtScanBarcode.Show();
}
public void EmployeeFound(string employeeId)
{
isCurrentlyEmployeeFoundPage = true;
HideEverything();
btnEditDetails.Show();
picEmployeeFoundImage.Show();
btnBack.Show();
lblEmployeeName.Show();
lblEmployeeId.Show();
lblEmployeeAuthority.Show();
txtEmployeeName.Show();
txtEmployeeId.Show();
txtEmployeeAuthority.Show();
string src = "Images\\" + employeeId + ".bmp";
picEmployeeFoundImage.Image = System.Drawing.Image.FromFile(src);
string EmployeeName =
(from x in GlobalVariables.employees
where x.Id == Convert.ToInt32(employeeId)
select x.Name).SingleOrDefault();
int EmployeeAuthority =
(from x in GlobalVariables.employees
where x.Id == Convert.ToInt32(employeeId)
select x.Authority).SingleOrDefault();
txtEmployeeName.Text = EmployeeName;
txtEmployeeId.Text = employeeId;
txtEmployeeAuthority.Text = Convert.ToString(EmployeeAuthority);
}
public void EditEmployeeDetails()
{
HideEverything();
}
private void btnBack_Click(object sender, EventArgs e)
{
HideEverything();
try {
FinalVideoSource.Stop();
} catch
{
}
ControlPanelPage();
isCurrentlyEmployeeFoundPage = false;
}
private void btnScanBarcode_Click(object sender, EventArgs e)
{
ScanBarcode();
}
private void dgvViewEmployees_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
if (e.StateChanged != DataGridViewElementStates.Selected) return;
dgvViewEmployees.Rows.GetRowCount(DataGridViewElementStates.Selected);
Int32 selectedRowCount =
dgvViewEmployees.Rows.GetRowCount(DataGridViewElementStates.Selected);
if (selectedRowCount > 0)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
currentlySelectedRow = dgvViewEmployees.SelectedRows[0].Index;
currentlySelectedName = Convert.ToString(dgvViewEmployees.Rows[currentlySelectedRow].Cells[0].Value);
currentlySelectedId = Convert.ToInt32(dgvViewEmployees.Rows[currentlySelectedRow].Cells[1].Value);
currentlySelectedAuthority = Convert.ToInt32(dgvViewEmployees.Rows[currentlySelectedRow].Cells[2].Value);
}
txtName.Text = currentlySelectedName;
txtId.Text = Convert.ToString(currentlySelectedId);
txtAuthority.Text = Convert.ToString(currentlySelectedAuthority);
try
{
string src = "Images\\" + currentlySelectedId + ".bmp";
picEmployeeImage.Image = System.Drawing.Image.FromFile(src);
picEmployeeImage.Size = new System.Drawing.Size(picEmployeeImage.Width, 300);
}
catch
{
picEmployeeImage.Image = null;
}
}
private void btnSaveAndUpdate_Click(object sender, EventArgs e)
{
SaveAndUpdate();
btnEditEmployeeDetails.Show();
btnSaveAndUpdate.Hide();
}
public void SaveAndUpdate()
{
int currentIndex = dgvViewEmployees.SelectedRows[0].Index;
dgvViewEmployees.Rows[currentIndex].Cells[0].Value = txtName.Text;
dgvViewEmployees.Rows[currentIndex].Cells[1].Value = txtId.Text;
dgvViewEmployees.Rows[currentIndex].Cells[2].Value = txtAuthority.Text;
string fileContents = "";
GlobalVariables.employees[currentIndex].Name = txtName.Text;
GlobalVariables.employees[currentIndex].Id = Convert.ToInt32(txtId.Text);
GlobalVariables.employees[currentIndex].Authority = Convert.ToInt32(txtAuthority.Text);
foreach (Employee employee in GlobalVariables.employees)
{
fileContents = fileContents + employee.Name + "," + employee.Id + "," + employee.Authority + Environment.NewLine;
}
File.Delete(@"EmployeeDetails.txt");
File.WriteAllText(@"EmployeeDetails.txt", fileContents);
GetAndStoreEmployeeInformation();
// ViewEmployees();
}
private void txtScanBarcode_TextChanged(object sender, EventArgs e)
{
if (txtScanBarcode.Text.Length == 6)
{
string isEmployeeFound =
(from x in GlobalVariables.employees
where x.Id == Convert.ToInt32(txtScanBarcode.Text)
select x.Name).SingleOrDefault();
if (isEmployeeFound != null)
{
EmployeeFound(txtScanBarcode.Text);
}
}
}
void VideoShow()
{
VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
FinalVideoSource = new VideoCaptureDevice(VideoCaptureDevices[0].MonikerString);
FinalVideoSource.NewFrame += new NewFrameEventHandler(FinalVideoSource_NewFrame);
FinalVideoSource.Start();
}
void FinalVideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
image = (Bitmap)eventArgs.Frame.Clone();
image = CropBitmap(image, 150, 100, 300, 200);
if (isCurrentlyEmployeeFoundPage == true)
{
picEmployeeFoundImage.Image = image;
} else
{
picEmployeeImage.Image = image;
}
}
private void btnCaptureNewImage_Click(object sender, EventArgs e)
{
if (btnCaptureNewImage.Text == "Capture New Image")
{
VideoShow();
btnCaptureNewImage.Text = "Take Photo";
}
else
{
FinalVideoSource.Stop();
TakePhoto();
btnCaptureNewImage.Text = "Capture New Image";
}
}
public Bitmap CropBitmap(Bitmap bitmap, int cropX, int cropY, int cropWidth, int cropHeight)
{
Rectangle rect = new Rectangle(cropX, cropY, cropWidth, cropHeight);
Bitmap cropped = bitmap.Clone(rect, bitmap.PixelFormat);
return cropped;
}
public void TakePhoto()
{
Bitmap bm = new Bitmap(picEmployeeImage.Width, picEmployeeImage.Height);
bm = (Bitmap)picEmployeeImage.Image;
Bitmap bmp = new Bitmap(bm.Width, bm.Height);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(bm, 0, 0, bmp.Width, bmp.Height);
if (currentlySelectedId != 0)
{
bmp.Save(@"Images\\" + currentlySelectedId + ".bmp", ImageFormat.Bmp);
}
}
private void picEmployeeFoundImage_Click(object sender, EventArgs e)
{
}
private void btnEditDetails_Click(object sender, EventArgs e)
{
if (btnEditDetails.Text == "Save Details")
{
txtEmployeeName.Enabled = false;
txtEmployeeId.Enabled = false;
txtEmployeeAuthority.Enabled = false;
btnCancel.Hide();
btnEditDetails.Text = "Edit Details";
btnCaptureNewEmployeeImage.Hide();
}
else
{
txtEmployeeName.Enabled = true;
txtEmployeeId.Enabled = true;
txtEmployeeAuthority.Enabled = true;
btnCancel.Show();
btnEditDetails.Text = "Save Details";
btnCaptureNewEmployeeImage.Show();
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
txtEmployeeName.Enabled = false;
txtEmployeeId.Enabled = false;
txtEmployeeAuthority.Enabled = false;
btnCancel.Hide();
btnEditDetails.Text = "Edit Details";
}
private void btnCaptureNewEmployeeImage_Click(object sender, EventArgs e)
{
if (btnCaptureNewImage.Text == "Capture New Image")
{
VideoShow();
btnCaptureNewImage.Text = "Take Photo";
}
else
{
FinalVideoSource.Stop();
TakePhoto();
btnCaptureNewImage.Text = "Capture New Image";
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
currentlySelectedAuthority = 0;
currentlySelectedId = 0;
currentlySelectedName = "";
//this.dgvViewEmployees.Rows.Add("five", "six", "seven");
btnAdd.Text = "Create";
txtEmployeeName.Enabled = true;
txtEmployeeId.Enabled = true;
txtEmployeeAuthority.Enabled = true;
}
private void btnEditEmployeeDetails_Click(object sender, EventArgs e)
{
btnCancelUpdate.Show();
txtName.Enabled = true;
txtId.Enabled = true;
txtAuthority.Enabled = true;
btnEditEmployeeDetails.Hide();
btnSaveAndUpdate.Show();
}
private void btnCancelUpdate_Click(object sender, EventArgs e)
{
btnCancelUpdate.Hide();
btnEditEmployeeDetails.Show();
btnSaveAndUpdate.Hide();
txtName.Enabled = false;
txtId.Enabled = false;
txtAuthority.Enabled = false;
}
private void btnDelete_Click(object sender, EventArgs e)
{
foreach (DataGridViewCell oneCell in dgvViewEmployees.SelectedCells)
{
string nameToDelete = dgvViewEmployees.Rows[dgvViewEmployees.SelectedRows[0].Index].Cells["Name"].Value.ToString();
}
}
}
}
类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BusinessSoftware
{
public class Employee
{
public string Name;
public int Id;
public int Authority;
}
public class User
{
public string Username;
public string Password;
public string Email;
}
public static class GlobalVariables
{
public static List<Employee> employees = new List<Employee>();
public static List<User> users = new List<User>();
public static string currentUser;
public static bool emailSent;
}
}