Какое событие я должен использовать?

У меня есть настольное приложение, сделанное в VisualStudio в C#.

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

introducir la descripción de la imagen aquí

Когда открывается приложение, все ячейки появляются desmarcadas и кнопка Загружения выведенный из строя.

Я хочу, чтобы, когда кликнут в checkbox, он изменил свойство кнопки, если есть какой-то отборный checkbox. Если этого нет, вновь выводить из строя.

Я попытался с событием CellClick, CellContentClick, CellValueChanged... многие. Но когда я помещаю código1, и кликаю в checkbox, до тех пор, пока я не кликаю в другой ячейке не работает код.

Какое событие я должен использовать для того, чтобы, сразу после того как кликаю, не будучи должен нажимать снаружи или в другой ячейке, он вычислил состояние, в котором должна быть кнопка?

1Código:

bool guardar = false;
        foreach (DataGridViewRow row in gvDocumentos.Rows)
        {
            if (Convert.ToBoolean(row.Cells[2].Value) == true)
            {
                guardar = true;
            }
        }
btnDescargar.enabled = guardar;
1
задан 05.01.2017, 15:06
0 ответов

доказательство следующего способа

В строителе добавь handlers для событий CellContentClick и CellValueChanged

    public Form1()
    {
        InitializeComponent();
        this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick);
        this.dataGridView1.CellValueChanged += DataGridView1_CellValueChanged;
    }

Потом манипулируй событиями следующего способа:

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }

    private void DataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        var valor = (bool) dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;

        btnDescargar.Enabled = valor;
    }
3
ответ дан 03.12.2019, 17:52
  • 1
    Большое спасибо из-за твоего вклада, Commit solucionó! –  05.01.2017, 14:42

Доказательство следующего способа:

private void myDataGrid_OnCellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == columnaCheckbox.Index && e.RowIndex != -1)
    {
        // Cambia el estado del botón
    }
}

И добавь этот код, чтобы сообщать ему в DataGridView что уже ты закончил делать изменения в CheckBox:

private void myDataGrid_OnCellMouseUp(object sender,DataGridViewCellMouseEventArgs e)
{
    if (e.ColumnIndex == columnaCheckbox.Index && e.RowIndex != -1)
    {
        dataGrid.EndEdit();
    }
}

Ссылка

3
ответ дан 03.12.2019, 17:52
  • 1
    большое спасибо из-за твоего ответа, но одна, предыдущая твоей я это solucionó –  05.01.2017, 14:44

Теги

Похожие вопросы