Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913

DatadGridView запрет на заполнение при ошибке

14.08.2011, 15:57. Показов 1169. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли запретить пользователю перескакивать на любую ячейку, если он заполнил неправильно какую-либо ячейку и вышло сообщение об ошибке. Т.е. пользователь ввел что-то не то . Это "не то" я обработала в catch (Exception), Пользователь получил сообщение, но не прореагировал на него, и перескочил на другую ячейку Как бы не давать установить фокус на другую ячейку, если есть сообщение об ошибке? Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2011, 15:57
Ответы с готовыми решениями:

Изменение цвета фона элемента управления формы при запуске процедуры. Запрет на заполнение поля в зав-ти от наличия данных в другом поле
Доброго всем здоровья! Помогите решить проблему! Есть форма " frmВыпуск_Приборов_Из_ОТК_Ковалевский_ВЕ_1 ". На ней есть...

как сделать так, чтобы не просто выводилось сообщение об ошибке, а действие не проделывалось при при вводе значений ни о
Добрый вечер ! как сделать так, чтобы не просто выводилось сообщение об ошибке, а действие не проделывалось при при вводе значений ни от...

Заполнение документа из тч справочника, заполнение при изменении()
&НаСервере Процедура ПолучитьПродукты(Выборка) Выборка=Справочники.Блюда.Выбрать(); Пока Выборка.Следующий() Цикл НоваяСтрока =...

6
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
14.08.2011, 16:49
C#
1
2
3
4
5
6
7
8
9
try
{
...
}
catch (Excpetion ex)
{
MessageBox.Show(ex.Message);
dataGridView.Enabled=false;
}
0
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
14.08.2011, 16:53  [ТС]
Спасибо, но тогда пользователь не сможет исправить, т.е. заполнить дальше ячейки Я бы хотела, чтобы пока пользователь не исправил нужную ячейку, всегда, в какую бы ячейку он не кликнул, фокус всегда возврашался на неправильно заполненную ячейу ... Это возможно?
0
 Аватар для atomohod
20 / 20 / 3
Регистрация: 01.04.2010
Сообщений: 57
15.08.2011, 01:24
Вот, не оптимизировано конечно и сделано как говорят "в лоб", но зато работает:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        int dgvColumn;
        int dgvRow;
        bool isValidated = true;
 
        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
 
            try
            {
                int Number = int.Parse((string)dataGridView1.CurrentCell.Value);
            }
            catch (Exception ex)
            {
                isValidated = false;
                dataGridView1.ClearSelection();
                dataGridView1[dgvColumn, dgvRow].Selected = true;
                dataGridView1.BeginEdit(true);
                return;
            }
            
            {
                if (dataGridView1.CurrentCell.OwningColumn.Index == dgvColumn && dataGridView1.CurrentCell.OwningRow.Index == dgvRow)
                    isValidated = true;
            }
            
        }
 
        private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            if (isValidated)
            {
                dgvColumn = dataGridView1.CurrentCell.OwningColumn.Index;
                dgvRow = dataGridView1.CurrentCell.OwningRow.Index;
            }          
            
        }
 
        private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
        {
            if (!isValidated)
            {                
                dataGridView1.ClearSelection();
                dataGridView1[dgvColumn, dgvRow].Selected = true;
                dataGridView1.Update();
                dataGridView1.BeginEdit(true);                
            }
 
            if (!isValidated && (dataGridView1.CurrentCell.OwningColumn.Index != dgvColumn || dataGridView1.CurrentCell.OwningRow.Index != dgvRow))
            {                
                dataGridView1.ReadOnly = true;
                dataGridView1.EndEdit();
                dataGridView1.Update();
            }
            else
                dataGridView1.ReadOnly = false;
        }
             
    }
}
1
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
15.08.2011, 09:04  [ТС]
atomohod, спасибо большое! Я так поняла, что Вы разрешаете вводить только цифры. А если нет, то не разрешаете ввод . Я поставила сообщение(у меня на каждый столбец - свои данные, в одном только цифры, в другом IP адрес и т.д.) в Ваш код в catch. Оно выскакивает 3 раза. Это можно как-нибудь обоити?Ну, чтобы сообщение было 1 раз.
0
 Аватар для atomohod
20 / 20 / 3
Регистрация: 01.04.2010
Сообщений: 57
15.08.2011, 13:45
Проще всего сделать как-то так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
 
            try
            {
                if (dataGridView1.CurrentCell.OwningColumn.Index == 0)
                {
                    int Number = int.Parse((string)dataGridView1.CurrentCell.Value);
                }
                else if (dataGridView1.CurrentCell.OwningColumn.Index == 1)
                {
                    if((string)dataGridView1.CurrentCell.Value == "Error") throw new Exception();
                }// и т. д. по Вашим столбцам
            }
            catch (Exception ex)
            {
                isValidated = false;
                dataGridView1.ClearSelection();
                dataGridView1[dgvColumn, dgvRow].Selected = true;
                dataGridView1.BeginEdit(true);
                return;
            }
                      
                if (dataGridView1.CurrentCell.OwningColumn.Index == dgvColumn && dataGridView1.CurrentCell.OwningRow.Index == dgvRow)
                    isValidated = true;            
            
        }
1
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
15.08.2011, 16:40  [ТС]
Спасибо большое!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.08.2011, 16:40
Помогаю со студенческими работами здесь

при ошибке - иероглифы
Люди добрые, помогите пожалуйста! Я только начал програмить на ASP. Сделал базу в аксесе, написал конекшн, мне выдается ошибка. но...

Сообщение об ошибке при загрузке
Вобщем суть такова. У моей знакомой ноут выдает сообщение об ошибке сл. содержания: Может кто-нибудь объяснить, что происходит с...

Крякозябры в выводе при ошибке.
Здравствуйте. В случае ошибки в выводе в место русский букв, как я понял, выводятся крякозябры. Кто знает как исправить?

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

Сообщение при ошибке в коде
Доброго всем времени суток. При компиляции кода с ошибкой студия задает вопрос типа "запустить уже скомпилированный exe". Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru