Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

85K
24 июня 2013 года
KrutVladimir
21 / / 24.06.2013
мне нужно разработать форму которая будет состоять из трех частей, две части будут строго определенные а одна будет постоянно меняться... а конкретней это профильный чат в котором будет форма на которой одна (правая) часть будет занимать "Контакты", вторая (нижняя) будет отведена под ленту коротких сообщений, и третья (левая) самая главная... в ней отображается разные таблицы...

подскажите как правильнее это сделать?
1
24 июня 2013 года
kot_
7.3K / / 20.01.2000
Критерии "правильности"?
Я бы посоветовал оплатить труд того, кто в этом разбирается. Это будет самое правильное :)
Либо оплатить того, кто научит. Курсы по скайпу обойдуться в среднем - $5 -$30/ час в зависимости от уровня вхождения.
Вопрос сформулирован так, что дать на него конкретный ответ не возможно.
85K
25 июня 2013 года
KrutVladimir
21 / / 24.06.2013
я по другому спрошу...
давайте представим, что у нас есть 20 форм с таблицами (DataGridView), и мне нужно чтобы на экране всегда было видно три таблицы! две постоянные и одна не определенная по выбору пользователя...

сложность в том, что мне нужно чтобы таблица 1 находилась с права от таблицы которая не определенная, а таблица 2 под этими двумя

NNNN111
22222222

если у кого есть идеи как это можно реализовать, буду очень благодарен
414
26 июня 2013 года
CassandraDied
763 / / 24.05.2012
Цитата: kot_
Вопрос сформулирован так, что дать на него конкретный ответ не возможно.


А я попробую. :)
KrutVladimir, используй TableLayoutPanel.

1
27 июня 2013 года
kot_
7.3K / / 20.01.2000
Цитата: KrutVladimir
я по другому спрошу...
давайте представим, что у нас есть 20 форм с таблицами (DataGridView), и мне нужно чтобы на экране всегда было видно три таблицы! две постоянные и одна не определенная по выбору пользователя...

сложность в том, что мне нужно чтобы таблица 1 находилась с права от таблицы которая не определенная, а таблица 2 под этими двумя

NNNN111
22222222

если у кого есть идеи как это можно реализовать, буду очень благодарен


на самом деле сложности здесь нет никакой - но вы подходите к задаче не с того конца.
Во-первых, какая разница сколько у вас форм? Таблиц, которых вы отображаете всего три.
Во-вторых, что бы загружать нужную/нужные по выбору пользователя - создайте отдельно класс отображения (который будет управлять тем, что вы показываете) и передавайте ему в качестве какихто параметров, то что можно отображать.
Я пытался описать как это сделать в статье, не знаю, насколько понятно получилось. Если не понятно - задайте вопросы.

85K
01 июля 2013 года
KrutVladimir
21 / / 24.06.2013
спасибо большое за ответы!
я забыл уточнить что начал изучать C#.

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

я совсем новичок так что сильно не пинайте)
интересно а в пользовательский контроллер можно запихнуть часть формы... с таблицей и кнопками управления, а потом удалять предыдущий контрол и на его место прорисовать новый контрол? но при этом состояние остальной формы должно остаться без изменения.
1
01 июля 2013 года
kot_
7.3K / / 20.01.2000
Цитата: KrutVladimir

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


можно. но не нужно.
За перерисовку формы должен отвечать не контроллер, а представление - и ему и нужно передавать данные, обработанные контроллером.

327
01 июля 2013 года
UserNet2008
748 / / 03.04.2010
У Вас немного другой подход к созданию Формы. Как я понял Вы создали статическую Форму и разместили на ней таблицы и кнопки. Так вот Вам нужно изначально создавать динамическую Форму на базе пустой Form1:
 
Код:
frm1 = new Form1();
Вот теперь Вы с frm1 можете делать ,что хотите Add or Delete таблицы и кнопки. Или использовать UserControl.
Цитата:
чтобы перерисовывалась только одна четвертая часть формы


Это невозможно т.к frm1 потомок Form1.

51K
01 июля 2013 года
BagiLR
110 / / 29.06.2013
исходник покажите плиз, подправим!!! :) ;)
51K
01 июля 2013 года
BagiLR
110 / / 29.06.2013
в свойствах третьей формы определение на разнообразие по коду с координатами её области занятости!!! :) ;)
85K
02 июля 2013 года
KrutVladimir
21 / / 24.06.2013
Цитата: BagiLR
в свойствах третьей формы определение на разнообразие по коду с координатами её области занятости!!! :) ;)

можно тут по подробнее?

Цитата: BagiLR
исходник покажите плиз, подправим!!! :) ;)

я давно хочу написать одну программу, систему даже можно сказать ради которой решил уйти из 1С и освоить C# для ее реализации... на данный момент все еще на стадии планирования! и исходного кода нет! но все детали уже просчитаны, я четко уже представляю себе программу во всех деталях, осталось набить только код... но си подобные языки мне в новинку и я не все возможности понял! на данный момент мне нужны идеи (желательно с примером) как можно реализовать в программе возможность открывать любую форму (разные данные возможно карта или справочники) но при этом обязательно должен быть сбоку список контактов а снизу рекламная лента!
если идей не будет то я создам просто форму на которой панелями распределю зоны и остальное помещу TabControl журналы, прочее будет в отдельных модальных окнах... в принципе для данной задачи это приемлемо так как большая часть данных оперативная. Но каждый опытный программист скажет что это плохо для будущего усовершенствования проекта, через пол года я захочу внедрить 50 справочников и куда их тогда пихать?!.... Мне нужна область в которой я смогу выводить любую информацию но с прилепленными контактами и рекламой)

326
02 июля 2013 года
sadovoya
757 / / 19.11.2005
Сначала изучите язык, иначе встретите вопросы о которых пока и не догадываетесь. Вы видите пока лишь "вершину айсберга".
85K
02 июля 2013 года
KrutVladimir
21 / / 24.06.2013
Цитата: sadovoya
Сначала изучите язык, иначе встретите вопросы о которых пока и не догадываетесь. Вы видите пока лишь "вершину айсберга".

согласен, но на практике лучше всего изучать язык на конкретном примере! я из своего опыта знаю, не первый язык изучаю

326
02 июля 2013 года
sadovoya
757 / / 19.11.2005
Ага, можно сразу ОС на ассемблере начать писать :)
327
02 июля 2013 года
UserNet2008
748 / / 03.04.2010
Трудно переливать воду из ведра в ведро, если оба ведра без дна!!!
Дайте Skin вашей программы как Вы это представляете.
Не понятен ещё один аспект платформы
Цитата:
Мне нужна область в которой я смогу выводить любую информацию но с прилепленными контактами и рекламой


Это на базе Microsoft Silverlight C# or C# Win

85K
02 июля 2013 года
KrutVladimir
21 / / 24.06.2013
вот что-что а низкоуровневое программирование меня всегда пугало... ) но а вообще я программирую уже больше 10 лет... есть опыт в крупных проектах... правда все по процедурным языках... классы меня до сих пор с ума сводят, но уже начал осознавать их... хочу .NET!!!
85K
02 июля 2013 года
KrutVladimir
21 / / 24.06.2013
Цитата: UserNet2008
Трудно переливать воду из ведра в ведро, если оба ведра без дна!!!
Дайте Skin вашей программы как Вы это представляете.


Цитата: UserNet2008
Не понятен ещё один аспект платформы
Цитата:
Мне нужна область в которой я смогу выводить любую информацию но с прилепленными контактами и рекламой


Это на базе Microsoft Silverlight C# or C# Win

C# or Windows Desktop

327
03 июля 2013 года
UserNet2008
748 / / 03.04.2010
Вот макет на скорую руку

Код:
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 cshKrutVladimir
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            UC[1] = new UserControl1();this.Controls.Add(UC[1]);
            UC[2] = new UserControl2();this.Controls.Add(UC[2]);
        }

        UserControl[] UC = new UserControl[3];
         
        Size memSize;
        Point memLocation;
        int IndexUC = 1;

        private void Form1_Load(object sender, EventArgs e)
        {
            UC[IndexUC].Size = new Size
                (ClientSize.Width - panel1.Width,
                ClientSize.Height - webBrowser1.Height-mnuMain.Height);
            UC[IndexUC].Location = new Point(0, mnuMain.Height);
            memLocation = new Point(0, mnuMain.Height);
            memSize = UC[IndexUC].Size;

        }

        private void subFileExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Form1_Resize(object sender, EventArgs e)
        {
            //здесь надо делать координацию маштаба для UserControl's
            UC[IndexUC].Size = new Size
                           (ClientSize.Width - panel1.Width,
                           ClientSize.Height - webBrowser1.Height - mnuMain.Height);
            memSize = UC[IndexUC].Size;
        }

        private void bntChangeScreen1_Click(object sender, EventArgs e)
        {
            UC[1].Hide();
            IndexUC = 2;
            UC[2].Location = memLocation;
            UC[2].Size = memSize;
            UC[2].Show();
        }

        private void btnShowWebBrowser_Click(object sender, EventArgs e)
        {
            try
            {
                webBrowser1.Navigate(new Uri("http://codenet.ru/"));
            }
            catch (System.UriFormatException)
            {
                return;
            }
        }

    }
}
Результат

UserControl это таже форма.
Примерно так.
85K
04 июля 2013 года
KrutVladimir
21 / / 24.06.2013
Цитата: UserNet2008
Вот макет на скорую руку
...
Результат

UserControl это таже форма.
Примерно так.

Спасибо большое!!!!!!!!
но правда теперь напрашивается новый вопрос... если у меня будет свыше 50 UserControl с таблицами? и они будут все открыты... наверняка это будет тяжеловато для системы... возможно ли чтобы в памяти был только один UserControl, при вызове следующего по имени... текущий UserControl освобождал память а тот который вызывают появился в место него?

327
04 июля 2013 года
UserNet2008
748 / / 03.04.2010
Вы можете сами проверить в диспетчере задач. Дело в том , что UserControl не очень много берёт памяти если при UserControl4 ~5.2mb то при UserControl104 ~5.6mb это в exe file(в директории bin). А вот если запустить Web Browser ~30-35mb. Я правда сказать и не очень и искал про методы Hide() and Show() в классе UserControl нечего не сказано про них вообще см. Но как Вы видите они работаю. Выводы делайте сами.
И ыщё нашел ЛЯП в коде и исправил на это:

Код:
private void bntChangeScreen1_Click(object sender, EventArgs e)
        {
            // 2 это есть UserControl2 и т.д по коду
           SettingsUC(2, IndexUC, memLocation, memSize);
        }

         private void bntChangeScreen2_Click(object sender, EventArgs e)
        {
             SettingsUC(3, IndexUC, memLocation, memSize);
        }
 private void btnMainScreen_Click(object sender, EventArgs e)
        {
            SettingsUC(1, IndexUC, memLocation, memSize);
        }
private void SettingsUC(int _IndexUC, int _HideUC, Point _memLocation, Size _memSize)
        {
            //скрываем все видимые UserControl
            foreach (Control ctrl in Controls)
            {
                if (ctrl is UserControl)
                {
                    ctrl.Hide();
                }
            }
            //какой UserControl открыт
            IndexUC = _IndexUC;
            //координаты UserControl
            UC[_IndexUC].Location = _memLocation;
            //размер UserControl
            UC[_IndexUC].Size = _memSize;
            //показать UserControl
            UC[_IndexUC].Show();
        }
Вроде всё.
85K
05 июля 2013 года
KrutVladimir
21 / / 24.06.2013
Цитата: UserNet2008
Вы можете сами проверить в диспетчере задач. Дело в том , что UserControl не очень много берёт памяти если при UserControl4 ~5.2mb то при UserControl104 ~5.6mb это в exe file(в директории bin). А вот если запустить Web Browser ~30-35mb. Я правда сказать и не очень и искал про методы Hide() and Show() в классе UserControl нечего не сказано про них вообще см. Но как Вы видите они работаю. Выводы делайте сами.

Я больше переживаю не за UserControl а за то что будет на нем... если на каждом вывести таблицу... а их будет к примеру с выше 50 и они все будут крутится одновременно, конечно для пользователя будет отображаться один, но остальные все еще будут в памяти...

отличным вариантом было бы объявлять UserControl не при инициализации формы а по событию.... ну к примеру захотелось пользователю открыть UserControl к примеру UserControl23... сначала передаются параметры на отключение текущему UserControl после чего убивается совсем (не скрывается)... когда UserControl нет активных то начинается поиск запрашиваемого... (как еще не знаю) возможно где-то в настройках приложения будет храниться описание всех UserControl.... это будет правильнее мне кажется, так как пользователь возможно на 90% будет интересовать один два UserControl остальные он может открывать раз в месяц к примеру....

Цитата: UserNet2008
И ыщё нашел ЛЯП в коде и исправил на это:

Код:
private void bntChangeScreen1_Click(object sender, EventArgs e)
        {
            // 2 это есть UserControl2 и т.д по коду
           SettingsUC(2, IndexUC, memLocation, memSize);
        }

         private void bntChangeScreen2_Click(object sender, EventArgs e)
        {
             SettingsUC(3, IndexUC, memLocation, memSize);
        }
 private void btnMainScreen_Click(object sender, EventArgs e)
        {
            SettingsUC(1, IndexUC, memLocation, memSize);
        }
private void SettingsUC(int _IndexUC, int _HideUC, Point _memLocation, Size _memSize)
        {
            //скрываем все видимые UserControl
            foreach (Control ctrl in Controls)
            {
                if (ctrl is UserControl)
                {
                    ctrl.Hide();
                }
            }
            //какой UserControl открыт
            IndexUC = _IndexUC;
            //координаты UserControl
            UC[_IndexUC].Location = _memLocation;
            //размер UserControl
            UC[_IndexUC].Size = _memSize;
            //показать UserControl
            UC[_IndexUC].Show();
        }
Вроде всё.

Спасибо большое мне это очень помогло!
я правда уже тоже переделал на свой лад, но это сколько программистов столько и вариантов решения) я сделал ближе к второму варианту но избавился от всех размеров, просто поместил еще одну панель на место UserControl присвоил ему panel2.dock = DockStyle.Full; и UC[1].dock = DockStyle.Full; panel2.Controls.Add(UC[1]); //больше вычислять и передавать размеры не нужно)

327
05 июля 2013 года
UserNet2008
748 / / 03.04.2010
Цитата:
я правда уже тоже переделал на свой лад, но это сколько программистов столько и вариантов решения)


Я вообще больше хотел сказать об UserControl , что-бы было понять о концепции UserControl, а если Вы решили изучать .NET то F# это сила or C++ там без дураков , а VB or С# это так себе, я даже лучше выбрал-бы VB, теже яйца только в профиль.

Цитата:
отличным вариантом было бы объявлять UserControl не при инициализации формы а по событию....


вот на скорую руку:

Код:
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 cshKV
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        UserControl[] UC = new UserControl[104];
        int memIndexUC;

        private void Form1_Load(object sender, EventArgs e)
        {
            UC[0] = new MainUC() ; panel3.Controls.Add(UC[0]);
            UC[0].Dock = DockStyle.Fill;
        }

        private void SubMnuExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void bntChangeScreen1_Click(object sender, EventArgs e)
        {
            panel3.Controls.Remove(UC[memIndexUC]);
            UC[1] = new UserControl1(); panel3.Controls.Add(UC[1]);
            UC[1].Dock = DockStyle.Fill;
            memIndexUC = 1;
        }

        private void bntChangeScreen2_Click(object sender, EventArgs e)
        {
            panel3.Controls.Remove(UC[memIndexUC]);
            UC[2] = new UserControl2(); panel3.Controls.Add(UC[2]);
            UC[2].Dock = DockStyle.Fill;
            memIndexUC = 2;
        }
    }
}
85K
08 июля 2013 года
KrutVladimir
21 / / 24.06.2013
Благодаря UserNet2008 я немного по разбирался и переделал по своему:

Код:
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 cshKrutVladimir
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            CreateUserControl(new UserControl1());
        }

        UserControl myUserControl;

        private void uc1_Click(object sender, EventArgs e)
        {
            CreateUserControl(new UserControl1());
        }

        private void uc2_Click(object sender, EventArgs e)
        {
            CreateUserControl(new UserControl2());
        }

        private void CreateUserControl(UserControl UC)
        {
            panel2.Controls.Clear();
            myUserControl = UC;
            myUserControl.Dock = DockStyle.Fill;
            panel2.Controls.Add(myUserControl);
        }
    }
}
покритикуйте пожалуйста...
327
08 июля 2013 года
UserNet2008
748 / / 03.04.2010
UserControl добавляется в проект так:

Теперь в проекте видим так и работаем как с формой:


Выше напечатанный мной код рабочий , но можно и так:
 
Код:
private void bntChangeScreen1_Click(object sender, EventArgs e)
        {
            panel3.Controls.Remove(UC[memIndexUC]);
            memIndexUC = 1;
            UC[memIndexUC] = new UserControl1(); panel3.Controls.Add(UC[memIndexUC]);
            UC[memIndexUC].Dock = DockStyle.Fill;
        }
Я не очень хочу впрягаться в ваш проект.
Цитата:
я правда уже тоже переделал на свой лад, но это сколько программистов столько и вариантов решения)

85K
09 июля 2013 года
KrutVladimir
21 / / 24.06.2013
Цитата: UserNet2008
UserControl добавляется в проект так:
...
Теперь в проекте видим так и работаем как с формой:
...
Выше напечатанный мной код рабочий , но можно и так:
 
Код:
private void bntChangeScreen1_Click(object sender, EventArgs e)
        {
            panel3.Controls.Remove(UC[memIndexUC]);
            memIndexUC = 1;
            UC[memIndexUC] = new UserControl1(); panel3.Controls.Add(UC[memIndexUC]);
            UC[memIndexUC].Dock = DockStyle.Fill;
        }
Я не очень хочу впрягаться в ваш проект.
Цитата:
я правда уже тоже переделал на свой лад, но это сколько программистов столько и вариантов решения)



Умение читать чужой код это основное качество хорошего программиста! и поверьте я прекрасно понял ваш код, как для уровня студента он вполне пригодный но в рабочий проект он абсолютно не пригодный... это я сужу по своему горькому опыту! лет восемь назад я начал разработку одной конфигурации в 1С... когда я показал первую альфа версию руководству то они сразу заставили своих сотрудников работать в ней... я был в шоке так как там всего 10% было реализовано... ничего говорят они, в процессе допишешь! и я в мыле начал писать на скорую руку... главное реализовать функционал... о правиле хорошего тона в написание кода мне некогда было думать, ведь ко мне 20 сотрудников постоянно бегало... где то?! как это?! ...
В результате этот проект до сих пор успешно работает... пользователи довольны но внутри такая хрень, что мне стыдно за этот проект.... там только у основного документа в модуле формы с выше 10 тысяч строк кода... мусора вернее... если грамотно переписать то получится максимум 1.5 тыс строк кода.

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

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

327
13 июля 2013 года
UserNet2008
748 / / 03.04.2010
Цитата:
Умение читать чужой код это основное качество хорошего программиста! и поверьте я прекрасно понял ваш код, как для уровня студента он вполне пригодный но в рабочий проект он абсолютно не пригодный...


Во как громко напечатано !!!
Это пишет человек , который вчера ещё не знал , что есть UserControl

Цитата:
Исключительно из за уважения я не хотел указывать вам на ваши ошибки... я еще в самом начале воссоздал ваш код и во время тестирования нашел много уязвимых мест! поэтому попытался усовершенствовать его....


Мне теперь по барабану Ваше уважения я дам ответ за каждую строчку моего кода.

Вот строки кода Профессионала KrutVladimir

Код:
private void uc2_Click(object sender, EventArgs e)
        {
            CreateUserControl(new UserControl2());
        }

        private void CreateUserControl(UserControl UC)
        {
            panel2.Controls.Clear();
            myUserControl = UC;
            myUserControl.Dock = DockStyle.Fill;
            panel2.Controls.Add(myUserControl);
        }
Будем смотреть каждую строчку Профессионала KrutVladimir
Объявлена процедура CreateUserControl(тут есть детали - ладно опускаю на 50%/ok)
private void CreateUserControl(UserControl UC)
panel2.Controls.Clear():
Здесь покажу пример:
UserControl1 в конструкторе:

UserControl1: после panel2.Controls.Clear():
Профессионал KrutVladimir
Получает чистую Form

myUserControl = UC;
Опаньки Профессионал KrutVladimir даёт ЛЯП.Это при народе KrutVladimir кричал надо резать код.
Уважаемой проще надо к коду, надо так:
panel2.Controls.Add(UC);
далее по коду исправил Ляп Профессионала KrutVladimir :
panel2.Controls.Add(UC);
При каждом нажатии uc2_баттон
Создаётся новый UserControl
Теория моего 1-кода верна т.к иметься связь между интерфейсами.
P/S
Стучу по клаве более 36 лет и 7 месяцов и 12 дней
А Вам слабо или Вы думали та на дурака на рвались Профессионал KrutVladimir
Вот такие дела товарищ KrutVladimir
327
13 июля 2013 года
UserNet2008
748 / / 03.04.2010
Профессионал KrutVladimir
Ваш 1С как у БаоБаБа интернет.
Про 10.000 or 1500 Вы Лучше эти сказки оставте для внуков.
Мысли в вслух Типа 1С
85K
15 июля 2013 года
KrutVladimir
21 / / 24.06.2013
Вижу все таки задел ВАС... хотя старался максимально корректно писать сообщения! надеялся на ваш профессионализм... поверь, эмоции тут лишние!

Все правильно, я действительно в C# нулевой почти! но разрабатываю программы с 1998 года... дальше комментировать не буду! не интересно и неприятно!

дальше по коду:
- мой код! я действительно благодаря вашим подсказкам смог легко разобраться с UserControl и за это я вам очень благодарен!
Теперь ваша критика! к сожалению вы ничего не покритиковали по существу, вы указали на то, что я и хотел добиться!

- ваш код! все работает... я проверял. и даже тестировал на защиту от дураков (есть такое понятие, ну и у меня таких человек 30 было) если хотя бы у одной из переменной произойдет событие null или другое значение то panel3.Controls.Remove(UC[memIndexUC]); не сработает и UserControl будет висеть на форме до закрытия приложения, убрать не возможно, panel2.Controls.Clear() может удалить не нужные UserControl а так как требовалось чтобы активным должно быть только один UserControl то это очень даже подходит! Ну это рабочий момент, возможно повезет и сбоев не произойдет!... Дальше по правилам хорошего написания кода: задайте себе вопрос, зачем создавать 104 элемента массива если требовалось только один UserControl держать активным?! ну конечно можно предусмотреть открытие нескольких форм, но тогда нужно сразу предусматривать ярлычки для переключения между ними! в противном случае это просто трата памяти... И еще одно... это не ошибка но тоже желательно этого избегать! Очень много повторяющего кода! в будущем это может значительно затруднить читать код! Но это все детали которые меня не сильно волнуют! я просто хотел усовершенствовать ваш код! и как мне кажется у меня получилось... хотя это мое мнение... как вы выразились Профессионал который еще вчера не знал про UserControl
327
20 июля 2013 года
UserNet2008
748 / / 03.04.2010
Цитата:
эмоции тут лишние!


Зато я не побираюсь на форумах с протянутой рукой как нищий.
KrutVladimir он есть
Дмитрий Голуб
Slava241

Я печатал, что это есть МАКЕТ or вот на скорую руку:
Здесь и как на других форумах я на 90% печатаю код из головы.
Сделаю отступ не зная концепции программы я печатал код в своём понимании концепции
Ладно поясню на пальцах

Цитата:
одной из переменной произойдет событие null или другое значение то panel3.Controls.Remove(UC[memIndexUC]);


memIndexUC должен отслеживать сам программист самый простой способ и нужный это

 
Код:
Try
   [ tryStatements ]
[ Catch [ exception [ As type ] ] [ When expression ]
   [ catchStatements ] ]
[ Exit Try ]
...
[ Finally
   [ finallyStatements ] ]
End Try
источник

 
Код:
panel2.Controls.Clear()
Очень есть сомнения от этого действия(Чистить) screenshots выше(Получает чистую Form )
Сделайте так и увидите результат.
 
Код:
private void CreateUserControl(UserControl UC)
        {
            panel2.Controls.Clear();
            //myUserControl = UC;
            //myUserControl.Dock = DockStyle.Fill;
            //panel2.Controls.Add(myUserControl);
        }
Цитата:
зачем создавать 104 элемента массива


Ответ я печатал выше

Цитата:
Вы можете сами проверить в диспетчере задач. Дело в том , что UserControl не очень много берёт памяти если при UserControl4 ~5.2mb то при UserControl104 ~5.6mb это в exe file(в директории bin).


Повторяю не зная концепции программы, это Вам решать сколько UserControl подключать.

85K
22 июля 2013 года
KrutVladimir
21 / / 24.06.2013
Цитата: UserNet2008
 
Код:
panel2.Controls.Clear()
Очень есть сомнения от этого действия(Чистить) screenshots выше(Получает чистую Form )


немного поправлю... не Form очищается а только panel2 остальные элементы формы остаются не измены.

327
27 июля 2013 года
UserNet2008
748 / / 03.04.2010
Цитата: KrutVladimir
Цитата: UserNet2008
 
Код:
panel2.Controls.Clear()
Очень есть сомнения от этого действия(Чистить) screenshots выше(Получает чистую Form )


немного поправлю... не Form очищается а только panel2 остальные элементы формы остаются не измены.


Это теория

 
Код:
panel2.Controls.Clear()
Clear - это аналог DOS- cls
Я с Вами согласен по идеи должно очиститься только panel2 , но в help напечатано очищает все коллекции.
Вследствие я получаю чистую Form(согласно инструкции) код прошел тест на компе в реальной программе.
Ладно проехали.
Из нашей перепечатки для себя я узнал новый аналог перевода click - кнопать взял на заметку.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог