как получить управление внутри splitcontainer?

#c# #winforms #datagridview

#c# #winforms #datagridview

Вопрос:

Мой код

 ((DataGridView)(Application.OpenForms["frmMasterInterface"]
.Controls["splitContainer1"]
.Controls["splitContainer1.Panel1"]
.Controls["pnlLeft"]
.Controls["grbfittingTypes"]
.Controls["dgvitems"])).Rows[RowIndex].Cells["sizeRange"].Value
  

Я хочу получить значение строки datagridview из другой формы.
Пожалуйста, помогите.

Спасибо и с уважением,

-Нитин

Комментарии:

1. На самом деле datagridview находится внутри панели splitcontainer1

Ответ №1:

Вероятно, есть сотни способов сделать это, я только что попробовал следующее: сначала получить ссылку на разделенный контейнер, а затем Panel1 получить прямой доступ, и это работает:

 SplitContainer sc = (SplitContainer)Application.OpenForms[0].Controls["splitContainer1"];
DataGridView dg = (DataGridView)sc.Panel1.Controls["dataGridView1"];
  

Тем не менее, если бы я был на вашем месте, я бы посмотрел вместо этого на создание свойства frmMasterInterface DataGridView для прямого доступа к нему, а затем передал ссылку frmMasterInterface на вторую форму.

Ответ №2:

я надеюсь, что вы хотите получить данные, щелкнув содержимое ячейки.из другого.Это работает для меня так, как определено u, надеюсь, это поможет вам.

 DataGridView dggg; //Globally Declared
private void dd()
{
    var form = (frmMasterInterface)Application.OpenForms["frmMasterInterface"];//Form Name
    if (form == null) return;
    foreach (DataGridView dgv in form.Controls.OfType<DataGridView>())
        if (dgv.Name == "dataGridView1") //name of data grid view
        {
            dggg = dgv;
            dgv.CellMouseClick  = Datagirdmouseclick;
        }
}

private void Datagirdmouseclick(object sender, DataGridViewCellMouseEventArgs e)
{

    Trace.WriteLine(dggg.Rows[e.RowIndex].Cells["sizeRange"].Value);
}
  

Надеюсь, это поможет.