Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174

Крашится программа при подключении Data Context

27.09.2023, 18:19. Показов 2796. Ответов 67
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, пишу я спокойно себе разметку, никого не трогаю и тут в один прекрасный момент при сборке вылетела ошибка, которую на протяжении нескольких часов я никак не могу решить.
В чем суть, как я понял, если я добавляю на страницу Page111 Data Context MainViewModel и оставляю все так как на первом скриншоте, то вылетает ошибка.
А если я убираю DataContext, то все загружается нормально
При этом, если я убираю Content = new Page111() и оставляю в XAML Data Context, то тоже все загружается нормально.
А самое интересное в том, что у меня все до этого работало прекрасно, пока я не начал писать ItemControl для DockPanel.
Уже голову себе всю сломал, подскажите, в чем дело)

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
internal partial class MainViewModel
{
 
    [ObservableProperty] private ObservableCollection<Client> _clients = new();
    [ObservableProperty] private ObservableCollection<TabItem> _tabItems = new();
    [ObservableProperty] private ObservableCollection<ScreenShotModel> _screenShots = new();
 
 
 
 
 
    public MainViewModel()
    {
        ApplicationContext db = new();
 
        var users = db.Clients;
 
 
        foreach (var client in users)
        {
            Clients.Add(client);
        }
 
        TabItems.Add(
            new TabItem
            {
                Title = "89156347371",
                Content = new Page111(),
            }
        );
 
        ScreenShots.Add(new ScreenShotModel
        {
            Title = $"Скриншот",
            ImgSours = "Regular_FileImage",
            Text = "",
        });
 
    }
 
 
 
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
internal class TabItem : ObservableRecipient
{
    private string _title;
    private Page111 _content;
 
    public string Title
    {
        get => _title;
        set => SetProperty(ref _title, value);
    }
 
    public Page111 Content
    {
        get => _content;
        set => SetProperty(ref _content, value);
    }
}
XML
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
<Page x:Class="ChipTunningApp.Views.Windows.TabControl"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:fa="http://schemas.fontawesome.com/icons/"
      xmlns:view="clr-namespace:ChipTunningApp.ViewModels.MainViewModel"
      xmlns:models="clr-namespace:ChipTunningApp.Models"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800"
      Title="TabControl1xaml">
 
    <Page.DataContext>
        <view:MainViewModel></view:MainViewModel>
    </Page.DataContext>
 
    <Grid>
        <ScrollViewer>
            <StackPanel>
                <DockPanel  Height="85" Dock="Top" Margin="10 10 10 30">
                    <UniformGrid Rows="2" Columns="6">
                        <TextBlock Text="Имя клиента" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Номер клиента" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Номер авто" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Марка авто" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Модель авто" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Проблема" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <CheckBox HorizontalAlignment="Center" Margin="0 8 0 0" BorderThickness="3"/>
                    </UniformGrid>
                </DockPanel>
                <DockPanel Margin="0 0 0 30">
                    <TextBlock Text="Скриншоты" HorizontalAlignment="Center" Height="30" FontSize="20" FontWeight="Bold"/>
                </DockPanel>
                <StackPanel Orientation="Horizontal">
                    <Grid Height="250">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                        </Grid.ColumnDefinitions>
                        <DockPanel Grid.Column="0" Margin="30 10 10 10">
                            <ItemsControl ItemsSource="{Binding ScreenShots}">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <StackPanel>
                                            <fa:ImageAwesome Icon="{Binding ImgSours}" Height="100" Width="100"/>
                                            <TextBox Text="{Binding Text}" Width="100" Height="100"></TextBox>
                                        </StackPanel>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </DockPanel>
                    </Grid>
                </StackPanel>
            </StackPanel>
        </ScrollViewer>
    </Grid>
</Page>
Миниатюры
Крашится программа при подключении Data Context   Крашится программа при подключении Data Context  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.09.2023, 18:19
Ответы с готовыми решениями:

Крашится БД при подключении через ADO
Уважаемые знатоки, Есть база dbmain.accdb, подключаюсь к ней с разных машин из VBA (excel,access) (виртуалки, расшаренная папка) через...

Программа крашится при ALT+F4
Добрый день. В своей игре я использую вычислительные шейдеры, которые требуют очищения через функцию ComputeBuffer.Dispose() я не...

Программа крашится при нажатии Y
uses ABCObjects,GraphABC; var Font_Game:string; new_game,bot_game,exit_game:TextABC; s_g,b_g:boolean; Procedure...

67
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.09.2023, 10:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от AndreyXP Посмотреть сообщение
Я еще не загружал изменения
Ок. Тогда подожду.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:11  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Я не знаю полностью логику вашего приложения и не вникал в неё.
Чисто по коду: слева у вас список клиентов. В каждом есть список public List<Vehicle> Vehicles { get; set; }. При выборе клиента, как-то логично предположить, что нужно отобразить именно его список Vehicle.
Выбор клиента осуществляется по Vehicle, да, но окно с визитом, 80% всех полей это Visit
Я переделал под визит.

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ок. Тогда подожду.
Code
1
2
[NotMapped]
public List<Screenshot> Screenshots { get; set; } = null!;
Я только сейчас понял, что это такое) Это прям зачетная тема)

Добавлено через 18 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ок. Тогда подожду.
Я отправил изменения, но почему-то с установкой начальных данных, список не показывает то, что они есть. Попробую разобраться

Добавлено через 3 минуты
Если делать напрямую, то работает
Clients.Add(
new Client { Id = 1, Phone = "89136403289", Name = "Андрей" }
);
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.09.2023, 11:17
Цитата Сообщение от AndreyXP Посмотреть сообщение
Я только сейчас понял, что это такое) Это прям зачетная тема)
Это временная заглушка, чтобы не менять миграцию.
Нужно сделать нормальную таблицу с изображениями (массив байт) и её подтягивать.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:26  [ТС]
Элд Хасп, таб открывается, а внутри пустота
Code
1
2
3
<DataTemplate DataType="{x:Type db:Visit}">
                        <views:VisitPage/>
                        </DataTemplate>
Мол не существует такой страницы, хотя она есть
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.09.2023, 11:27
Цитата Сообщение от AndreyXP Посмотреть сообщение
о почему-то с установкой начальных данных, список не показывает то, что они есть. Попробую разобраться
Скорее всего что с миграцией: db.Database.Migrate();.
Это одноразовый вызов для перехода со старой БД.
А для Code First нужно создание базы "с нуля".
Если закомментить db.Database.Migrate();, то выходят ошибки в Code First.
Нужно их исправлять.

Мне уже личными делами надо заняться. Попробую по быстрому разодраться, но не обещаю.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:37  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Мне уже личными делами надо заняться. Попробую по быстрому разодраться, но не обещаю.
Спасибо, сейчас главная проблема в том, что не открывается в новом Табе VisitPage
Раньше я делал через Frame - проблем не было
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.09.2023, 11:40
Не... Не получается по быстрому разобраться: какой-то конфликт между миграцией и Code First. Не создаётся таблица клиентов.

Добавлено через 1 минуту
Не таблица, а вообще структура БД. Только файл создаётся.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:42  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Не... Не получается по быстрому разобраться: какой-то конфликт между миграцией и Code First. Не создаётся таблица клиентов.
Думаю, на данном этапе будет достаточно добить начальный список клиентов через ViewModel

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Не таблица, а вообще структура БД. Только файл создаётся.
Посмотрите, пожалуйста, почему не открывается окно внутри таба
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.09.2023, 11:43
Цитата Сообщение от AndreyXP Посмотреть сообщение
главная проблема в том, что не открывается в новом Табе VisitPage
Пока будет "думать от View" не сможете по нормальному освоить ни один из MV* паттернов. Основная часть приложения это Модель. И пока она некорректно работает приступать к View смысла нет.

Я сейчас посмотрю в чём проблема. Возможно просто не подгружаются данные.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:43  [ТС]
Элд Хасп, Через ViewModel создается полностью таблица с миграциями
Миниатюры
Крашится программа при подключении Data Context  
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.09.2023, 11:50
Цитата Сообщение от AndreyXP Посмотреть сообщение
почему не открывается окно внутри таба
Таб контрол привязан к Транспортным средствам:
XML
1
 <TabControl  ItemsSource="{Binding Vehicles}" Grid.Row="1" SelectedItem="{Binding SelectedVehicle}">
Соответственно в его вкладка будет отображать один Vehicle.
А у тебя задано представление для визита:
XML
12
13
14
    <d:UserControl.DataContext>
        <db:Visit/>
    </d:UserControl.DataContext>
Добавлено через 49 секунд
Цитата Сообщение от AndreyXP Посмотреть сообщение
создается полностью таблица с миграциями
С миграциями.
А с чего ты мигрируешь?
Тебе миграция или Code First нужен?
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:51  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Тебе миграция или Code First нужен?
На данном этапе Code First)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.09.2023, 12:03
AndreyXP, ты перепутал когда менял наследование в Code Behind.
Правильно:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System.Windows.Controls;
 
namespace ChipTunningApp.Views.Windows
{
    /// <summary>
    /// Логика взаимодействия для TabControl.xaml
    /// </summary>
    public partial class VisitPage : UserControl
    {
        public VisitPage()
        {
            InitializeComponent();
        }
    }
}
Добавлено через 1 минуту
Цитата Сообщение от AndreyXP Посмотреть сообщение
На данном этапе Code First)
Ну так отключи db.Database.Migrate(); и увидишь, что Code First не работает.

Добавлено через 2 минуты
AndreyXP, отправил фиксацию.
Сейчас уже всё - убегаю по личным делам.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 15:35  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
AndreyXP, ты перепутал когда менял наследование в Code Behind.
не заметил, спасибо)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.09.2023, 17:34
AndreyXP, Я через час-два буду дома и смогу продолжить. Фиксацию к этому времени сделай.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 17:36  [ТС]
Элд Хасп, я сегодня тоже не дома, загрузил Ваши правки и уехал, тоже через пару часов только буду дома
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
01.10.2023, 00:19
AndreyXP, залил фиксацию:
Исправлена инициализация БД, реализовано добавление-редактирование клиента
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
01.10.2023, 08:23  [ТС]
Элд Хасп, Доброе утро, я посмотрел на ваш код и у меня так много вопросов.. Написано красиво, а для меня совсем непонятно, просто темный лес)))

Добавлено через 29 минут
Немножко подразобрался и возникло очень много вопросов
Добавление и редактирование происходит в отдельном окне, это в принципе интересное решение, да, но из-за такого решения теперь появился критический баг (Видео загрузил)

Можно ведь сделать, чтобы добавление новых пользователей и их редактирование, происходило просто в отдельном табе, а не на новой странице, тогда такой баг можно будет запросто избежать

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

Или так все и было запланировало или я просто что-то не понимаю, честно говоря запутался уже))
Я в принципе вроде как нашел с чем баг, но пока трогать не буду т.к. не знаю, что именно Вы хотели сделать..

Но код выглядит круто, я так, наверное, никогда писать не смогу))

0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
01.10.2023, 10:21
Цитата Сообщение от AndreyXP Посмотреть сообщение
да, но из-за такого решения теперь появился критический баг (Видео загрузил)
Видео посмотрел. Не понял в чём баг заключается.
Словесно объясните.

Цитата Сообщение от AndreyXP Посмотреть сообщение
Не имеет смысла добавления нового пользователя просто по имени и номеру телефона, ведь сразу же можно открывать окно всего визита и добавлять, редактировать через него,
Сделать можно по всякому.
У меня нет понимания логики вашего приложения.
Пока я вижу только два уровня иерархии: список клиентов и списки TC этих клиентов.
Каждому ТС, соответствует вкладка.
В списке ТС есть ещё список визитов. Это уже третий уровень иерархии.

Концептуально для меня логичным работа выглядит так:
- Для того чтобы добавить Визит, нужно для него выбрать ТС. Если это новое ТС, то сначала его создать;
- Для того чтобы добавить ТС, надо выбрать для него клиента. Если это новый клиент, то сначала его создать.

Не знаю как у вас построена работа на практике, но обычно разделяют лид, квалификацию и визит.

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

Цитата Сообщение от AndreyXP Посмотреть сообщение
Я в принципе вроде как нашел с чем баг,
Я не делал законченную систему.
Я просто показываю разные способы реализации.
А о баге - так и не понял, что вы имеете ввиду.

Так же проблема ещё в том, что у вас нет готовой Модели, нет понимания и знаний как работать с EF и Community Toolkit.
В результате вы задаёте вопросы по WPF, но по факту для реализации приходится вам показыать как работать с EF и CT, что не имеет отношения к WPF.

Добавлено через 1 минуту
Цитата Сообщение от AndreyXP Посмотреть сообщение
Но код выглядит круто, я так, наверное, никогда писать не смогу))
Это самые начальные азы.
Ничего сложного в этом нет.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
01.10.2023, 10:26  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Например, вам поступила информация что есть такой-то клиент, который заинтересован ваших услугах. Больше ничего о нём не известно. Информация о нём должна быть потеряна - надо пытаться до него дозвониться.
Дозвонились, узнали какое авто у него, добавили его в базу согласовали время визита. Но самого визита ещё нет.
И последняя стадия это уже сам визит.

Кстати, неплохая идея...

Цитата Сообщение от Элд Хасп Посмотреть сообщение
А о баге - так и не понял, что вы имеете ввиду.
Нет единой системы вкладок, нажимая на каждого клиента, у него открываются одинаковые вкладки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.10.2023, 10:26

Ошибка при подключении firebird в Entity Data Model
Уважаемые Гуру! Сделал подключение к firebird из VisualStudio 2010, пытаюсь создать Entity Data Model, но получаю ошибку &quot;Unable to...

Свертывание матрицы, программа крашится при N > 2
программа крашится, если вводить n больше чем 2, как починить? #include &lt;stdio.h&gt; #include &lt;malloc.h&gt; extern double...

Программа крашится при вводе данных
Вот этот код скопирован из учебника. На моем компьютере почему то запускается программа но при вводе 1.2 3.4 5.6| просто выключается и все....

Крашится программа при переходе в userparamsActivity
программа вылетает сразу после перехода в этот активити Лог выдает ошибку: Caused by: java.lang.NullPointerException: Attempt to...

Программа компилируется, но при выполнении крашится
Задача состоит в том, чтобы заполнить массив t1 случайными числами, а после задать каждому элементу массива t2 значение, которое является...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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