Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Построение C# .NET windows приложения с несколькими представлениями
Я переписываю старое приложение и использую его как хорошую возможность попробовать разработку C# и .NET (обычно я делаю много плагинов в C).
Приложение в основном представляет собой таймер сбора данных. Он имеет начальный вид с кнопкой для начала измерения. Во время измерения приложение имеет пять различных представлений в зависимости от того, какую информацию пользователь хочет видеть.
Как лучше всего переключаться между видами? От старта до бега? Между бегущими видами?
Помыслы:
- Используйте одну форму и скрывайте и показывайте элементы управления
- Используйте одну стартовую форму, а затем форму с TabControl
- Используйте шесть отдельных форм
Создание группы наложенных панелей - это кошмар времени разработки.
Я бы предложил использовать элемент управления tab с каждым "view" на отдельной вкладке, а затем выбрать правильную вкладку во время выполнения. Вы можете избежать отображения заголовков вкладок, поместив что-то вроде этого в событие загрузки формы:
tabControl1.Top = tabControl1.Top - tabControl1.ItemSize.Height;
tabControl1.Height = tabControl1.Height + tabControl1.ItemSize.Height;
tabControl1.Region = new Region(new RectangleF(tabPage1.Left, tabPage1.Top, tabPage1.Width, tabPage1.Height + tabControl1.ItemSize.Height));
Что я делаю, так это создаю панель, где ваши различные взгляды будут сидеть на главной форме. затем создайте пользовательские элементы управления для различных представлений.
Затем, когда я хочу переключиться между 'View', вы закрепляете его на панели основной формы.. код выглядит примерно так.
я предпочитаю это, потому что вы можете повторно использовать свои представления, например, если вы хотите открыть представление на вкладке, вы можете закрепить свои пользовательские элементы управления внутри страниц вкладок.. или даже унаследовать от новые, вместо объекта UserControl, чтобы сделать вещи немного более универсальный
public partial class MainForm : Form
{
public enum FormViews
{
A, B
}
private MyViewA viewA; //user control with view a on it
private MyViewB viewB; //user control with view b on it
private FormViews _formView;
public FormViews FormView
{
get
{
return _formView;
}
set
{
_formView = value;
OnFormViewChanged(_formView);
}
}
protected virtual void OnFormViewChanged(FormViews view)
{
//contentPanel is just a System.Windows.Forms.Panel docked to fill the form
switch (view)
{
case FormViews.A:
if (viewA != null) viewA = new MyViewA();
//extension method, you could use a static function.
this.contentPanel.DockControl(viewA);
break;
case FormViews.B:
if (viewB != null) viewB = new MyViewB();
this.contentPanel.DockControl(viewB);
break;
}
}
public MainForm()
{
InitializeComponent();
FormView = FormViews.A; //simply change views like this
}
}
public static class PanelExtensions
{
public static void DockControl(this Panel thisControl, Control controlToDock)
{
thisControl.Controls.Clear();
thisControl.Controls.Add(controlToDock);
controlToDock.Dock = DockStyle.Fill;
}
}
Табулированные формы обычно хороши... но только если вы хотите, чтобы пользователь мог видеть любой вид в любое время... и это звучит так, как будто вы не можете.
Отдельные формы определенно работают, но вам нужно убедиться, что переключатель seemless...if вы убедитесь, что новая форма появляется тот же самый точный размер и расположение старой формы, он будет выглядеть так же, как и при смене элементов управления.
Метод, который я часто использую, заключается в том, чтобы предварительно настроить все мои элементы управления на отдельных элементах управления "Panel", а затем показать и скрыть эти панели по мере необходимости. Элемент управления "Panel" в основном является контейнером управления... вы можете перемещать панель, и все элементы управления на ней перемещаются относительно. И если вы покажете или скроете панель, элементы управления на ней сделают то же самое. Они отлично подходят для подобных ситуаций.
Метод, который я часто использую, на самом деле заключается в том, чтобы
предварительно настроить все мои элементы управления на
отдельные элементы управления "Panel", а затем
показать и скрыть эти панели, как мне нужно
их.
Метод, который я часто использую, на самом деле заключается в том, чтобы предварительно настроить все мои элементы управления на отдельные элементы управления "Panel", а затем показать и скрыть эти панели, как мне нужно их.
Вместо того, чтобы сделать каждый вид панелью в одной форме, вы можете сделать каждый вид UserControl. Затем создайте единую форму и напишите код, чтобы создать и отобразить правильный UserControl в форме и переключиться с одного на другой. Это было бы легче поддерживать, потому что у вас будет отдельный класс для каждого представления вместо одного класса формы с 6 панелями, каждая из которых имеет свои собственные элементы управления-это кажется сложным и подверженным ошибкам.