Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/63: Рейтинг темы: голосов - 63, средняя оценка - 4.95
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329

Предотвратить всплытие выполнения команды привязанной к MouseDoubleClick

27.08.2021, 18:06. Показов 13271. Ответов 99

Студворк — интернет-сервис помощи студентам
Добрый день, подскажите пожалуйста, как предотвратить всплытие выполнения команды по двойному клику от дочернего выделенного объекта до родительского.
Структура следующая, упростил для кратности
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<ListBox ItemsSource="{Binding Path=Roots,BindsDirectlyToSource=True}" SelectedItem="{Binding Path=SelectedItemRoot, Mode=TwoWay}" ScrollViewer.CanContentScroll="False">
 <i:Interaction.Triggers>
     <i:EventTrigger EventName="MouseDoubleClick">
         <i:InvokeCommandAction Command="{Binding SelectedItemRoot.ShowEditDialogCommand}/>
     </i:EventTrigger>
 </i:Interaction.Triggers>
    <ListBox.ItemTemplate> 
         <ListBox ItemsSource="{Binding Path=Children}"  SelectedItem="{Binding Path=SelectedItemChild, Mode=TwoWay}" >
            <i:Interaction.Triggers>
               <i:EventTrigger EventName="MouseDoubleClick">
                   <i:InvokeCommandAction Command="{Binding SelectedItemChild.ShowEditDialogCommand}/>
               </i:EventTrigger>
            </i:Interaction.Triggers>
            <ListBox.ItemTemplate /> 
          </ListBox>
     </ListBox.ItemTemplate>
</ListBox>
При выборе дочернего элемент списка SelectedItemChild, происходит выбор родительского элемента SelectedItemRoot, по скольку тот в нем находится

При двойном клике по ItemChild выполняется команда ItemChild.ShowEditDialogCommand, в которой происходит вызов модального окна предназначенного для редактирования ItemChild.
По закрытию этого модального окна, происходит автоматическое открытие модального окна у родителя ItemRoot.ShowEditDialogCommand - т.е выполняется команда родителя, хотя я не кликал два раза по родителю

Как предотвратить это всплытие выполнения команд ?

Даже скажу так, выполняются все команды выделенных объектов, по очереди, хотя кликал я только по одному
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2021, 18:06
Ответы с готовыми решениями:

WPF команды и MVVM. Часть 2. Всплытие команд. Реализация команды для списка элементов [WPF, Элд Хасп]
Тема из цикла https://www.cyberforum.ru/wpf-silverlight/thread2384523.html На практике часто встречаются случаи когда команда и кнопка...

После выполнения определённой команды не выполняются последующие команды
Объясните, пожалуйста, почему может останавливаться выполнение второй и далее комманд? cd C:\Users\alex_iv\Desktop\test_node\ node...

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

99
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
15.09.2021, 15:30
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от UseMuse Посмотреть сообщение
и в этой ветке править исходный проект или новый начать?)
Одну из веток заморозьте, а вторую правьте.
Смысла делать новый репозиторий не вижу.
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
16.09.2021, 18:34  [ТС]
Элд Хасп, добавил ветку MasterOk, сделал

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Добавьте ветку к Репозиторию.
В этой ветке, в первую очередь, реализуйте класс Модели и классы иммутабельных DTO для неё.
Какие нужны члены для Модели:
1) Метод возвращающий все корневые элементы;
2) Метод возвращающий все дочерние элементы;
3) Метод возвращающий все дочерние элементы по Id родительского элемента;
4) Метод возвращающий корневой по его Id;
5) Метод возвращающий дочерний по его Id;
6) Метод изменяющий корневой элемент по его Id и др. параметрам и возвращающий новый корневой элемент;
7) Метод изменяющий дочерний элемент по его Id и др. параметрам и возвращающий новый дочерний элемент.
Как реализуете - напишите.
Я посмотрю.
Добавлено через 25 минут
Элд Хасп, заморозить забыл, старую, не знаю как
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
16.09.2021, 21:21
Цитата Сообщение от UseMuse Посмотреть сообщение
заморозить забыл, старую, не знаю как
Просто не надо делать в ней фиксацию.
Перед созданием фиксации просто внимательнее смотрите в какой ветке её делает.
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
17.09.2021, 11:44  [ТС]
Элд Хасп, посмотрите как будет время?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
17.09.2021, 12:54
Цитата Сообщение от UseMuse Посмотреть сообщение
посмотрите как будет время?
На выходных посмотрю.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
18.09.2021, 15:18
UseMuse, Фиксация cb3ff9f6:
В интерфейсах заменены листы на последовательности, две модели (Бизнес Логики) объединены в одну.
Добавлено через 12 минут
Фиксация 77a24464:
Создан общий интерфейс для основной Модели, конструктор Модели вынесен в отдельный файл.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
18.09.2021, 15:22
UseMuse, Фиксация e0f0372e:
Добавлен проект для слоя ViewModel. В нём реализованы: сущности для представления, интерфейс основной VM, абстрактный базовый класс VM.
Добавлено через 3 минуты
Разберитесь с базовым классом для ViewModel.
Добавьте теги XML документации там где их нет - я не всюду их поставил.

Попробуйте на основе него уже сделать производную настоящую VM, получающую в конструкторе IMainLogic и работающую с ней.
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
using Logic.DTO;
using Simplified;
using System;
using System.Collections.ObjectModel;
 
namespace Layer
{
    public abstract class MainTreeViewModelAbstract : ViewModelBase, IMainTreeViewModel
    {
        public ObservableCollection<RootVM> Roots { get; } = new ObservableCollection<RootVM>();
        public ObservableCollection<ChildVM> Children { get; } = new ObservableCollection<ChildVM>();
        public RelayCommand<RootVM> RootEditCommand { get; }
        public RelayCommand<ChildVM> ChildEditCommand { get; }
 
        protected readonly EditDialogHandler<RootDto, string> rootTitleEditDialog;
        protected readonly EditDialogHandler<ChildDto, string> childTitleEditDialog;
 
        protected MainTreeViewModelAbstract(EditDialogHandler<RootDto, string> rootTitleEditDialog,
                                            EditDialogHandler<ChildDto, string> childTitleEditDialog)
        {
            this.rootTitleEditDialog = rootTitleEditDialog ?? throw new ArgumentNullException(nameof(rootTitleEditDialog));
            this.childTitleEditDialog = childTitleEditDialog ?? throw new ArgumentNullException(nameof(childTitleEditDialog));
 
            RootEditCommand = new RelayCommand<RootVM>(RootEditExecute, RootEditCanExecute);
            ChildEditCommand = new RelayCommand<ChildVM>(ChildEditExecute, ChildEditCanExecute);
        }
 
        /// <summary>Метод сохранения данных корневого элемента.</summary>
        /// <param name="root">Исходные Данные отражающие элемент.</param>
        /// <param name="title">Данные для сохранения.</param>
        /// <returns>Новый экземпляр Данных отражающих элемент.</returns>
        protected abstract RootDto RootSave(RootDto root, string title);
 
        /// <summary>Метод сохранения данных дочернего элемента.</summary>
        /// <param name="root">Исходные Данные отражающие элемент.</param>
        /// <param name="title">Данные для сохранения.</param>
        /// <returns>Новый экземпляр Данных отражающих элемент.</returns>
        protected abstract ChildDto ChildSave(ChildDto root, string title);
 
        private void RootEditExecute(RootVM root)
        {
            if (rootTitleEditDialog(root.Data, out string title))
            {
                root.SetData(RootSave(root.Data, title));
            }
        }
        protected virtual bool RootEditCanExecute(RootVM root)
        {
            return true;
        }
        private void ChildEditExecute(ChildVM child)
        {
            if (childTitleEditDialog(child.Data, out string title))
            {
                child.SetData(ChildSave(child.Data, title));
            }
        }
        protected virtual bool ChildEditCanExecute(ChildVM child)
        {
            return true;
        }
    }
 
    /// <summary>Делегат диалога редактирования.</summary>
    /// <typeparam name="InT">Тип Данных для редактирования.</typeparam>
    /// <typeparam name="OutT">Тип Данных содержащий результаты редактирования.</typeparam>
    /// <param name="inData">Данные для редактирования.</param>
    /// <param name="outData">Данные содержащие результаты редактирования.</param>
    /// <returns><see langword="true"/> - если нужно сохранить результаты редактирования.</returns>
    public delegate bool EditDialogHandler<InT, OutT>(in InT inData, out OutT outData);
 
}
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
18.09.2021, 19:46  [ТС]
Элд Хасп, для чего предназначен проект Layer?

Добавлено через 2 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Добавлен проект для слоя ViewModel. В нём реализованы: сущности для представления, интерфейс основной VM, абстрактный базовый класс VM.
Почему не в проекте WPF?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
18.09.2021, 19:52
Цитата Сообщение от UseMuse Посмотреть сообщение
для чего предназначен проект Layer?
Для ViewModel.

Цитата Сообщение от UseMuse Посмотреть сообщение
Почему не в проекте WPF?
Чтобы вам было понятно где проходит граница между между всеми слоями: Model - ViewModel - View.
Да, и кроме самых мелких Решений, так всегда делается.
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
18.09.2021, 19:53  [ТС]
C#
1
2
3
4
5
6
7
8
9
namespace Layer
{
    /// <summary>Класс сущности для представления одно элемента Данных.</summary>
    public class EntityVM<T> : BaseInpc
    {
 
        /// <summary>Получение другого элемента с данными.</summary>
        /// <param name="data">Новый элемент с данными.</param>
        public void SetData(T data) => Data = data;
Может SetData сделать с параметром ref ?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
18.09.2021, 20:02
Цитата Сообщение от UseMuse Посмотреть сообщение
Может SetData сделать с параметром ref ?
Зачем?
Нам же нужно присвоить значение свойству, а не менять значение переменной из которой получается объект.

Добавлено через 2 минуты
Цитата Сообщение от UseMuse Посмотреть сообщение
для чего предназначен проект Layer?
Извиняюсь - я только сейчас обратил внимание.
Хотел назвать ViewModelLayer.
Не знаю как так вышло.

Если можете - поменяйте название.
Если не знаете как, то я сам поменяю когда следующий раз буду вносить изменения.
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
20.09.2021, 15:30  [ТС]
Элд Хасп,
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Попробуйте на основе него уже сделать производную настоящую VM, получающую в конструкторе IMainLogic и работающую с ней
Нужна помощь, что-то не соображу, как реализовать
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
20.09.2021, 21:33
Цитата Сообщение от UseMuse Посмотреть сообщение
Нужна помощь, что-то не соображу, как реализовать
Создаём производный класс.
В него добавляем поле для Модели.
Через "Быстрые Решения" добавляем конструктор и реализуем абстрактные члены.

Получаем:
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
using Logic;
using Logic.DTO;
using System;
 
namespace ViewModelLayer
{
    public class MainTreeViewModel : MainTreeViewModelAbstract
    {
        private readonly IMainLogic model;
 
        public MainTreeViewModel(IMainLogic model)
        {
            this.model = model ?? throw new ArgumentNullException(nameof(model));
        }
 
        protected override ChildDto ChildSave(ChildDto root, string title)
        {
            throw new NotImplementedException();
        }
 
        protected override RootDto RootSave(RootDto root, string title)
        {
            throw new NotImplementedException();
        }
    }
}
На конструкторе - ошибка.
Из-за того что в базовом нет безпараметрического конструктора.
Добавляем параметры и вызов параметрического базового конструктора.
C#
11
12
13
14
15
16
17
        public MainTreeViewModel(IMainLogic model,
                                 EditDialogHandler<RootDto, string> rootTitleEditDialog,
                                 EditDialogHandler<ChildDto, string> childTitleEditDialog)
            : base(rootTitleEditDialog, childTitleEditDialog)
        {
            this.model = model ?? throw new ArgumentNullException(nameof(model));
        }
Добавляем метод инициализации коллекций и его вызов в конструкторе.
C#
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
        private async void InitAsync()
        {
            // Здесь нужна обработка исключений,
            // потом позже сами сделаете.
            Roots.AddRange((await model.GetRoots()).Select(CreateVM));
            Children.AddRange((await model.GetChildren()).Select(CreateVM));
        }
 
        public static RootVM CreateVM(RootDto dto)
        {
            RootVM root = new RootVM();
            root.SetData(dto);
            return root;
        }
        public static ChildVM CreateVM(ChildDto dto)
        {
            ChildVM child = new ChildVM();
            child.SetData(dto);
            return child;
        }
Методы-мапперы лучше перенести в базовый класс.
Попробуйте сами реализовать методы сохранения.

Да, и забыл синхронизацию для коллекций объявить в базовом классе.
C#
28
29
30
31
32
33
34
35
36
37
38
39
40
            if (Dispatcher.CheckAccess())
            {
                BindingOperations.EnableCollectionSynchronization(Roots, ((ICollection)Roots).SyncRoot);
                BindingOperations.EnableCollectionSynchronization(Children, ((ICollection)Children).SyncRoot);
            }
            else
            {
                Dispatcher.Invoke(() =>
                {
                    BindingOperations.EnableCollectionSynchronization(Roots, ((ICollection)Roots).SyncRoot);
                    BindingOperations.EnableCollectionSynchronization(Children, ((ICollection)Children).SyncRoot);
                });
            }
Сделал Фиксация eb99fd97:
Добавлена MainTreeViewModel. В конструкторе принимает Модель. Реализована асинхронная загрузка коллекций.
1
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
20.09.2021, 22:20  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Попробуйте сами реализовать методы сохранения.
приходит на ум, что-то по типу
C#
1
2
3
4
5
6
7
8
9
10
11
12
       
protected override ChildDto ChildSave(ChildDto child, string title)
        {
            Task.Run(() => model.UpdateChild(child));
            return child;
        }
 
        protected override RootDto RootSave(RootDto root, string title)
        {
            Task.Run(() => model.UpdateRoot(root));
            return root;
        }
только не пойму как с асинхронностью связать это
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
20.09.2021, 23:16
Цитата Сообщение от UseMuse Посмотреть сообщение
только не пойму как с асинхронностью связать это
На это не рассчитано.
Что бы вызывать асинхронный метод нужно изменить в базовом реализацию метода Execute команды.
На что-то подобное:
C#
56
57
58
59
60
61
62
63
        private async void RootEditExecute(RootVM root)
        {
            // Если возможны исключения, то здесь их нужно обрабатывать
            if (rootTitleEditDialog(root.Data, out string title))
            {
                root.SetData(await RootSaveAsync(root.Data, title));
            }
        }
C#
48
        protected abstract Task<RootDto> RootSaveAsync(RootDto root, string title);
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
21.09.2021, 12:45  [ТС]
Элд Хасп, RelayCommandAsync не получается отрефакторить до уровня, где он принимает 2 параметра T, и токен
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
21.09.2021, 13:12
Цитата Сообщение от UseMuse Посмотреть сообщение
RelayCommandAsync не получается отрефакторить до уровня, где он принимает 2 параметра T, и токен
Не надо использовать асинхронные команды.
Они решают совсем иные задачи: занятость метода модели, валидация и т.д.
Возможно это понадобится для вашей задачи, но точно не сейчас.

Команды не трогайте - изменяйте только абстрактные методы.

Добавлено через 1 минуту
Как изменить методы Execute в базовом классе - я показал постом выше.

Добавлено через 6 минут
Цитата Сообщение от UseMuse Посмотреть сообщение
RelayCommandAsync
Посмотрел код.
Это же не мой класс.
Я думал вы мою реализацию используете.
Там вообще какая-то галиматья.
Откуда вы её взяли?

Добавлено через 7 минут
Посмотрите мой пример реализации и использования: An example of my implementation of base classes: BaseInpc, RelayCommand, RelayCommandAsync, RelayCommand<T>, RelayCommandAsync<T>.

Создавать отдельный класс только ради оной одной строчки:
C#
1
2
3
4
         public async void Execute(object parameter)
        {
            await ExecuteAsync(parameter);
        }
Это и бессмысленно, и усложняет использование, и запутывает код.
Ничто не мешает объявить async для Execute метода обычного RelayCommand.
Никакого смысла в инкапсуляции этого нет.
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
21.09.2021, 13:31  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Откуда вы её взяли?
Отсюда https://docs.microsoft.com/ru-... s-commands

Добавлено через 4 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Попробуйте сами реализовать методы сохранения.
Сделал Фиксация 6057bef5: Асинхронная реализация методов сохранения

Добавлено через 4 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Создавать отдельный класс только ради оной одной строчки:
поддерживает отмену, и состояние выполнения команды : в процессе, ошибка, или завершена
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
21.09.2021, 14:11
Цитата Сообщение от UseMuse Посмотреть сообщение
Отсюда https://docs.microsoft.com/ru-... s-commands
Это учебная статья и малопригодная для практического применения.

Добавлено через 3 минуты
Цитата Сообщение от UseMuse Посмотреть сообщение
поддерживает отмену, и состояние выполнения команды : в процессе, ошибка, или завершена
А вам это нужно?
У вас может выполняться один одновременно метод (транзакция) в Модели, если БД не многозадачная.
Или без разницы сколько методов, если она многозадачная - почти все современные.
Для чего вам нужно "занятость команды"?
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
21.09.2021, 14:24  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для чего вам нужно "занятость команды"?
Ну например, при первой глобальной загрузки данных, выводить на экран "загрузка" пока данные загружаются и по событию
окончания выполнения загрузки, показать загруженные данные
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.09.2021, 14:24

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

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

Как предотвратить переподключение SignalR-клиента после выполнения ajax-запроса?
Добрый день. Использую SignalR для реалтайм приложения на ASPnet-MVC. В приложении пользователь должен загрузить файл на сервер. ...

Написать команды выполнения
1. Использовать порты F0/8-9 для передачи трафика VoIP 2. Отключите автосогласование на интерфейсах коммутаторов в сторону...

Ограничение выполнения команды
Здравствуйте, выполняю команду на питон, система линукс. Команда слушает mqtt сервер и возвращает прочитанное сообщение. Но когда сервер не...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru