如何删除绑定到变量的datagridview项,然后更新

时间:2016-10-17 01:00:51

标签: c# datagridview

我只是想知道,如何删除所选的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;
    }
}

0 个答案:

没有答案