Как я могу получить доступ к DataGridView из другой формы? - PullRequest
0 голосов
/ 18 марта 2020

В форме 1 я создаю таблицу данных, которая заполняет строки базой данных. в форме form2 я хочу показать пользователю указанную строку c представления данных из формы form1. Speci c строка выбирается пользователем !!! я установил свой datagridview в модификаторе publi c, и это код моей формы 2:

form1 parentsell = new form1();
string selecteduser = parentsell.propertydatagrid.Rows[selectedrowindex].Cells[72].Value.ToString();
MessageBox.Show(selecteduser);

, это не ошибка при сборке программы, но после запуска, которая дает мне ошибку.

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Очень простой подход:

Добавьте эту строку в другую форму (например, Form2), где вы хотите получить доступ к представлению данных:

public static DataGridView view { get; set; }

Затем go к форме ( например, Form1), который содержит DataGridView (например, dataGridView1), к которому вы хотите получить доступ. Добавьте эту строку в эту форму:

foreach(DataGridViewRow row in dataGridView1.Rows)
{
       Form2.view.Rows.Add(row.Cells["Column1"].Value);
       Form2.view.Rows.Add(row.Cells["Column2"].Value);
} 

Добавьте текстовое поле (например, textBox1) для пользователя, чтобы добавить индекс требуемой строки и получить его в новом представлении данных (например, dataGridView2) следующим образом:

dataGridView2.Rows.Clear();
dataGridView2.Rows.Add(view.Rows[Convert.ToInt32(textBox1.Text)].Cells["Column1"].Value, view.Rows[Convert.ToInt32(textBox1.Text)].Cells["Column2"].Value)

Помните, что индекс строки таблицы данных начинается с '0'.

Также не забудьте добавить два столбца в dataGridView2 перед запуском кода.


Вы также можете напрямую вызывать данные из базы данных в требуемую форму вместо того, чтобы извлекать их из другого представления данных.

0 голосов
/ 18 марта 2020

Итак, вы, вероятно, используете форму поиска, вам нужно передать значение по ссылке, и самый простой способ - создать класс User следующим образом:

public Class User
{
   public string name {get; set;}
}

Затем вы можете создать экземпляр этого объекта в главной форме. , вот так

User user = new User();
form1 parentsell = new form1(user);
parentsell.ShowDialog(); // This will open another form and wait you to finish work
MessageBox.Show(user.name);

В форме 1 вам нужно создать еще один конструктор и экземпляр User

User user;
public form1(User user)
{
   InitializeComponent();
   this.user = user;
}

Теперь вам нужна кнопка, которая скажет: «Хорошо, я нашел этого пользователя, сейчас возьмите его и закройте эту форму "вот так:

private void button1_Click(object Sender, EventArgs e)
{
   user.name = ...; //find your user, DGV.selectedRows[0].Cells[somehing].Value.ToString(); I think it's like this...
   this.Close();
}

И вы должны получить выбранного пользователя в главной форме

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...