Как получить значения одного и того же столбца из n числа сетки данных пользовательского элемента управления в событии нажатия кнопки основной формы

Я работаю над приложением формы Windows. Я создал пользовательский элемент управления, который имеет элемент управления datagridview. Я добавил динамически 10 пользовательских элементов управления в панель (которая находится в основной форме), которая имеет общий столбец "Observed(sec)". В этом столбце пользователь будет вводить значения. И нажимать на кнопку Сохранить. Все значения будут сохранены в текстовом файле.

У меня вопрос: я добавляю каждый раз новый пользовательский элемент управления на панели. Тогда как получить значения из колонки Observed для сохранения кнопки?

Основной код формы

      private void addUserContol()
      { 
        string[] lines = File.ReadAllLines(filename);
        string[] newline;
        string[] splitLine;

        try
        {
            int i = 0;
            string lineText;
            for (i = 0; i < lines.Length; )
            {
                uc_protectionTbl1 objUC = new uc_protectionTbl1(); //user control object is created here
                uc_groupLbl objGrouplbl = new uc_groupLbl();
                uc_testResult result = new uc_testResult();
                uc_performResult objperform = new uc_performResult();
                var wordCount = new Dictionary<string, int>();

                    lineText = lines[i++];
                    if (lineText != "")
                    {
                        if (lineText.Contains("Title"))
                        {
                            splitLine = lineText.Split('=');
                            lbl_title.Text = splitLine[1];
                        }
                        if (lineText.Contains("GroupLabel"))
                        {
                            splitLine = lineText.Split('=');
                            objGrouplbl.grouplblvalue = splitLine[1];
                            panelUC.Controls.Add(objGrouplbl);
                        }
                        if (lineText.Contains("Performance Test"))
                        {
                            panelUC.Controls.Add(objperform);
                        }
                        if (lineText.Contains("Result"))
                        {
                            splitLine = lineText.Split('=');
                            result.addTest = splitLine[1];
                            panelUC.Controls.Add(result);
                        }
                        if (lineText.Contains("TestType"))
                        {
                            splitLine = lineText.Split('=');
                            objUC.testType = splitLine[1];

                            lineText = lines[i++];

                            if (lineText.Contains("Heading"))
                            {
                                string[] delimiter = { "=", "||" };
                                splitLine = lineText.Split(delimiter, StringSplitOptions.None);
                                newline = splitLine.Skip(1).ToArray();
                                objUC.numColumn = newline.Count();
                                objUC.columnheading = newline;
                            }

                            while (i < lines.Length)
                            {
                                lineText = lines[i++];
                                if (lineText != "")
                                {
                                    if (lineText.Contains("Value"))
                                    {
                                        string[] delimiter = { "=", "||" };
                                        wordCount.Add(lineText, 1);
                                        objUC.numRow = wordCount.Values.Count();
                                        string[][] arrayofarray = wordCount.Select(x => (x.Key.Split(delimiter, StringSplitOptions.None)).Skip(1).ToArray()).ToArray();
                                        objUC.rowValues = arrayofarray;
                                    }
                                    else
                                    {
                                        panelUC.Controls.Add(objUC); //here I added user control in panel
                                        i = i - 1;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    } 
        }
        catch (Exception Ex)
        {
            MessageBox.Show(Ex.Message);
        }
    }
    private void SavetoolStripMenuItem1_Click(object sender, EventArgs e)
    {
       //Here I want all the values from observed(Sec) column
    }
 }

Код для пользовательского контроля

  public partial class uc_protectionTbl1 : UserControl
{
    public string testType { get; set; }
    public int numRow { get; set; }
    public int numColumn { get; set; }
    public string[] columnheading { get; set; }
    public string[][] rowValues { get; set; }

    public uc_protectionTbl1()
    {
        InitializeComponent();       
    }

    private void uc_ProtectionTbl1_Load(object sender, EventArgs e)
    {
        designDT();  
    }

   public DataTable uc_dt = new DataTable();
   private void designDT()
    {
        try
        {
            foreach (var column in columnheading)
            {
                uc_dt.Columns.Add(new DataColumn(column.ToString()));
            }
            foreach (var row in rowValues)
            {
                uc_dt.Rows.Add(row);
            }  
            dgv_uc.DataSource = uc_dt;

            dgv_uc.Columns.Cast<DataGridViewColumn>().ToList().
              ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);

            lbl_testType.Text = testType;

            DataGridViewTextBoxColumn obs = new DataGridViewTextBoxColumn();   //Here I added textbox column 
            obs.HeaderText = "Observed(Sec)";
            obs.Name = "Obs";
            obs.ReadOnly = false;
            this.dgv_uc.Columns.Add(obs);

            var button = new DataGridViewButtonColumn();
            button.Name = "TestButton";
            button.HeaderText = "Test_Button";
            button.Text = "Test";
            button.UseColumnTextForButtonValue = true;

            this.dgv_uc.Columns.Add(button);

            sizeDGV(dgv_uc);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
  }

Пожалуйста, помогите мне решить эту проблему. Я новичок в разработке. Последние 15 дней искал в Google, но не нашел правильного решения. Заранее спасибо.

0 ответов

Другие вопросы по тегам