C # DataGridView ИСПОЛЬЗУЯ BeginEdit и не удаляйте строку с ошибкой после вызова DataError Event - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь позволить пользователю изменять данные непосредственно в DataGridView, этот DataGridView получает DataSource из DataTable из DataBase

Я использую DataError Event, чтобы попытаться помочь пользователю правильно написать данные.

Мой поток ошибок должен быть

1) Пользователь записывает данные 2) пользователь пишет 'a' в ячейку, которая должна быть Int 3) Я говорю пользователю, что он ошибся в какой-то ячейке 4) Я сфокусировал пользователяснова в той же ячейке, когда он получил ошибку 5) Я не удаляю эту строку и не удаляю значение в этой строке, я также не позволяю пользователю выйти из фокуса на этой ячейке и строке.

На самом деле я не нашел, как вернуть фокус обратно на ячейку после использования события. Этот код не работает для меня ... private void dataGridViewDefinePath_DataError (object sender,

DataGridViewDataErrorEventArgs e)
            {
                MessageBox.Show("הייתה בעייה בהכנסת אחד הנתונים");
                ((DataGridView)sender).CurrentCell = ((DataGridView)sender).Rows[e.RowIndex].Cells[e.ColumnIndex];
                ((DataGridView)sender).BeginEdit(true);
                e.Cancel = false;
            }

Также после этогоошибка моя строка удалить ..

Это мой код:

using PathDefiner;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UIPath
{
    public partial class DefineForm : Form
    {
        private Action<string, DataTable> SaveAction { get; set; }
        private Func<string, DataTable> SetAction { get; set; }
        private string currentCatalog;
        public DefineForm(string catalog, Action<string, DataTable> saveAction, Func<string, DataTable> setAction)
        {
            InitializeComponent();
            SaveAction = saveAction;
            SetAction = setAction;
            currentCatalog = Globals.CurrentCatalog = catalog;
            dataGridViewDefinePath.DataSource = SetAction(currentCatalog);
            DataTable dt = dataGridViewDefinePath.DataSource as DataTable;
            dt.Columns[0].ReadOnly = true;
        }

        private void dataGridViewPathDefine_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
        {
            e.Row.Cells["BatteryCatalog"].Value = Globals.CurrentCatalog;
        }

        private void buttonExit_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void buttonSaveAndExit_Click(object sender, EventArgs e)
        {
            DataTable dt = dataGridViewDefinePath.DataSource as DataTable;
            dt.Columns[0].ReadOnly = false;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dt.Rows[i]["BatteryCatalog"] = Globals.CurrentCatalog;
            }
            dt.Columns[0].ReadOnly = true;
            SaveAction(Globals.CurrentCatalog, dt);
            Close();
        }

        private void dataGridViewDefinePath_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            MessageBox.Show("הייתה בעייה בהכנסת אחד הנתונים");
            ((DataGridView)sender).CurrentCell = ((DataGridView)sender).Rows[e.RowIndex].Cells[e.ColumnIndex];
            ((DataGridView)sender).BeginEdit(true);
            e.Cancel = false;
        }

        private void dataGridViewDefinePath_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {

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