Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
WPF

Программная имитация

19.11.2019, 04:54. Показов 2687. Ответов 29

Студворк — интернет-сервис помощи студентам
Добрый день, не могу справиться с проблемой:

Есть tabcontrol и item (tabitem1, tabitem2)
На первом при старте заполняется datagrid (grid) 1 столбец заполняется датами, при переходе на tabitem2 заполняется другой datagrid (grid_day), данные с базы, поэтому есть кнопка обновить таблицу (button_day)
Если тыкать руками то все работает исправно.
Я добавил обработчик события двойного щелчка по ячейке с датой первого datagrid (grid)
и прописал
C#
1
2
3
e.Handled = true; 
tabitem2.IsSelected = true; 
button_day.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
визуально все отрабатывает, но стоит сделать первый щелчок по таблице (по ячейкам или сортировке) это нажатие "сбрасывается". и вид таблицы остается неизменным, второе нажатие и все работает в штатном режиме.
Если снова перейти по двойному щелчку с tabitem1, то история повторяется.

При этом если это первое нажатие сделать в свободное место любого элемента ги, то далее все работает в штатном режиме.

Проходил пошагово по телу программы как физически тыкал так и программно маршруты не отличаются

Что можете посоветовать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2019, 04:54
Ответы с готовыми решениями:

Программная загрузка изображения из ресурсов в Image WPF
Всем привет, знакомлюсь с C#, начал с WPF, пытаюсь программно загрузить картинку в Image, изображение является внедренным ресурсом, уже...

Имитация залипания кнопки
Хочу сделать эффект чек бокса но без самого чек бокса (шутники или "профи" с вариантами, - "юзай чек бокс", !проходим мимо!)....

Имитация виджета рабочего стола
Добрый день! Собственно задача - написать приложение (WPF), которое по своему поведению имитировало бы виджет win7 (то есть при...

29
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,182
Записей в блоге: 2
21.11.2019, 06:05
Студворк — интернет-сервис помощи студентам
vovgordeev, по первой таблице проблема такая.
Раз у вас переменное количество колонок, то избавиться от DataTable и автогенерации столбцов не выйдет.
Потому вариант с задание колонок не пойдет.

Решений, пока вижу, два.

Использовать обработчик события автогенерации колонки и в нём задать нужный шаблон для колонки с датами.
Но здесь проблема другого рода. Я таким способом пользовался очень редко. 1-2 раза. И без и отладки не смогу его сделать.
А в настоящее время я до НГ без компа.

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

Третий вариант. Раз у Вас DataGrid только для чтения, то повесить DoubleClick не только на ячейку с датой, а целиком на всю строку.
0
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
21.11.2019, 14:38  [ТС]
Элд Хасп, DoubleClick висит на всей строке, двойной щелчок не по дате выводит сообщение с описанием заявки, тут проблем нет.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,182
Записей в блоге: 2
21.11.2019, 15:52
vovgordeev, чё то я тогда не пойму.
У вас проблема в первой или второй таблице?
0
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
22.11.2019, 08:05  [ТС]
Элд Хасп, переход осуществляется с первой таблицы, после перевода фокуса и отображения таблицы(2) требуется сделать физическое нажатие на любой из элементов, чтобы дальше работать с таблицей (вот этот момент мне и не нравится)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,182
Записей в блоге: 2
22.11.2019, 09:30
vovgordeev, давайте уточним.
На первой вкладке у вас есть Таблица #1 с датами и номерами заявок.
По DoubleClick определяется дата строки и происходит переход на вторую вкладку.
На второй вкладке есть Таблица #2 с заявками по выбранной дате.

А вот дальше я теряюсь.
Зачем какой-то "физический" клик по Таблице #2?
0
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
22.11.2019, 10:24  [ТС]
Элд Хасп, все верно описано
"По DoubleClick определяется дата строки и происходит переход на вторую вкладку." да, и далее:
при первом клике по таблице 2 происходит некий "рефреш" и таблица стоит без изменений (хотя должен был быть выбор ячейки под указателем мыши и стандартная подсветка строки)
или при первом клике по сортировке таблица также стоит неподвижно.
Второй клик и сортировка отрабатывает и selectionchange работает

Добавлено через 14 минут
Элд Хасп, если переходить таким образом:
Выбор строки на первой таблице, клик по наименованию вкладки2, переход на 2 вкладку
При таком порядке таблица два работает сразу без каких либо проблем
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,182
Записей в блоге: 2
22.11.2019, 10:46
vovgordeev, попробую объяснить как бы я сделал.
У вас же всё в CB?

Добавляете в тип свойство
C#
1
2
3
4
5
6
7
8
9
10
private DateTime? _selectedTime;
public DateTime? SelectedTime
{
     get => _selectedTime;
     set
     {
          if (_selectedTime!=value)
               GetTable2((_selectedTime=value));
      }
}
При выборе даты, перед переходом на новую вкладку присваиваете значение выбранной даты этому свойству.
Метод GetTable2 (название условно) должен получить по полученной дате DataTable из БД.
И присвоить полученную таблицу источнику второго DataGrid: dataGrid2.ItemsSource = dataTable...;
0
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
22.11.2019, 10:54  [ТС]
Элд Хасп, как бы вы реализовали перевод фокуса на таблицу2?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,182
Записей в блоге: 2
22.11.2019, 13:35
vovgordeev, вроде же есть метод у любого UI элемента Focus().
Не пробовали его использовать?

Добавлено через 13 минут
vovgordeev, ещё одно в голову пришло, но проверить не могу - так как сейчас без компа.
Как вы обновляете вторую таблицу?
Если вы используете дату из выделенной строки в первой таблице, то возможно при DoubleClick не происходит её выделение.

Если это так, то для устранения надо обьеденить действия при выделении строки и при DoubleClick по ней.
Для этого при выделении, надо также как я описал выше, получать дату из выделенной строки и присваивать её свойству SelectedTime.

В таком случае вторая таблица всегда будет отображать данные связанные с датой в этом свойстве.
0
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
02.12.2019, 05:32  [ТС]
Элд Хасп, фокус также пробовал результат тот же.
Решил проблему сл. образом
C#
1
Mouse.Capture(grid_day, CaptureMode.Element);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2019, 05:32

Программная авторизация на сайте.
Здравствуйте.Мне нужно программно залогиниться до одного сайта.Уже мучаюсь неделю,застрял на одном месте. Код программы ниже: public...

Программная авторизация на сайте
Существует сайт необходимо написать программу которая будет автоматически вводить логин и пароль заходить. После необходимо ввести в...

Программная аутентификация на сайте
Доброго времени суток. Не могу понять как пройти аутентификацию на сайте. Пример дать не могу, доступ только с моего компа открыт. В чем...

Программная генерация события
Добрый день! Возникла такая проблема. Использую пользовательскую компоненту, которая находится в сборке (Class Library), исходные коды...

Программная отправка комментария на сайт
Решил ради обучения прокомментить программно сей блог я так понимаю программа должна сначала выбрать в подписи комментария...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru