Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
3 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 77

Обращение к контролам второй формы из первой

11.05.2015, 15:35. Показов 3396. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
В первую очередь хочу перед вами извиниться за то, что сейчас задам вопрос, который задавали здесь до меня сто раз...
Долго я читал то, что нашел в поиске, но то ли невнимательно читал, то ли не хватает мне пока понималки, но испытываю проблемы с этим до сих пор.

Нужно получить из одной формы доступ к контролам другой. Самый быстрый и простой - через изменение модификатора доступа с private на public... однако, мне известно, что увидев такой код, любой нормальный кодер постарается ударить меня чем-то очень тяжелым

Вот в этой теме => Ответы на 7 самых частых вопросов по WinForms
Нашел для себя способ, который показался мне наиболее привлекательным по балансу простоты/правильности, а именно:

2.5 Используем свойство 'родитель'
При создании второй формы устанавливаем владельца

C#
1
2
3
Form2 f = new Form2();
f.Owner = this;
f.ShowDialog();
Во второй форме определяем владельца

C#
1
2
3
4
5
6
Form1 main = this.Owner as Form1;
if(main != null)
{
    string s = main.textBox1.Text;
    main.textBox1.Text = "OK";
}
+ Доступ ко всем открытым полям/функциям первой формы
+ Передача данных возможна в обе стороны
+ Не нарушает ООП

Но при попытке данным способом воспользоваться сталкиваюсь с тем, что у меня он не работает. Прошу, научите меня пользоваться данным способом. Делаю предположение, что вставляю данные участки кода не туда, куда нужно.. или просто не понимаю чего-то в сути данного способа.

Что пытаюсь сделать:
Есть 2 формы. На первой форме - листбокс, который берет данные из текстового файлика.
На второй форме - текстбокс. Первая форма - что то вроде списка справочника, вторая - его элемент.
Нужно, чтобы при нажатии на элемент листбокса, открывалась форма с текстбоксом (уже реализовано), но не пустая, а с содержанием, соответствующим элементу списка листбокса, на который нажимаешь.
С изменением модификатора доступа такая система работает... но так ведь нельзя. Помогите пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.05.2015, 15:35
Ответы с готовыми решениями:

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

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

Обращение к контролам другой формы
Почему в VB.NET такая конструкция допустима: Dim instance As New Form2() instance.Show() Dim TTT =...

13
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
11.05.2015, 15:37
Цитата Сообщение от Katbert Посмотреть сообщение
Помогите пожалуйста.
Я так понял из вашего вопроса, вам только в одну сторону передать данные нужно? Если так, через конструктор второй формы передавайте.
1
3 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 77
11.05.2015, 22:57  [ТС]
C#
1
2
3
4
5
6
7
8
public Form2(string data)
{
    InitializeComponent();
    //Обрабатываем данные
    //Или записываем их в поле
    this.data = data;
}
string data;
Решил попытаться. Столкнулся с тем, что не могу реализовать строчку:
this.data = data;
У меня попросту нет такого варианта через оператор-точку, при попытке скопипастить - "не содержит определения для data и не найден метод расширения бла бла", не видит в общем.
Что я делаю не так?

Добавлено через 6 часов 31 минуту
Цитата Сообщение от Katbert Посмотреть сообщение
this.data
Вообще, что это за конструкция такая? Вроде как в С# у классов такого свойства нет. Пример в гайде - некорректен?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
11.05.2015, 23:00
Цитата Сообщение от Katbert Посмотреть сообщение
Пример в гайде - некорректен?
Все правильно вроде, вы
C#
1
string data;
в класс формы то добавили?
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
11.05.2015, 23:27
Цитата Сообщение от Katbert Посмотреть сообщение
Но при попытке данным способом воспользоваться сталкиваюсь с тем, что у меня он не работает. Прошу, научите меня пользоваться данным способом.
Возможно, вы забыли в свойстве Modifiers контрола родительской формы поставить значение Public.
0
3 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 77
13.05.2015, 00:09  [ТС]
Someone007, да, добавил, переменную то эту видит прекрасно. Свойства такого нет.
Эхехех.. неужели нет нормального материала по этой теме. В гайде либо не рабочие, либо что-то недосказанно...

Добавлено через 1 минуту
chumich, именно этого я как раз стремлюсь всеми силами избежать, ведь это противоречит парадигме ООП.
Цель того приложения, которое я сейчас пытаюсь таки сделать - исключительно учебная. Так зачем мне учиться кодить неправильно, ведь войдет в привычку, да так и останется..
Или я чего-то не понимаю?
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
13.05.2015, 00:17
Цитата Сообщение от Katbert Посмотреть сообщение
Самый быстрый и простой - через изменение модификатора доступа с private на public... однако, мне известно, что увидев такой код, любой нормальный кодер постарается ударить меня чем-то очень тяжелым
Если на паблик, то да, но вот например в VB.Net контролы сохраняются с модификатором Friend (аналог шарповского internal) самим дизайнером форм по умолчанию и таких вопросов там обычно не возникает. Ну и говорить о том, что создатели дизайнера для бейсика - лохи, я бы тоже не стал. Это не лучший способ решить проблему, но в большинстве случаев он оказывается вполне себе приемлемым.
Не то чтобы я советовал этим способом воспользоваться, но как минимум иногда можно.
Ну, а так, ну взять стандартные диалоговые окна. Там все реализовано довольно просто: У диалога обычно есть свойство, которому можно присвоить значение и именно это значение и отображается при запуске. Обычно из этого же свойства и результат берется.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
13.05.2015, 00:19
Минимальный пример реализующий то что вы описали в 1 посте в моем понимании:
Вложения
Тип файла: zip TestProject1.zip (13.1 Кб, 11 просмотров)
1
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
13.05.2015, 00:29
Цитата Сообщение от Katbert Посмотреть сообщение
Так зачем мне учиться кодить неправильно
Что для вас неправильно? Изменение свойств контрола? Интересно, зачем тогда разработчики выводят их на всеобщее обозрение? Неужели они сознательно стремятся "испортить" нас?! Это чем-то похоже на то, если вы сидя в грязной робе, в телеге, голодный и держа в руке кусок жареного мяса, скажете, нет, я не хочу есть "как свинья", без вилки и ножа. Если какой-нибудь аристократ, узнает про это, то обязательно скажет: "фи!". Наверно, я "ненормальный кодер", но у меня сотни работающих систем, в которых данные передаются именно таким способом, который как вы правильно заметили:
Цитата Сообщение от Katbert Посмотреть сообщение
показался мне наиболее привлекательным по балансу простоты/правильности
1
3 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 77
13.05.2015, 04:40  [ТС]
Someone007, спасибо большое, но, не могу открыть в своей студии ( Более поздняя версия А можно кодом?

diadiavova,
Цитата Сообщение от diadiavova Посмотреть сообщение
Ну, а так, ну взять стандартные диалоговые окна. Там все реализовано довольно просто: У диалога обычно есть свойство, которому можно присвоить значение и именно это значение и отображается при запуске. Обычно из этого же свойства и результат берется.
А можно про этот момент поподробнее?


Цитата Сообщение от chumich Посмотреть сообщение
Что для вас неправильно? Изменение свойств контрола? Интересно, зачем тогда разработчики выводят их на всеобщее обозрение? Неужели они сознательно стремятся "испортить" нас?! Это чем-то похоже на то, если вы сидя в грязной робе, в телеге, голодный и держа в руке кусок жареного мяса, скажете, нет, я не хочу есть "как свинья", без вилки и ножа. Если какой-нибудь аристократ, узнает про это, то обязательно скажет: "фи!". Наверно, я "ненормальный кодер", но у меня сотни работающих систем, в которых данные передаются именно таким способом, который как вы правильно заметили:
Отлично поставлен вопрос - что неправильно для меня.
Я оочень и очень начинающий в этом деле человек. При этом - самоучка, а значит, мне приходится брать интересующую меня информацию из множества разных источников. И часто встает вопрос - как мне, неопытному, определить - где советуют правильно, а где нет?
Я захожу на этот форум, набираю в поиске свой вопрос и замечаю, что в 80% случаев в качестве ответа дают ссылку на указанную в ОП-посте тему.
И в этой теме я вижу следующее:
2.1 Изменение модификатора доступа
В Form2 Установить модификатор доступа для контрола/поля public
В любом месте Form1
C#
1
2
3
Form2 f = new Form2();
f.ShowDialog();
this.textBox1.Text = f.textBox1.Text;
+ Самый быстрый в реализации и удобный способ
- Противоречит всем основам ООП
- Возможна передача только из более поздней формы в более раннюю
- Форма f показывается только с использованием ShowDialog(), т.е. в первую форму управление вернется только по закрытию второй. Избежать этого можно, сохранив ссылку на вторую форму в поле первой формы
А также, в процессе поиска информации, периодически натыкаюсь на комментарии на форумах, где люди говорят, что нарушать правила ООП очень очень плохо.

Возможно, я совершенно напрасно выбрал своим первым языком программирования именно ООПный С#. Я что-то делаю, что-то получается, вижу прогресс, мне интересно - с этим все в порядке.
Но, если честно, я не понимаю парадигму ООП. Я, в силу отсутствия опыта, не могу оценить последствия нарушения такого столпа ООП, как инкапсуляция.

Возможно, все не так и страшно? Потому что мне значительно проще сейчас взять и изменить модификатор доступа, чем тратить огромное количество времени на поиск информации о том, как это обойти.
Если я сгущаю краски и такие решения не в учебном, а в "повседневном" программировании вполне себе допустимы и не вызовут у моих будущих коллег рвоты, прошу Вас, направьте меня.
И простите, если что-то в моих сообщениях показалось Вам оскорбительным, это от недостатка опыта, не более
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
13.05.2015, 11:24
Лучший ответ Сообщение было отмечено Katbert как решение

Решение

Цитата Сообщение от Katbert Посмотреть сообщение
А можно про этот момент поподробнее?
Ну, а что подробнее? Посмотри любое диалоговое окно. Как там все устроено? Например файл диалог. Там есть свойства файлнэйм, инитиалдиректори и т. д. Ты можешь, создав экземпляр диалога просто присвоить значение инитиалдиректори и у тебя окошко будет открыто как раз в том каталоге, который ты укажешь. Дальше, после запуска окна, откуда ты берешь результат? Опять-таки из свойства файлнэйм. Как все внутри организовано - не имеет ровно никакого значения, ты только имеешь доступ к свойствам, актуальным для поведения этого диалога.
Ну вот взять диалог, редактирующий текст. Там будет текстбокс, назовем его textBox1 и кнопки ОК и Отмена.
Код этого окна будет выглядеть так
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
    public partial class TextEditorDialog : Form
    {
        public TextEditorDialog()
        {
            InitializeComponent();
        }
 
        private void buttonOK_Click(object sender, EventArgs e)
        {
            this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }
 
        private void buttonCancel_Click(object sender, EventArgs e)
        {
            this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
        }
 
        public string EditingText
        {
            get
            {
                return textBox1.Text;
            }
            set
            {
                textBox1.Text = value;
            }
        }
    }
Теперь в вызывающей форме нам надо отредактировать содержимое какого-нибудь лейбла, скажем label1.
C#
1
2
3
4
5
6
7
8
            using (var txtdlg=new TextEditorDialog())
            {
                txtdlg.EditingText = label1.Text;
                if (txtdlg.ShowDialog()== System.Windows.Forms.DialogResult.OK)
                {
                    this.label1.Text = txtdlg.EditingText;
                }
            }
Все. Никакого доступа ни к чему другому кроме редактируемого текста мы не предоставили. Инкапсуляция соблюдена, догматики могут не беспокоиться о своих рвотных рефлексах )))
Цитата Сообщение от Katbert Посмотреть сообщение
В Form2 Установить модификатор доступа для контрола/поля public
В любом месте Form1
Я об этом ведь упомянул уже. Ну не надо паблик, установи интернал и переменная будет видна только в пределах сборки. В бейсике такое поведение заложено по умолчанию и ничего страшного не происходит. Мало того, приватное поле не обеспечивает невозможность доступа Достучаться до контрола можно через коллекцию Controls формы, например так
C#
1
form.Controls.Find("button1", true)[0].Text = "Какой-нибудь неправильный текст";
Кстати можешь это использовать для доступа к нужному контролу.
И вообще не надо к рекомендациям относиться как к догмам. Надо понимать для чего нужно выполнять те или иные правила, тогда будешь знать когда от них можно отступить.

Пример прилагаю в аттаче, правда написан на vs2013, но если что, вполне можешь создать проект и добавить код оттуда. В принципе должно работать и в более старых версиях.
Вложения
Тип файла: rar dialogsample.rar (50.5 Кб, 14 просмотров)
1
3 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 77
13.05.2015, 21:58  [ТС]
diadiavova, спасибо огромное, сейчас буду разбираться !

Добавлено через 33 минуты
diadiavova, ай красота, все работает, еще и много новых инструментов для себя узнал! Еще раз большое спасибо!
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
14.05.2015, 11:39
Katbert, но на самом деле диалоговые окна фреймворка имеют несколько иной вид. Обрати внимание, что ни одно из стандартных окон не является наследником формы. Мало того, ты можешь добавить такое окно в форму из панели интсрументов и настроить его свойства прямо в дизайнере. При этом какой-либо доступ к элементам окна отсутствует в принципе. По большому счету это и есть лучший вариант далогового окна. Вот привожу вариант такого окна. Функционал тот же - редактируется текст. Изменить окошко в дизайнере уже не плучится, но создавал я его именно в нем, просто потом код дизайнера перенес в основной код.
Кликните здесь для просмотра всего текста
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
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 dialogsample
{
 
 
    public class TextEditDialog : Component
    {
 
        TextEditorDialog2 editorForm = new TextEditorDialog2();
 
        public DialogResult ShowDialog()
        {
            return editorForm.ShowDialog();
        }
        public DialogResult ShowDialog(IWin32Window owner)
        {
            return editorForm.ShowDialog(owner);
        }
 
        public String EditingText
        {
            get
            {
                return editorForm.EditingText;
            }
            set
            {
                editorForm.EditingText = value;
            }
        }
 
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
            if (disposing)
            {
                editorForm.Dispose();
            }
        }
        private class TextEditorDialog2 : Form
        {
            public TextEditorDialog2()
            {
                InitializeComponent();
            }
 
            private void buttonOK_Click(object sender, EventArgs e)
            {
                this.DialogResult = System.Windows.Forms.DialogResult.OK;
            }
 
            private void buttonCancel_Click(object sender, EventArgs e)
            {
                this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            }
 
            public string EditingText
            {
                get
                {
                    return textBox1.Text;
                }
                set
                {
                    textBox1.Text = value;
                }
            }
 
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.IContainer components = null;
 
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
 
            #region Windows Form Designer generated code
 
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                this.textBox1 = new System.Windows.Forms.TextBox();
                this.buttonOK = new System.Windows.Forms.Button();
                this.buttonCancel = new System.Windows.Forms.Button();
                this.SuspendLayout();
                // 
                // textBox1
                // 
                this.textBox1.Location = new System.Drawing.Point(0, 0);
                this.textBox1.Multiline = true;
                this.textBox1.Name = "textBox1";
                this.textBox1.Size = new System.Drawing.Size(285, 183);
                this.textBox1.TabIndex = 0;
                // 
                // buttonOK
                // 
                this.buttonOK.Location = new System.Drawing.Point(100, 226);
                this.buttonOK.Name = "buttonOK";
                this.buttonOK.Size = new System.Drawing.Size(75, 23);
                this.buttonOK.TabIndex = 1;
                this.buttonOK.Text = "ОК";
                this.buttonOK.UseVisualStyleBackColor = true;
                this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
                // 
                // buttonCancel
                // 
                this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
                this.buttonCancel.Location = new System.Drawing.Point(197, 226);
                this.buttonCancel.Name = "buttonCancel";
                this.buttonCancel.Size = new System.Drawing.Size(75, 23);
                this.buttonCancel.TabIndex = 2;
                this.buttonCancel.Text = "Отмена";
                this.buttonCancel.UseVisualStyleBackColor = true;
                this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
                // 
                // TextEditorDialog
                // 
                this.AcceptButton = this.buttonOK;
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.CancelButton = this.buttonCancel;
                this.ClientSize = new System.Drawing.Size(284, 261);
                this.Controls.Add(this.buttonCancel);
                this.Controls.Add(this.buttonOK);
                this.Controls.Add(this.textBox1);
                this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
                this.MaximizeBox = false;
                this.MinimizeBox = false;
                this.Name = "TextEditorDialog";
                this.Text = "Редактировать текст";
                this.ResumeLayout(false);
                this.PerformLayout();
 
            }
 
            #endregion
 
            private System.Windows.Forms.TextBox textBox1;
            private System.Windows.Forms.Button buttonOK;
            private System.Windows.Forms.Button buttonCancel;
        }
    }
}

Добавь код в проект, собери проект, после чего можно в дизанере добавлять компонент к форме и редактировать его свойства(оно там одно актуально, но это просто пример).
1
3 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 77
15.05.2015, 20:18  [ТС]
diadiavova, спасибо еще раз, все протестирую, просто закрутился маленько, дела поднавалились
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.05.2015, 20:18
Помогаю со студенческими работами здесь

Обращение к контролам другой формы
Привет. Не могу найти ответ на свой вопрос. Есть у меня форма (main_form) с набором контролов. Есть в проекте еще одна...

Обращение к первой форме из второй
Доброго здравия! У меня есть две формы, и из каждой формы может потребоваться менять свойства элементов другой. Ко второй форме из...

Отображение второй формы после отправки первой (и скрытие первой)
Добрый день! Подскажите пожалуйста как сделать так, чтобы после отправки формы обратной связи она закрывалась, а вместо нее открывалась...

Обращение из родительской формы к элементам второй формы
Помогите пожалуйста, надо динамически вывести dataGridView с таблицами данных из БД на дочернюю форму, вызывая ее из родительской формы....

Открытие (окна) второй формы всегда по центру относительно первой (формы)
Форма №1 - основное окно программы (можно свободно перемещать по экрану). Форма №2 - окно настроек (в нем можно что-то изменить и закрыть;...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru