윈폼 자식폼 데이터테이블 내용저장/텍스트박스,라벨에 파싱/유저컨트롤 배열 유지 관련질문

조회수 35회

지금까지 메인폼의 유저컨트롤 추가와 유저컨트롤 클릭 시 자식폼에 진입하며 데이터테이블의 내용추가,내용삭제,내용수정 등 기능은 추가했지만 프로그램 실행,추가 후 종료를 하면 배열이 유지가 안되는 문제와 자식폼의 내용 저장방식을 어떤식으로 해야할지 몰라서 질문 올려봅니다.

자식폼 배열,코드 이미지 //이미지

    public void pictureBox1_DoubleClick(object sender, EventArgs e)
    {
        OpenFileDialog opf = new OpenFileDialog();
        opf.Title = "파일 불러오기...";
        opf.Filter = "Image File *.jpg; *.jpeg; *.bmp; *.png;|(*.jpg; *.jpeg; *.bmp; *.png;)";

        if(opf.ShowDialog() == DialogResult.OK)
        {
            Bitmap image = new Bitmap(opf.FileName);
            pictureBox1.Image = image;
        }
    }

    //테이블
    DataTable table = new DataTable();
    int selectedRow;

    public void productEdit_Load(object sender, EventArgs e)
    {
        table.Columns.Add("제품분류", typeof(string));
        table.Columns.Add("주문수량", typeof(int));
        table.Columns.Add("판매수량", typeof(int));
        table.Columns.Add("현재수량", typeof(int));
        table.Columns.Add("주문금액", typeof(string));
        table.Columns.Add("주문일자", typeof(string));

        dataGridView1.DataSource = table;
    }

    //추가버튼

    private void button2_Click(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(productTag.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }
        else if (String.IsNullOrEmpty(productBuy.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }
        else if(String.IsNullOrEmpty(productSell.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }
        /*else if(String.IsNullOrEmpty(productNow.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }*/
        else if(String.IsNullOrEmpty(productPrice.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }
        else if(String.IsNullOrEmpty(productDate.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }

        table.Rows.Add(productTag.Text, productBuy.Text, productSell.Text, productNow.Text, productPrice.Text, productDate.Text);
        dataGridView1.DataSource = table;
        calGridView();
        productNowCalc();

    }

    //수정버튼
    private void button3_Click(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(productTag.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }
        else if (String.IsNullOrEmpty(productBuy.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }
        else if (String.IsNullOrEmpty(productSell.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }
        /*else if (String.IsNullOrEmpty(productNow.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }*/
        else if (String.IsNullOrEmpty(productPrice.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }
        else if (String.IsNullOrEmpty(productDate.Text))
        {
            MessageBox.Show("이 항목은 비울 수 없습니다.");
            return;
        }

        DataGridViewRow row = dataGridView1.Rows[selectedRow];

        //dataGridView1.Rows[selectedRow];
        row.Cells[0].Value = productTag.Text;
        row.Cells[1].Value = productBuy.Text;
        row.Cells[2].Value = productSell.Text;
        row.Cells[3].Value = productNow.Text;
        row.Cells[4].Value = productPrice.Text;
        row.Cells[5].Value = productDate.Text;
        calGridView();
        productNowCalc();
    }

    //셀 클릭시 정보 표시
    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        if (String.IsNullOrEmpty(productTag.Text))
        {
            return;
        }
        else if (String.IsNullOrEmpty(productBuy.Text))
        {
            return;
        }
        else if (String.IsNullOrEmpty(productSell.Text))
        {
            return;
        }
        else if (String.IsNullOrEmpty(productNow.Text))
        {
            return;
        }
        else if (String.IsNullOrEmpty(productPrice.Text))
        {
            return;
        }
        else if (String.IsNullOrEmpty(productDate.Text))
        {
            return;
        }


        DataGridViewRow row = dataGridView1.Rows[selectedRow];
        productTag.Text = row.Cells[0].Value.ToString();
        productBuy.Text = row.Cells[1].Value.ToString();
        productSell.Text = row.Cells[2].Value.ToString();
        productNow.Text = row.Cells[3].Value.ToString();
        productPrice.Text = row.Cells[4].Value.ToString();
        productDate.Text = row.Cells[5].Value.ToString();
    }

    //주문금액 계산
    void calGridView()
    {
        double cal = 0;

        for (int i = 0; i<dataGridView1.Rows.Count;i++)
        {
            try
            {
                cal = cal + double.Parse(dataGridView1.Rows[i].Cells["주문금액"].Value.ToString());
            }
            catch
            { }

            total.Text = cal.ToString();
        }
    }

    private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
    {
        calGridView();
        productNowCalc();
    }

    private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
    {
        calGridView();
        productNowCalc();
    }

    //제품삭제
    private void button4_Click(object sender, EventArgs e)
    {
        selectedRow = dataGridView1.CurrentCell.RowIndex;
        dataGridView1.Rows.RemoveAt(selectedRow);
        calGridView();
        productNowCalc();
    }

    //제품 재고
    void productNowCalc()
    {
        for(int i = 0;i<dataGridView1.Rows.Count -1; i++)
        {
            int buy= Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value);
            int sell = Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
            int now = buy - sell;
            dataGridView1.Rows[i].Cells[3].Value = now;

            productNow.Text = now.ToString();
        }
    }

메인폼,메인폼 코드 이미지

    //제품 탭
    private void button7_Click(object sender, EventArgs e)
    {
        Product.Visible = true;
    }

    //생성버튼
    private void productListAdd_Click(object sender, EventArgs e)
    { 
         populateItems();
    }

    //유저컨트롤

    public void populateItems()
    {
        productItem[] product = new productItem[1];
        for (int i=0; i < product.Length; i++)
        {
            product[i] = new productItem();
            product[i].Title = "제품명";
            product[i].Message = "제품재고";
            product[i].Icon = Resources.close;

            if (flowLayoutPanel1.Controls.Count < 0)
            {
                flowLayoutPanel1.Controls.Clear();
            }
            else
            flowLayoutPanel1.Controls.Add(product[i]);
        }
    }

유저컨트롤,코드

이미지 public partial class productItem : UserControl { public productItem() { InitializeComponent(); }

    #region Properties
    private string _title;
    private string _message;
    private Image _icon;

    [Category("Productlist")]
    public string Message
    {
        get { return _message; }
        set { _message = value; productNow.Text = value; }
    }

    [Category("Productlist")]
    public string Title
    {
        get { return _title; }
        set { _title = value; productName.Text = value; }
    }

    [Category("Productlist")]
    public Image Icon
    {
        get { return _icon; }
        set { _icon = value; productImage.Image = value; }
    }
    #endregion

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.