Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
7 / 7 / 5
Регистрация: 25.03.2018
Сообщений: 377

Как открыть форму только в одном приложении

07.09.2019, 01:27. Показов 1317. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветсвую, собсна вопрос в заголовке.
Пример:
1) Запустили одну форму, потом другую, обе друг от друга не зависят(можно запускать отдельно)
2) При нажатии на Alt+Tab вторая форма будет исчезать, если мы будем переходить на раб. стол, вижак и любые другие окна.
3) При переходе же на первую форму, вторая будет видна.
ВАЖНО: эти две формы не зависят друг от друга.

(Я на данный момент имею приложения(кода этого приложения нет) и хочу добавить форму внутри приложения ).
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.09.2019, 01:27
Ответы с готовыми решениями:

Как открыть форму, имея только её название в переменной строкового типа?
Нужен код, который позволит открывать формы, имея только лишь их название в переменной строкового типа. Нужно для автоматизации программы....

Как с пом@щью дочерней формы открыть форму у родительскую форму?
Привет Всем! :) Вот я использую код KvartiraForm KvartiraForm = new KvartiraForm(); KvartiraForm.MdiParent =...

Как в консольном приложении показать форму?
Добрый вечер! Подскажите как в консольном приложении при запуске, показывать СНАЧАЛА форму а потом уже само приложение. Делал так: в...

1
2 / 1 / 1
Регистрация: 07.09.2019
Сообщений: 3
07.09.2019, 20:03
Лучший ответ Сообщение было отмечено cinekst_207 как решение

Решение

Вам тут придется разобраться с WinAPI ниже основное из того, что вам может пригодится.

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
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing;
 
namespace WinAPI
{
    static public class Формы
    {
        //Данные взяты с сайта www.pinvoke.net
 
        public struct WinAPIRectangle
        {
            public int Left;
            public int Top;
            public int Right;
            public int Bottom;
 
            public Rectangle ToRectangle()
            {
                return Rectangle.FromLTRB(Left, Top, Right, Bottom);
            }
        }
 
        [Flags]
        public enum DwmWindowAttribute : uint
        {
            DWMWA_NCRENDERING_ENABLED = 1,
            DWMWA_NCRENDERING_POLICY,
            DWMWA_TRANSITIONS_FORCEDISABLED,
            DWMWA_ALLOW_NCPAINT,
            DWMWA_CAPTION_BUTTON_BOUNDS,
            DWMWA_NONCLIENT_RTL_LAYOUT,
            DWMWA_FORCE_ICONIC_REPRESENTATION,
            DWMWA_FLIP3D_POLICY,
            DWMWA_EXTENDED_FRAME_BOUNDS,
            DWMWA_HAS_ICONIC_BITMAP,
            DWMWA_DISALLOW_PEEK,
            DWMWA_EXCLUDED_FROM_PEEK,
            DWMWA_CLOAK,
            DWMWA_CLOAKED,
            DWMWA_FREEZE_REPRESENTATION,
            DWMWA_LAST
        }
        [Flags]
        public enum SWP_Flags : uint
        {
            SWP_NOACTIVATE = 0x0010,
            SWP_ASYNCWINDOWPOS = 0x4000,
            SWP_DEFERERASE = 0x2000,
            SWP_DRAWFRAME = 0x0020,
            SWP_FRAMECHANGED = 0x0020,
            SWP_HIDEWINDOW = 0x0080,
            SWP_NOCOPYBITS = 0x0100,
            SWP_NOMOVE = 0x0002,
            SWP_NOOWNERZORDER = 0x0200,
            SWP_NOREDRAW = 0x0008,
            SWP_NOREPOSITION = 0x0200,
            SWP_NOSENDCHANGING = 0x0400,
            SWP_NOSIZE = 0x0001,
            SWP_NOZORDER = 0x0004,
            SWP_SHOWWINDOW =0x0040
        }
        [Flags]
        public enum HWND_Attribute : int
        {
            HWND_TOPMOST = -1,
            HWND_NOTOPMOST = -2,
            HWND_TOP = 0,
            HWND_BOTTOM = 1,
        }
 
        [DllImport("user32.dll")]
        static extern bool SetWindowPos(IntPtr hWnd, Int32 InsertAfter, Int32 X, Int32 Y, Int32 cx, Int32 cy, uint Flags);
        [DllImport("user32.dll")]
        public static extern bool GetWindowRect(IntPtr hwnd, out WinAPIRectangle lpRect);       
        [DllImport("dwmapi.dll")]
        static extern int DwmGetWindowAttribute(IntPtr hwnd, int dwAttribute, out WinAPIRectangle pvAttribute, int cbAttribute);
 
 
        static public void Отобразить_без_активации(Form Форма)
        {
            SetWindowPos(Форма.Handle, (int)HWND_Attribute.HWND_TOP, Форма.Left, Форма.Top, Форма.Width, Форма.Height, (int)SWP_Flags.SWP_NOACTIVATE);
            
        }
        static public Rectangle Область_формы(Form Форма)
        {
            Rectangle Result = Rectangle.Empty;
            WinAPIRectangle WinAPIRectangle;
 
            if (Environment.OSVersion.Version.Major < 6)
            {
                GetWindowRect(Форма.Handle, out WinAPIRectangle);
            }
            else
            {
                DwmGetWindowAttribute(Форма.Handle, (int)DwmWindowAttribute.DWMWA_EXTENDED_FRAME_BOUNDS, out WinAPIRectangle, Marshal.SizeOf(typeof(WinAPIRectangle)));
            }
 
            Result = WinAPIRectangle.ToRectangle();
 
            return Result;
        }
        static public void Изменить_позицию_формы(Form Форма, Int32 X, Int32 Y)
        {
            if (Environment.OSVersion.Version.Major < 6)
            {
                Форма.Location = new Point(X, Y);
            }
            else
            {
                Rectangle Full_form_area = Rectangle.Empty;
                WinAPIRectangle Full_form_area_WinAPIRectangle;
                GetWindowRect(Форма.Handle, out Full_form_area_WinAPIRectangle);
                Full_form_area = Full_form_area_WinAPIRectangle.ToRectangle();
 
                Rectangle Form_area = Rectangle.Empty;
                WinAPIRectangle Form_area_WinAPIRectangle;
                DwmGetWindowAttribute(Форма.Handle, (int)DwmWindowAttribute.DWMWA_EXTENDED_FRAME_BOUNDS, out Form_area_WinAPIRectangle, Marshal.SizeOf(typeof(WinAPIRectangle)));
                Form_area = Form_area_WinAPIRectangle.ToRectangle();
 
                Int32 X_modificator = Form_area.X - Full_form_area.X;
                Int32 Y_modificator = Form_area.Y - Full_form_area.Y;
 
                Форма.Location = new Point(X - X_modificator, Y - Y_modificator);
            }
        }
        static public void Изменить_размер_формы(Form Форма, Int32 Width, Int32 Height)
        {
            if (Environment.OSVersion.Version.Major < 6)
            {
                Форма.Width = Width;
                Форма.Height = Height;
            }
            else
            {
                Rectangle Full_form_area = Rectangle.Empty;
                WinAPIRectangle Full_form_area_WinAPIRectangle;
                GetWindowRect(Форма.Handle, out Full_form_area_WinAPIRectangle);
                Full_form_area = Full_form_area_WinAPIRectangle.ToRectangle();
 
                Rectangle Form_area = Rectangle.Empty;
                WinAPIRectangle Form_area_WinAPIRectangle;
                DwmGetWindowAttribute(Форма.Handle, (int)DwmWindowAttribute.DWMWA_EXTENDED_FRAME_BOUNDS, out Form_area_WinAPIRectangle, Marshal.SizeOf(typeof(WinAPIRectangle)));
                Form_area = Form_area_WinAPIRectangle.ToRectangle();
 
                Int32 W_modificator = Full_form_area.Width - Form_area.Width;
                Int32 H_modificator = Full_form_area.Height - Form_area.Height;
 
                Форма.Width = Width + W_modificator;
                Форма.Height = Height + H_modificator;
            }
        }
        static public Rectangle Область_рабочего_стола
        {
            get
            {
                Rectangle Result = Screen.PrimaryScreen.WorkingArea;
                return Result;
            }
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.09.2019, 20:03
Помогаю со студенческими работами здесь

Как открыть файл в приложении для Windows Store
В общем, я начал изучать виндоус сторе приложения Возникло 2 вопроса: 1. Как собрать готовое приложение. На Виндоус Формс я нажимал...

Как открыть дочернюю форму через другую дочернюю форму?
Есть родительская MDI форма у которой несколько дочерних форм, как из одной открыть другую? Добавлено через 1 минуту Form4...

Как открыть форму?
Здравствуйте. Столкнулся с довольно странной проблемой. При создании проекта формы в Visual C# окна с формой нет. Но при запуске...

Как открыть форму из BackgroundWorker1_DoWork
Доброго времени суток, не получается открыть форму из потока. private void BackgroundWorker1_DoWork(object sender,...

Как открыть форму приложения
Здравствуйте друзья!скачал исходник на C# с английского сайта не могу разобраться хотел перевести приложение на русский не могу открыть...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru