1

ユーザーが大量の従業員データを入力して [送信] ボタンを押すと、1 つのフォームから情報を渡すのに苦労しています。情報は、datagridview テーブルに追加された行として表示されます。この問題を解決するにはどうすればよいですか?

私が現在持っているコード:

Form1:
  public partial class Form1 : Form
  {
    public Form1()
    {
        InitializeComponent();
    }

        private void getEmployeedata(Manager manager)
        {
            int age;
            int years;
            int salary;                

            manager.FirstName = firstnameBox.Text;
            manager.LastName = lastnameBox.Text;
            manager.Gender = genderBox.Text;
            manager.Title = titleBox.Text;
            manager.Exempt = exemptBox.Text;

            if (int.TryParse(ageBox.Text, out age))
            {
                manager.Age = age;

                if (int.TryParse(yearsBox.Text, out years))
                {
                    manager.Years = years;

                    if (int.TryParse(salaryBox.Text, out salary))
                    {
                        manager.Salary = salary;
                    }
                    else
                    {
                        MessageBox.Show("Wrong salary input");
                    }
                }
                else
                {
                    MessageBox.Show("Wrong Years input");
                }
            }
            else
            {
                MessageBox.Show("Wrong age input");
            }
        }

    private void submitButton_Click(object sender, EventArgs e)
    {
        Manager manager = new Manager();
        getEmployeedata(manager);

        EmployeeListing form2 = new EmployeeListing(manager.FirstName, manager.LastName, manager.Gender, manager.Age, manager.Years, manager.Title, manager.Exempt, manager.Salary);
        form2.Show();

    }

    private void clearButton_Click(object sender, EventArgs e)
    {
        firstnameBox.Text = "";
        lastnameBox.Text = "";
        genderBox.Text = "";
        ageBox.Text = "";
        yearsBox.Text = "";
        titleBox.Text = "";
        exemptBox.Text = "";
        salaryBox.Text = "";
    }

}

class Employee
{
    private string firstName = "";
    private string lastName = "";
    private string gender = "";
    private int age = 0;
    private int years = 0;

    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }

    }

    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }

    public string Gender
    {
        get { return gender; }
        set { gender = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public int Years
    {
        get { return years; }
        set { years = value; }
    }

} //end Employee class

class Manager : Employee
{
    private string title = "";
    private string exempt = "";
    private int salary = 0;

    public string Title
    {
        get { return title; }
        set { title = value; }
    }

    public string Exempt
    {
        get { return exempt; }
        set { exempt = value; }
    }

    public int Salary
    {
        get { return salary; }
        set { salary = value; }
    }

} //end Manager class

Form2:

public partial class EmployeeListing : Form
{
    public EmployeeListing(string firstname, string lastname, string gender, int age, int years, string title, string exempt, int salary)
    {
            InitializeComponent();
            employeeList.Rows.Add(firstname, lastname, gender, age, years, title, exempt, salary);                      
    }

 }
4

2 に答える 2

2

クリック ハンドラーでは、ボタンをクリックするたびに EmployeeListing フォームを初期化していますが、おそらくこれを 1 回だけ実行したいと考えています。その後のクリックでアクセスできます。フォームにデータを追加し続けるには、行データを追加するパブリック メソッドを EmployeeListing フォームに作成し、フォームのインスタンスを使用してクリック ハンドラーからこのメソッドを呼び出すことができます。

これはテストされていませんが、始めるために...

    public partial class Form1 : Form
      {
        public Form1()
        {
            InitializeComponent();
        }
        private void getEmployeedata(Manager manager)
        {
            int age;
            int years;
            int salary;   
            EmployeeListing form2;      

            manager.FirstName = firstnameBox.Text;
            manager.LastName = lastnameBox.Text;
            manager.Gender = genderBox.Text;
            manager.Title = titleBox.Text;
            manager.Exempt = exemptBox.Text;

            if (int.TryParse(ageBox.Text, out age))
            {
                manager.Age = age;

                if (int.TryParse(yearsBox.Text, out years))
                {
                    manager.Years = years;

                    if (int.TryParse(salaryBox.Text, out salary))
                    {
                        manager.Salary = salary;
                    }
                    else
                    {
                        MessageBox.Show("Wrong salary input");
                    }
                }
                else
                {
                    MessageBox.Show("Wrong Years input");
                }
            }
            else
            {
                MessageBox.Show("Wrong age input");
            }
        }

    private void submitButton_Click(object sender, EventArgs e)
    {
        Manager manager = new Manager();
        getEmployeedata(manager);
        if (form2 == null)
        {
            EmployeeListing form2 = new EmployeeListing();
            form2.Show();
        }       

        form2.AddRowData(manager.FirstName, manager.LastName, manager.Gender, manager.Age, manager.Years, manager.Title, manager.Exempt, manager.Salary);
    }

    private void clearButton_Click(object sender, EventArgs e)
    {
        firstnameBox.Text = "";
        lastnameBox.Text = "";
        genderBox.Text = "";
        ageBox.Text = "";
        yearsBox.Text = "";
        titleBox.Text = "";
        exemptBox.Text = "";
        salaryBox.Text = "";
    }

}

class Employee
{
    private string firstName = "";
    private string lastName = "";
    private string gender = "";
    private int age = 0;
    private int years = 0;

    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }

    }

    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }

    public string Gender
    {
        get { return gender; }
        set { gender = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public int Years
    {
        get { return years; }
        set { years = value; }
    }

} //end Employee class

class Manager : Employee
{
    private string title = "";
    private string exempt = "";
    private int salary = 0;

    public string Title
    {
        get { return title; }
        set { title = value; }
    }

    public string Exempt
    {
        get { return exempt; }
        set { exempt = value; }
    }

    public int Salary
    {
        get { return salary; }
        set { salary = value; }
    }

} //end Manager class

public partial class EmployeeListing : Form
{
    public EmployeeListing()
    {
        InitializeComponent();                                
    }

    public AddRowData(string firstname, string lastname, string gender, int age, int years, string title, string exempt, int salary)
    {
        employeeList.Rows.Add(firstname, lastname, gender, age, years, title, exempt, salary); 
    }
 }
于 2013-02-05T02:07:41.350 に答える
0

EmployeeListing() コンストラクターで DataTable を作成し、DataSource を設定できます。

public EmployeeListing(string firstname, string lastname, string gender, int age, int years, string title, string exempt, int salary)
    {
            InitializeComponent();
            //employeeList.Rows.Add(firstname, lastname, gender, age, years, title, exempt, salary);                      

            DataTable dtSource = new DataTable();
            dtSource.Columns.Add("firstname", typeof(string));
            dtSource.Columns.Add("lastname", typeof(string));
            dtSource.Columns.Add("gender", typeof(string));
            dtSource.Columns.Add("age", typeof(string));
            dtSource.Columns.Add("years", typeof(string));
            dtSource.Columns.Add("title", typeof(string));
            dtSource.Columns.Add("exempt", typeof(string));
            dtSource.Columns.Add("salary", typeof(string));
            DataRow dtRow;

            dtRow = dtSource.NewRow();
            dtRow[0] = firstname;
            dtRow[1] = lastname;
            dtRow[2] = gender;
            dtRow[3] = age;
            dtRow[4] = years;
            dtRow[5] = Title;
            dtRow[6] = exempt;
            dtRow[7] = salary;

            dtSource.Rows.Add(dtRow.ItemArray);

            employeeList.DataSource = dtSource;


    }

グリッドビューに行を複数回追加する場合は、コンストラクターではなく、別の関数でもこれを実行する必要があります。

于 2013-02-05T02:01:18.777 に答える