Не блокирующий windows form

Содержание
  1. Руководство. Блокировка элементов управления в Windows Forms How to: Lock controls to Windows Forms
  2. Блокировка элемента управления To lock a control
  3. Блокировка всех элементов управления в форме To lock all the controls on a form
  4. Разблокирование всех заблокированных элементов управления в форме To unlock all locked controls on a form
  5. Разблокирование заблокированных элементов управления по отдельности To unlock locked controls individually
  6. Пошаговое руководство. Отладка формы Windows Form Walkthrough: Debugging a Windows Form
  7. Чтобы подготовиться к выполнению данного пошагового руководства To prepare for this walkthrough
  8. Создание новой формы Windows Forms. Create a New Windows Form
  9. Чтобы создать форму Windows Forms для данного примера To create the Windows form for this walkthrough
  10. Отладка формы Debug Your Form
  11. Чтобы выполнить отладку формы Windows Forms, созданной для данного примера To debug the Windows Form created for this walkthrough
  12. Присоединение к приложению Windows Form для отладки Attach to Your Windows Form Application for Debugging
  13. Присоединение к приложению Windows Form для отладки To attach to the Windows Form Application for debugging
  14. Ответы на 7 самых частых вопросов по WinForms

Руководство. Блокировка элементов управления в Windows Forms How to: Lock controls to Windows Forms

При проектировании пользовательского интерфейса приложения Windows можно заблокировать элементы управления после их правильного позиционирования, чтобы случайно не перемещать их или изменять их размер при настройке других свойств. When you design the user interface (UI) of your Windows application, you can lock the controls once they are positioned correctly, so that you do not inadvertently move or resize them when setting other properties.

Кроме того, можно одновременно заблокировать и разблокировать все элементы управления в форме, что полезно для форм с множеством элементов управления или разблокирование отдельных элементов управления. Additionally, you can lock and unlock all the controls on the form at once, which is helpful for forms with many controls, or you can unlock individual controls. После размещения всех элементов управления в форме следует заблокировать их все на месте, чтобы предотвратить ошибочное перемещение. Once you have placed all the controls where you want them on the form, lock them all in place to prevent erroneous movement.

Блокировка элемента управления To lock a control

В окне Свойства в Visual Studio выберите свойство заблокировано и выберите значение true. In the Properties window of Visual Studio, select the Locked property and then select true. (Двойной щелчок по имени переключает параметр свойства.) (Double-clicking the name toggles the property setting.)

Также можно щелкнуть элемент управления правой кнопкой мыши и выбрать пункт Блокировать элементы управления. Alternatively, right-click the control and choose Lock Controls.

Блокировка элементов управления предотвращает их перетаскивание на новый размер или расположение в области конструктора. Locking controls prevents them from being dragged to a new size or location on the design surface. Однако размер или расположение элементов управления по-прежнему можно изменить с помощью окна « Свойства » или в коде. However, you can still change the size or location of controls by means of the Properties window or in code.

Блокировка всех элементов управления в форме To lock all the controls on a form

В меню Формат выберите пункт Блокировать элементы управления. From the Format menu, choose Lock Controls.

Эта команда также блокирует размер формы, поскольку форма является элементом управления. This command locks the form’s size as well, because a form is a control.

Разблокирование всех заблокированных элементов управления в форме To unlock all locked controls on a form

В меню Формат выберите пункт Блокировать элементы управления. From the Format menu, choose Lock Controls.

Все ранее заблокированные элементы управления в форме теперь разблокированы. All previously locked controls on the form are now unlocked.

Разблокирование заблокированных элементов управления по отдельности To unlock locked controls individually

В окне Свойства выберите свойство заблокировано и нажмите кнопку false. In the Properties window, select the Locked property and then select false. (Двойной щелчок по имени переключает параметр свойства.) (Double-clicking the name toggles the property setting.)

Пошаговое руководство. Отладка формы Windows Form Walkthrough: Debugging a Windows Form

Форма Windows Forms — один из наиболее распространенных вариантов управляемых приложений. A Windows Form is one of the most common managed applications. На основе формы Windows Forms создается стандартное приложение Windows. A Windows Form creates a standard Windows application. Можно реализовать данный примере на Visual Basic, C# или C++. You can complete this walkthrough using Visual Basic, C#, or C++.

Читайте также:  Как остановить mysql сервер windows

Для начала необходимо закрыть и открыть решения. First, you must close any open solutions.

Чтобы подготовиться к выполнению данного пошагового руководства To prepare for this walkthrough

  • Если какое–либо решение уже открыто, закройте его. If you already have an open solution open, close it. (В меню Файл выберите команду Закрыть решение.) (On the File menu, select Close Solution.)

Создание новой формы Windows Forms. Create a New Windows Form

Далее нам предстоит создать новую форму Windows Forms. Next, you will create a new Windows Form.

Чтобы создать форму Windows Forms для данного примера To create the Windows form for this walkthrough

В меню Файл последовательно выберите пункты Создать и Проект. On the File menu, choose New and click Project.

Откроется диалоговое окно Новый проект . The New Project dialog box appears.

В области «Типы проектов» разверните узел Visual Basic, Visual C# или Visual C++ , затем In the Project Types pane, open the Visual Basic, Visual C#, or Visual C++ node, then

для Visual Basic или Visual C# выберите Классическое приложение Windows > Приложение Windows Form. For Visual Basic or Visual C#, select Windows Desktop > Windows Form App.

Для Visual C++ выберите Классическое приложение Windows. For Visual C++, select Windows Desktop Application.

В поле Имя задайте уникальное имя проекта (например, Walkthrough_SimpleDebug). In the Name box, give the project a unique name (for example, Walkthrough_SimpleDebug).

Нажмите кнопку ОК. Click OK.

Visual Studio создаст новый проект и откроет новую форму в конструкторе Windows Forms. Visual Studio creates a new project and displays a new form in the Windows Forms designer. Дополнительные сведения см. в разделе Конструктор Windows Forms. For more information, see Windows Forms Designer.

В меню Вид выберите пункт Панель элементов. On the View menu, select Toolbox.

Откроется Панель элементов. The Toolbox opens. См. дополнительные сведения о панели элементов. For more information, see Toolbox.

В панели элементов щелкните элемент управления Кнопка и перетащите его на поверхность разработки формы. In the Toolbox, click on the Button control and drag the control to the Form design surface. Опустите кнопку на форму. Drop the button on the form.

В панели элементов щелкните элемент управления Текстовое поле и перетащите его на поверхность разработки формы. In the Toolbox, click on the TextBox control and drag the control to the Form design surface. Бросьте Текстовое поле в форму. Drop the TextBox on the form.

На поверхности разработки формы дважды щелкните кнопку. On the form design surface, double-click the button.

Появится страница кода. This takes you to the code page. Курсор должен находиться в тексте button1_Click The cursor should be in button1_Click .

В функции button1_Click добавьте следующий код: In the function button1_Click ., add the following code:

В меню Сборка выберите команду Собрать решение. On the Build menu, select Build Solution.

Проект должен быть построен без ошибок. The project should build with no errors.

Отладка формы Debug Your Form

Теперь все готово для того, чтобы начать отладку. Now, you are ready to begin debugging.

Чтобы выполнить отладку формы Windows Forms, созданной для данного примера To debug the Windows Form created for this walkthrough

В окне исходного кода щелкните левое поле на той же строке, в которую добавляется текст: In the source window, click the left margin on the same line as the text you added:

Появится красная точка, и текст строки будет выделен красным цветом. A red dot appears and the text on the line is highlighted in red. Красная точка представляет точку останова. The red dot represents a breakpoint. Дополнительные сведения см. в разделе Точки останова. For more information, see Breakpoints. Если приложение запускается из отладчика, выполнение этого приложения будет приостановлено отладчиком на строке с помеченным кодом. When you run the application under the debugger, the debugger will break execution at that location when the code is hit. После этого можно просмотреть состояние приложения и произвести его отладку. You can then view the state of your application and debug it.

Можно также щелкнуть правкой кнопкой мыши любую строку кода, выбрать пункт Точка останова, затем щелкнуть Вставить точку останова, чтобы добавить точку останова в эту строку. You can also right-click any line of code, point to Breakpoint, and then click Insert Breakpoint to add a breakpoint on that line.

В меню Отладка выберите команду Пуск. ON the Debug menu, choose Start.

Читайте также:  Недостаточно свободного места linux

Запустится форма Windows Forms. The Windows Form starts running.

В форме Windows Forms щелкните добавленную кнопку. On the Windows Form, click the button you added.

После этого в Visual Studio приложение остановится на той строке, где была задана точка останова на странице кода. In Visual Studio, this takes you to the line where you set your breakpoint on the code page. Эта строка будет выделена желтым цветом. This line should be highlighted in yellow. Теперь можно просматривать переменные в приложении и управлять его выполнением. You can now view the variables in your application and control its execution. В этот момент приложение остановит свое выполнение и будет ожидать действий со стороны пользователя. Your application has now stopped executing, waiting for an action from you.

В меню Отладка выберите пункт Окна, затем Контрольные значения и потом Контрольные значения 1. On the Debug menu, choose Windows, then Watch, and click Watch1.

В окне Контрольные значения 1 щелкните пустую строку. In the Watch1 window, click on a blank row. В столбце Имя введите textBox1.Text (если используется Visual Basic или Visual C#) или textBox1->Text (если используется C++), затем нажмите клавишу ВВОД. In the Name column, type textBox1.Text (if you are using Visual Basic or Visual C#) or textBox1->Text (if you are using C++), then press ENTER.

Окно Контрольные значения 1 отобразит значение этой переменной в двойных кавычках, как показано ниже: The Watch1 window shows the value of this variable in quotation marks as:

В меню Отладка выберите команду Выполнять по шагам. On the Debug menu, choose Step Into.

Значение textBox1.Text в окне Контрольные значения 1 изменится на следующее: The value of textBox1.Text changes in the Watch1 window to:

Button was clicked!

В меню Отладка выберите команду Продолжить для возобновления отладки программы. On the Debug menu, choose Continue to resume debugging your program.

В форме Windows Forms снова нажмите кнопку. On the Windows Form, click the button again.

Visual Studio снова приостановит выполнение программы. Visual Studio breaks execution again.

Щелкните красную точка, представляющую точка останова. Click on the red dot that represents the breakpoint.

Это действие удалит точка останова из кода программы. This removes the breakpoint from your code.

В меню Отладка выберите Остановить отладку. On the Debug menu, choose Stop Debugging.

Присоединение к приложению Windows Form для отладки Attach to Your Windows Form Application for Debugging

В Visual Studio Visual Studio можно присоединить отладчик к выполняющемуся процессу. In Visual Studio Visual Studio , you can attach the debugger to a running process. Если используется экспресс-выпуск, эта функция не поддерживается. If you are using an Express Edition, this feature is not supported.

Присоединение к приложению Windows Form для отладки To attach to the Windows Form Application for debugging

В созданном ранее проекте щелкните левое поле, чтобы еще раз установить точка останова на добавленной строке: In the project you created above, click in the left margin to once again set a breakpoint at the line you added:

В меню Отладка выберите команду Запуск без отладки. On the Debug menu, select Start Without Debugging.

Форма Windows Forms запустится из Windows, как и при двойном щелчке исполняемого файла. The Windows Form starts running under Windows, just as if you had double-clicked its executable. Отладчик не будет присоединен. The debugger is not attached.

В меню Отладка выберите команду Присоединиться к процессу. On the Debug menu, select Attach to Process. (Эта команда также доступна из меню Средства.) (This command is also available on the Tools menu.)

Откроется диалоговое окно Присоединение к процессу . The Attach to Process dialog box appears.

В области Доступные процессы найдите в столбце Процесс имя процесса (Walkthrough_SimpleDebug.exe) и щелкните его. In the Available Processes pane, find the process name (Walkthrough_SimpleDebug.exe) in the Process column and click it.

Нажмите кнопку Присоединиться. Click the Attach button.

В форме Windows Forms нажмите единственную кнопку. In your Windows Form, click the one and only button.

Отладчик прервет выполнение формы Windows Forms на точке останова. The debugger breaks execution of the Windows Form at the breakpoint.

Ответы на 7 самых частых вопросов по WinForms

Ответы на 7 самых частых вопроса по WinForms

1. Как создать вторую форму
Любая форма представляет из себя класс, унаследованный от Form.
Экземпляр главной формы создается в файле Program.cs по умолчанию.

При этом ShowDialog() блокирует главную форму, т.е. управление вернется в нее, только по закрытию второй формы, а Show() просто отображает вторую форму, т.е. будут доступны обе формы.

Читайте также:  Сборки windows для android

2. Как передать данные из одной формы в другую
Часто возникает необходимость передать данные из одной формы в другую, я придумал 7 способов, у каждого свои недостатки и достоинства.
2.1 Изменение модификатора доступа (добавлено 24 июля 2017: лучше воздержаться от применения данного способа)
В Form2 Установить модификатор доступа для контрола/поля public
В любом месте Form1

+ Самый быстрый в реализации и удобный способ
— Противоречит всем основам ООП
— Возможна передача только из более поздней формы в более раннюю
— Форма f показывается только с использованием ShowDialog(), т.е. в первую форму управление вернется только по закрытию второй. Избежать этого можно, сохранив ссылку на вторую форму в поле первой формы

2.2 Использование открытого свойства/метода. Способ очень похож на первый
В классе Form2 определяем свойство (или метод)

+ Противоречит не всем основам ООП
— Минусы те же

2.3 Передача данных в конструктор Form2
Изменяем конструктор Form2

+ Простой в реализации способ
+ Не нарушает ООП
— Возможна передача только из более ранней формы в более позднюю

2.4 Передача ссылки в конструктор
Изменяем конструктор Form2

+ Доступ ко всем открытым полям/функциям первой формы
+ Передача данных возможна в обе стороны
— Нарушает ООП

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

+ Доступ ко всем открытым полям/функциям первой формы
+ Передача данных возможна в обе стороны
+ Не нарушает ООП

2.6 Используем отдельный класс
Создаем отдельный класс, лучше статический, в основном namespace, т.е. например в файле Program.cs

+ Самый удобный способ, когда данные активно используются несколькими формами.

2.7 Использование функций обратного вызова
2.7.1 Передача метода в конструктор
Создаем в основном namespace делегат

Непонятен пункт 2.5 из «Ответы на 7 самых частых вопросов по WinForms»
Вопрос по пункту 2.5 из «Ответы на 7 самых частых вопроса по WinForms». Вот код: // в форме 1.

Ответы на 7 самых частых вопросов по Windows Forms, C++/CLI Edition
Ответы на 7 самых частых вопросов по Windows Forms C++/CLI Edition Эта статья является.

Ответы на 7 самых частых вопросов по Windows Forms, C++/CLI Edition — свой способ передачи данных между формами
Способ с использованием макросов. Средней сложности в реализации и понимании, не знаю, нарушает ли.

Список Ваших вопросов Платону Щукину и его ответы
Данная тема будет предназначана для публикования Ваших вопросов и ответов с службой поддержки.

+ Наиболее гибкий способ передачи данных
— Сложен в реализации и понимании

3. Как получить доступ к контролу из другого потока
С элементами управления можно работать только из того потока в котором они были созданы. При обращении из другого потока будет сгенерировано исключение InvalidOperationException с текстом «Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on.» (Недопустимая операция в нескольких потоках: попытка доступа к элементу управления не из того потока, в котором он был создан.). Возможные решения:

3.1 Простой и неправильный способ
Отменяем проверку, из какого потока используется контрол

Для одного раза может и сработать, но делать так крайне не рекомендуется.

3.2 Использование методов Invoke/BeginInvoke
Эти методы выполняют указанные делегаты в том потоке, в котором контрол был создан.
Invoke вызывает делегат синхронно, BeginInvoke — асинхронно.
Чтобы определить, требуется ли Invoke используйте свойство InvokeRequired.
Например, объявляем делегат

Позволю себе дополнить вопрос по связи и передаче данных двух форм, формы и класса. Подобные темы возникают очень часто, но в данном FAQ нет главного примера — использование событий, которые, как я считаю, являются самым верным способом для передачи к-либо данных.
Итак, вот участки кода. Для лучшего понимания прикрепляю архив с проектом. Имеем:
1.Главная форма, с двумя датагридами и двумя кнопками.
2.Дополнительная форма с тремя текстовыми полями и одной кнопкой.
3.Отдельный класс.
Логика работы: по нажатию на кнопку получения данных из доп.формы, открывается окно второй формы. Заполняем текстовые поля, и по нажатию кнопки форма закрывается, а данные из полей оказываются в гриде 1. По нажатию кнопки получения данных из класса создается объект класса, в конструкторе класса формируется таблица, которая при вызове метода класса передает данные в осн. форму, где они отображаются в гриде 2.
Также уточню, что передачу таблиц я выбрал для наглядности, и передавать таким способом можно все что угодно, используя приведенный шаблон
PS.В моем коде специально не использовались анонимные делегаты и лямбда, для облегчения восприятия новичками.

Оцените статью