Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468

Приложение MVVM. Контекстное меню (удаление, редактирование) для элемента (Товара) в ListBox

05.03.2023, 22:14. Показов 3490. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В этой теме обсуждается только вопросы по реализации контекстного меню для элемента коллекции Товаров.
Основная тема: Приложение MVVM. VMs и навигация
Цитата Сообщение от Элд Хасп Посмотреть сообщение
В основное Окно нужно только добавить кликер или команду для вызова диалога редактирования.
Да, для добавления будет отдельная кнопка где-то сверху. А для редактирования давайте создадим контекстное меню для каждого элемента. Хотя тут могут возникнуть неудобства из-за того что оно не является частью визуального дерева...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2023, 22:14
Ответы с готовыми решениями:

Как создать контекстное меню для элемента управления ListBox?
Как сделать контекстное меню, которое вызывается при выборе определенного элемента list box.

Одно контекстное меню для двух listBox
Здравствуйте! Как можно использовать два пункта контекстного меню "Копировать" и "Очистить" для listBox1 и listBox2? ...

Ничего не понимаю в Class Modules. Сделал контекстное меню для Listbox
В UserForm находятся два Listbox, чтобы макрос работал пришлось сделать отдельные Class Modules для каждого Listbox Вопрос: можно ли всё...

47
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
08.03.2023, 16:27
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от INexteR Посмотреть сообщение
А можно поинтересоваться, какое?
Двойной вывод UI элемента.

Добавлено через 1 минуту
Цитата Сообщение от INexteR Посмотреть сообщение
все как тут Приложение MVVM. Контекстное меню (удаление, редактирование) для элемента (Товара) в ListBox
Я, по-моему, на этой фиксации проверял: d9f1fddaa9b5d64a801e217ab85f4b987c45ec55
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
08.03.2023, 22:35  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Я, по-моему, на этой фиксации проверял: d9f1fddaa9b5d64a801e217ab85f4b987c45ec55
Так да, Вы не то смотрели. Это первое решение, и в ссылке я как раз в первой строке пишу, что оно неуклюжее. Уже в следующей фиксации переделал на вариант, где меню хранится в ресурсах с атрибутом x:Shared.

Добавлено через 7 минут
А если Вы попробуете написать "<MenuItem Header="{Binding}"/> в коде из следующей фиксации, то получится так
Цитата Сообщение от INexteR Посмотреть сообщение
А, ясно, в таком случае в контекстном меню начинает отображаться ProductsViewModel
Добавлено через 5 часов 3 минуты
Элд Хасп, я отправил фиксацию. Там у меня много ошибок в конструкторе, сможете помочь от них избавиться? А то напрягает как-то. Ещё вопрос вот какой. Как в диалоге в зависимости от режима менять надписи, команды и прочее? Сделал для примера так
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Style TargetType="TextBlock">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Mode, Source={StaticResource dialogData}}"
                     Value="Add">
            <Setter Property="Text"
                    Value="Добавление товара" />
        </DataTrigger>
        <DataTrigger Binding="{Binding Mode, Source={StaticResource dialogData}}"
                     Value="Update">
            <Setter Property="Text"
                    Value="Редактирование товара" />
        </DataTrigger>
    </Style.Triggers>
</Style>
А может лучше сразу в методе инициализации эти отличительные особенности прописать?
Ещё я обнаружил, что маппер не заполняет в товаре производителя, поставщика и т. д. Поэтому в ComboBox привязывается Index к Id сущности. Но здесь пришлось написать IdToIndexConverter.
Также при переходе в диалог в режиме добавления почему-то родительская сетка Grid получает красную рамку, как будто валидацию не проходит, но её там и не предусматривалось
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
09.03.2023, 00:20
Цитата Сообщение от INexteR Посмотреть сообщение
, я отправил фиксацию.
Я тоже...
Реализация на статических кликерах.

Добавлено через 1 минуту
К сожалению запутался в изменениях.
Буду завтра разбираться. Но тоже уже ближе к ыечеру.

Добавлено через 38 секунд
Цитата Сообщение от INexteR Посмотреть сообщение
Вроде это решение чище, здесь не нужно мудрить с тэгом ListBoxItem
Никак не могу понять, что вы имеете ввиду под этм?

Добавлено через 55 секунд
Цитата Сообщение от INexteR Посмотреть сообщение
А может лучше сразу в методе инициализации эти отличительные особенности прописать?
Если проще - то конечно.
Для Title я так и сделал.
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
09.03.2023, 10:35  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Я тоже...
Я поражаюсь, как Вы так можете работать на два фронта. Другим помогаете, мне код параллельно пишете. Удивительно

Добавлено через 4 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Реализация на статических кликерах.
Да, я тоже так сделал. Они в классе ViewsHelper. И да, давайте они там и останутся. Я просто вижу, что Вы для каждой цели отдельный класс-хелпер описываете. И это рациональное решение. Но в случае с ViewsHelper идея в том, что в нем будет собрано множество всех необходимых компонент для разных View

Добавлено через 16 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Никак не могу понять, что вы имеете ввиду под этм?
Ну, это выражение уже неактуально. Дело в том, что когда я первый раз настраивал контекстное меню, я писал так
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Style TargetType="ListBoxItem">
                    <Setter Property="Padding"
                            Value="0" />
                    <Setter Property="Tag"
                            Value="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ListBox}}" />
                    <Setter Property="ContextMenu">
                        <Setter.Value>
                            <ContextMenu FontSize="18"
                                         DataContext="{Binding PlacementTarget, RelativeSource={RelativeSource Self}}">
                                <MenuItem Header="Редактировать" />
                                <MenuItem Header="Удалить"
                                          Command="{Binding Tag.RemoveProduct}"
                                          CommandParameter="{Binding Content}" />
                            </ContextMenu>
                        </Setter.Value>
                    </Setter>
</Style>
(это как раз из той фиксации, где Вы проверяли привязку MenuItem). Видите, как тут уродливо происходит получение вышележащего контекста: сначала привязка тэга, а потом считывание из него. И к тому же это неэффективно. А уже когда я сделал следующую фиксацию с размещением контекстного меню в ресурсах, говорю, что текущее решение проще и лучше предыдущего, о котором я написал выше
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
09.03.2023, 11:16
Цитата Сообщение от INexteR Посмотреть сообщение
Да, я тоже так сделал. Они в классе ViewsHelper. И да, давайте они там и останутся.
Мы вносили изменения параллельно.
И ваши изменения я увидел уже только после слияния фиксаций.

Цитата Сообщение от INexteR Посмотреть сообщение
Но в случае с ViewsHelper идея в том, что в нем будет собрано множество всех необходимых компонент для разных View
Да.
Но кликеры для Products - относятся только к нему и неприменимы к другим View.
Это как бы часть его CB, но реализованная более абстрактно.

Если всё помещать в один ViewsHelper - это получится монструозный класс. Очень много кода. И даже просто найти что-то в нём будет сложно.

Добавлено через 2 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если всё помещать в один ViewsHelper - это получится монструозный класс
Если всё делать в нём, то его хотя бы сделать частичным классом и разбить на разные файлы - в каждом файле члены определённой функциональности.

Добавлено через 2 минуты
INexteR, и не убирайте из обработки исключений в App завершение обработки e.Handled = true;.
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
09.03.2023, 11:26
Цитата Сообщение от INexteR Посмотреть сообщение
Контекстное меню (удаление, редактирование) для элемента (Товара) в ListBox
А если просто вот так это сделать? Тут DataGrid, но думаю разницы нет
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<DataGrid.ContextMenu>
    <ContextMenu>
        <MenuItem Header="Переименовать"
                  Command="{Binding DrawRenameDialogCommand}"
                  CommandParameter="{Binding SelectedDrawReport}"/>
        <MenuItem Header="Редактировать" 
                  Command="{Binding DrawEditDialogCommand}"
                  CommandParameter="{Binding SelectedDrawReport}"/>
        <MenuItem Header="Расценить"
                  Command="{Binding OpenWorkDataCommand}"
                  CommandParameter="{Binding SelectedDrawReport}"/>
        <Separator/>
        <MenuItem Header="Удалить чертёж" Foreground="Red" FontWeight="Bold"
                  Command="{Binding DeleteDrawCommand}"
                  CommandParameter="{Binding SelectedDrawReport}"/>
    </ContextMenu>
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
09.03.2023, 11:32
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
А если просто вот так это сделать? Тут DataGrid, но думаю разницы нет
Разницы в реализации нет.
Но есть разница в условиях задания.

1) Ваш вариант работает для выбранного элемента, что очевидно не подойдёт для режима мультиселекта;
2) В вашей реализации происходит "прокидка" действия открытия View диалогов через VM. А ставилась задача сделать "идеальную" реализацию. В том числе, чтобы в VM не было иного функционала, кроме отражения Модели.
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
09.03.2023, 11:35
Цитата Сообщение от Элд Хасп Посмотреть сообщение
что очевидно не подойдёт для режима мультиселекта;
Чего это не подойдёт... Пишем
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using System.Collections;
using System.Collections.Specialized;
using System.Windows;
using System.Windows.Controls;
 
using Microsoft.Xaml.Behaviors;
 
namespace DBClient
{
    public class DataGridMultiSelectionBehavior : Behavior<DataGrid>
    {
        public static readonly DependencyProperty SelectedItemsProperty =
            DependencyProperty.Register("SelectedItems", typeof(IList), typeof(DataGridMultiSelectionBehavior),
                new UIPropertyMetadata(null, SelectedItemsChanged));
 
        public IList SelectedItems
        {
            get => (IList)GetValue(SelectedItemsProperty);
            set => SetValue(SelectedItemsProperty, value);
        }
 
        private bool _isUpdatingTarget;
        private bool _isUpdatingSource;
 
        private static void SelectedItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            if (!(d is DataGridMultiSelectionBehavior behavior))
            {
                return;
            }
 
            INotifyCollectionChanged newValue = e.NewValue as INotifyCollectionChanged;
 
            if (e.OldValue is INotifyCollectionChanged oldValue)
            {
                oldValue.CollectionChanged -= behavior.SourceCollectionChanged;
                behavior.AssociatedObject.SelectionChanged -= behavior.DataGridSelectionChanged;
            }
 
            if (newValue != null)
            {
                behavior.AssociatedObject.SelectedItems.Clear();
                foreach (object item in (IEnumerable)newValue)
                {
                    behavior.AssociatedObject.SelectedItems.Add(item);
                }
            }
 
            behavior.AssociatedObject.SelectionChanged += behavior.DataGridSelectionChanged;
            newValue.CollectionChanged += behavior.SourceCollectionChanged;
 
        }
        private void DataGridSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (_isUpdatingTarget)
            {
                return;
            }
 
            IList selectedItems = SelectedItems;
 
            if (selectedItems == null)
            {
                return;
            }
 
            try
            {
                _isUpdatingSource = true;
 
                foreach (object item in e.RemovedItems)
                {
                    selectedItems.Remove(item);
                }
 
                foreach (object item in e.AddedItems)
                {
                    selectedItems.Add(item);
                }
            }
            finally
            {
                _isUpdatingSource = false;
            }
        }
        private void SourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            if (_isUpdatingSource)
            {
                return;
            }
 
            try
            {
                _isUpdatingTarget = true;
 
                if (e.OldItems != null)
                {
                    foreach (object item in e.OldItems)
                    {
                        AssociatedObject.SelectedItems.Remove(item);
                    }
                }
 
                if (e.NewItems != null)
                {
                    foreach (object item in e.NewItems)
                    {
                        AssociatedObject.SelectedItems.Add(item);
                    }
                }
 
                if (e.Action == NotifyCollectionChangedAction.Reset)
                {
                    AssociatedObject.SelectedItems.Clear();
                }
            }
            finally
            {
                _isUpdatingTarget = false;
            }
        }
        protected override void OnAttached()
        {
            base.OnAttached();
            if (SelectedItems != null)
            {
                AssociatedObject.SelectedItems.Clear();
                foreach (object item in SelectedItems)
                {
                    AssociatedObject.SelectedItems.Add(item);
                }
            }
        }
    }
}
В команде читаем SelectedItems и правим что надо...
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
09.03.2023, 11:43  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Но кликеры для Products - относятся только к нему и неприменимы к другим View.
Это как бы часть его CB, но реализованная более абстрактно.
Разумеется. Я и не думал подключать этот обработчик в других местах

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
И даже просто найти что-то в нём будет сложно.
Ctrl+F ))
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
09.03.2023, 11:46
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
В команде читаем SelectedItems и правим что надо...
Вы не поняли.
В режиме мультиселекта в SelectedItem будет только одна сущность. Та которая была выбрана первой. При добавлении выбранных SelectedItem не будет меняться.

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

Добавлено через 2 минуты
Цитата Сообщение от INexteR Посмотреть сообщение
Ctrl+F
Любимая забава: "Сначала самому себе создать сложности, а потом придумывать как их решать...".

Принцип единственной ответственности SOLID читали?
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
09.03.2023, 11:47
Цитата Сообщение от Элд Хасп Посмотреть сообщение
то по вашей реализации диалоги будут созданы не для той сущности для которой нужно.
В команде проверку проводить
C#
1
if (SelectedItems.Count > 1) { ... }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
09.03.2023, 11:48
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
В команде читаем SelectedItems
Определить по этой коллекции элемент над которым был ПКМ невозможно.

Добавлено через 18 секунд
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
В команде проверку проводить
И что это даст?
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
09.03.2023, 11:49  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Любимая забава: "Сначала самому себе создать сложности, а потом придумывать как их решать...".
Ну это же шутка) Конечно стоит поделить класс хотя бы на части
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Принцип единственной ответственности SOLID читали?
Было такое
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
09.03.2023, 11:49
Andrey-MSK, попробуйте сами последовательно, по одному выбрать три элемента.
Потом вызвать контекстное меню на вторым выбранным.
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
09.03.2023, 11:51  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Определить по этой коллекции элемент над которым был ПКМ невозможно.
А проверка попадания в Visual здесь не поможет?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
09.03.2023, 11:52
Цитата Сообщение от INexteR Посмотреть сообщение
А проверка попадания в Visual здесь не поможет?
Как это сделать в команде в которую будет передаваться только SelectedItem?
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
09.03.2023, 11:52
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Потом вызвать контекстное меню на вторым выбранным.
Если делается мультиселект, то подразумевается что операция будет ОДНА для всего что выделено, например обновить пару свойств или просто удалить из списка. Смысл тогда групповой операции?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
09.03.2023, 11:58
Добавлено через 3 минуты
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Смысл тогда групповой операции?
За счёт ограничения функционала - конечно, можно передавать просто SelectedItems.
Я не знаю для чего это можно применить, но допустим, пользователь выбрал какой-то элемент дальше листает список. И увидел что другой элемент нужно удалить. Делает над ним ПКМ и в команду вместо этого элемента попадает и предыдущий выбранный, который удалять не нужно.
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
09.03.2023, 12:16
Цитата Сообщение от Элд Хасп Посмотреть сообщение
И увидел что другой элемент нужно удалить.
Нуууууу... И как такое сделать? Даже чисто гипотетически, как можно написать код, который узнает сам что из списка удалить, а что изменить? Опять делать список и в нём отмечать что нужно с этим всем сделать?
Над группой ВСЕГДА выполняется ОДНА операция. Выделяете - меняете свойства, выделяете - удаляете, выделяете - копируете и т.д.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
09.03.2023, 13:00
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
И как такое сделать? Даже чисто гипотетически, как можно написать код, который узнает сам что из списка удалить, а что изменить?
Выше же есть несколько реализаций которые мы с INexteR обсуждаем.
Принцип очень простой - Контекстное Меню нужно задавать не в ItemsControl (ListBox, DataGrid и т.п.), а в его элементе или в шаблоне элемента.

Добавлено через 1 минуту
Но там возникает специфическая задача получения общей VM из другого визуального дерева, так как визуализация Контекстного Меню происходит в отдельном окошке.

Добавлено через 1 минуту
Вот о том как лучше реализовать эту передачу между разными визуальными деревьями, собственно, и идёт общение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.03.2023, 13:00

Удаление, редактирование и поиск элементов в массиве структур (консольное приложение с меню)
Всем привет! Задали работу по программированию, смоделировать работу склада по добавлению, удалению, изменению товаров (товар как массив...

Привязка команды для элемента контекстное меню TreeView
Имеется дерево. Как сделать разное контекстное меню для элемента разобрался. Команда тоже существует в LampViewModel(Lamps - список Lamp) с...

Как сделать контекстное меню для каждого элемента QListWidget
Не как не могу понять как сделать контекстное меню для каждого элемента QListWidget, помогите пожалуйста Qt начал изучать совсем недавно

Контекстное меню: Редактирование кнопок
Всем привет, появился такой вопрос, как мне в контекстном меню убрать кнопку обновить(рабочий стол) или изменить(txt файл), например хочу...

Контекстное меню в ListBox
Добрый времени суток. Имеется заполненный ListBox. Также есть ContextMenuStrip. Необходимо, чтобы ContextMenuStrip открывался, только...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. Сразу отвечу: А в PvP с ним. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru