Ошибка перехода к следующей форме при нажатии на кортеж данных - PullRequest
0 голосов
/ 09 ноября 2018

Мой код-

public void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            Form2 f2 = new Form2(id);
            f2.textBox1.Text = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
            f2.textBox2.Text = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();
            f2.textBox3.Text = this.dataGridView1.CurrentRow.Cells[2].Value.ToString();
            f2.textBox4.Text = this.dataGridView1.CurrentRow.Cells[3].Value.ToString();

            f2.Show();
            this.Hide();



        }

        public void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            Form2 f2 = new Form2(id);
            f2.textBox1.Text = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
            f2.textBox2.Text = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();
            f2.textBox3.Text = this.dataGridView1.CurrentRow.Cells[2].Value.ToString();
            f2.textBox4.Text = this.dataGridView1.CurrentRow.Cells[3].Value.ToString();
            f2.Show();
            this.Hide();

        }

мой гуй

enter image description here

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

CheckBox[] Locations = { checkBox1, checkBox2, checkBox3 };
                CheckBox[] Profiles = { checkBox4, checkBox5, checkBox6 };

                string locs = string.Join(" or ", Locations.Where(c => c.Checked).Select(x => $"location = '{x.Text}'"));
                string profs = string.Join(" or ", Profiles.Where(c => c.Checked).Select(x => $"profile = '{x.Text}'"));
                MessageBox.Show(locs);
                string query = $"select * from jobs where ({locs}) and profile in(select profile from jobs where ({profs}))";


                OracleCommand comm2 = new OracleCommand(query, conn);
                OracleDataAdapter MyAdapter = new OracleDataAdapter();//adapter acts as interface btw database and dataset(which is collectio of tables)
                MyAdapter.SelectCommand = comm2;
                DataTable dTable = new DataTable();//datatable represents a single table in database 
                MyAdapter.Fill(dTable);
                dataGridView1.DataSource = dTable;

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

1 Ответ

0 голосов
/ 09 ноября 2018

Если вы присмотритесь к событию CellContentClick, вы увидите, что это событие:

Происходит при нажатии на содержимое в ячейке.

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

Это событие:

Происходит при нажатии любой части ячейки.

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    Form2 f2 = new Form2(id);
    f2.textBox1.Text = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
    f2.textBox2.Text = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();
    f2.textBox3.Text = this.dataGridView1.CurrentRow.Cells[2].Value.ToString();
    f2.textBox4.Text = this.dataGridView1.CurrentRow.Cells[3].Value.ToString();

    f2.Show();
    this.Hide();
}

Update :

Поскольку вы говорите мне, что добавляя этот код, он также не работал. Вы должны убедиться, что ваш DataGridView подписан на эти события:

  1. Открыть форму в режиме конструктора.
  2. Нажмите на свой DataGridView
  3. Нажмите F4.
  4. Теперь проверьте события. Они должны содержать название функции, которую вы добавили. Как это:

events

Если вы предпочитаете делать это программно, вы можете добавить этот код в событие Form.Load:

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