Clr addreference system windows forms

Как в консольный проект подключить System.Windiws.Forms

System.Collections.IEnumerable; как его подключить?
int badhands ;//: System.Collections.IEnumerable; badhands =new int .

Как подключить System.Reactive вместе с mscore.dll?
Вообщем проблема такая, есть код: public IObservable .

Как подключить справку в формате pdf в проект
Нужно, чтобы по нажатии на кнопку вызывалась справка, а она в формате pdf Как это организовать?

Подключить DirectShow в Windows Forms Application (Visual Studio 2008)
Доброго время суток. Помогите подключить DirectShow в Windows Forms Application (Visual Studio.

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

Добавлено через 2 минуты
kirill29, а как сделать следующе на си шарп:

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

Добавлено через 2 минуты
kirill29, а как сделать следующе на си шарп:

1);
System.Windows.Forms.Application.Run(new Form1());

2)
System.Collections.Stack stack;
stack=new System.Collections.Stack()
//stack.Peek
//stack.Push
//stack.Pop
System.Console.Write(«10 konstruktorov»);

Спасибо, с этим разобрался. Но у меня есть еще вопросы:
есть ли в си шарпе вектора как в си++, или хотябы заменители..

Добавлено через 5 минут
как узнать длину строки? Допустим есть строка String s = «dfsdfsdf»; как узнать ее длину? и как обратиться к и-ому символу этой строки?

Добавлено через 1 минуту

мне больше понравился стек произвольных пипов))

Добавлено через 1 минуту
List<> — а где он должен быть (пространство имен)

Добавлено через 6 минут
как переписать этот клас, что-бы он работал?

Создай тот и другой на 1000000 элементов и сравни производительность.

Добавлено через 39 секунд

Error 1 The type or namespace name ‘List’ could not be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2008\Projects\Project1\Project1\CodeFile1.cs 14 13 Project1

Добавлено через 21 секунду
HIMen, где он должен быть? я его у себя не нашел..

Alligieri, а можно как-то создать лист с Н элементами, значение которых К ?? Не прогоняя лист в цыкле

Добавлено через 18 минут

Тематические курсы и обучение профессиям онлайн
Профессия‌ С#-разработчик‌ (Skillbox)
Архитектор ПО (Skillbox)
Профессия Тестировщик (Skillbox)

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Не удается подключить System.Threading.Tasks
Здравствуйте! Подскажите как подключить System.Threading.Tasks. Не удается объявить.

подключить Java class в проект C#
Доброго дня всем! Подскажите пожалуйста, каким образом подключить несколько классов Java (есть и.

Программное добавление элементов управления в Windows Forms во время выполнения с помощью Visual C#

Эта статья поможет программным способом добавлять и настраивать элементы управления в форме Windows Forms с помощью Visual C#.

Исходная версия продукта: Visual C #
Исходный номер статьи базы знаний: 319266

Сводка

В этой статье приведены пошаговые инструкции по добавлению и настройке нескольких часто используемых элементов управления в форме Windows Forms. В примере кода отсутствует обработка событий.

Пакет средств разработки программного обеспечения (SDK) Microsoft .NET Framework предоставляет множество визуальных элементов управления, которые можно использовать для создания приложения Windows Forms. Вы можете добавлять и настраивать элементы управления во время конструирования в Visual Studio .NET или в Visual Studio. Вы можете добавлять и настраивать элементы управления программным способом во время выполнения.

Читайте также:  Linux gentoo по русски

Требования

В этой статье предполагается, что вы знакомы со следующими разделами:

  • Синтаксис Visual C#
  • Среда Visual Studio .NET, среда Visual Studio
  • Назначение распространенных элементов управления Visual C#

Создание приложения Windows Forms

Запустите Visual Studio .NET или Visual Studio и создайте новый проект приложения Visual C# для Windows с именем винконтролс. По умолчанию форма Form1 добавляется в проект.

Дважды щелкните Form1, чтобы создать и просмотреть Form1_Load процедуру обработки события.

Добавьте в класс переменные частных экземпляров Form1 для работы с общими элементами управления Windows. Form1 Класс запускается следующим образом:

Код должен быть изменен в Visual Studio. Когда вы создаете проект Windows Forms, Visual C# добавляет по умолчанию одну форму в проект. Эта форма называется Form1. Два файла, представляющие форму, называются Form1.CS и Form1.Designer.CS. Вы пишете свой код в Form1.CS. Файл Designer.CS — это место, в котором конструктор Windows Forms записывает код, который реализует все действия, выполненные путем добавления элементов управления. Дополнительные сведения о конструкторе Windows Forms в Visual C# приведены в статье Создание проекта (Visual c#).

Настройка свойств формы и элемента управления

Нахождение Form1_Load процедуры обработки события и добавление в процедуру следующего кода для настройки внешнего вида элемента управления формы:

Добавьте следующий код в Form1_Load процедуру обработки события для настройки внешнего вида элемента управления «Кнопка»:

Добавьте следующий код для настройки внешнего вида элемента управления TextBox в Form1_Load :

Добавьте следующий код для настройки внешнего вида элемента управления ListBox в Form1_Load :

Добавьте следующий код, чтобы настроить внешний вид элемента управления CheckBox в Form1_Load :

Добавьте следующий код, чтобы настроить внешний вид элемента управления Label в Form1_Load :

Добавление элементов управления в форму

Добавьте следующий код, чтобы добавить каждый объект в Controls массив формы в конце Form1_Load :

Проверка работы

Чтобы убедиться, что пример работает, выберите команду начать в меню Отладка .

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

Ссылки

Дополнительные сведения об использовании элементов управления программным способом можно найти в разделе приложения Windows в разделе Visual C# справочной документации по Visual Studio .NET Online или в справочной документации по Visual Studio Online.

Пошаговое руководство. Осуществление потокобезопасных вызовов элементов управления Windows Forms How to: Make thread-safe calls to Windows Forms controls

Многопоточность может повысить производительность Windows Forms приложений, но доступ к элементам управления Windows Forms не является потокобезопасным. Multithreading can improve the performance of Windows Forms apps, but access to Windows Forms controls isn’t inherently thread-safe. Многопоточность может представлять код для очень серьезных и сложных ошибок. Multithreading can expose your code to very serious and complex bugs. Два или более потока, управляющих элементом управления, могут привести к нестабильному состоянию и вызвать условия гонки, взаимоблокировки, зависания или фиксации. Two or more threads manipulating a control can force the control into an inconsistent state and lead to race conditions, deadlocks, and freezes or hangs. При реализации многопоточности в приложении следует обязательно вызывать элементы управления между потоками потокобезопасным образом. If you implement multithreading in your app, be sure to call cross-thread controls in a thread-safe way. Дополнительные сведения см. в разделе рекомендации по управляемому потоку. For more information, see Managed threading best practices.

Читайте также:  Windows 10 20h2 настройка после установки

Существует два способа безопасного вызова элемента управления Windows Forms из потока, который не был создан этим элементом управления. There are two ways to safely call a Windows Forms control from a thread that didn’t create that control. Метод можно использовать System.Windows.Forms.Control.Invoke для вызова делегата, созданного в основном потоке, который, в свою очередь, вызывает элемент управления. You can use the System.Windows.Forms.Control.Invoke method to call a delegate created in the main thread, which in turn calls the control. Или можно реализовать System.ComponentModel.BackgroundWorker , который использует модель, управляемую событиями, для разделения работы, выполненной в фоновом потоке, от создания отчетов о результатах. Or, you can implement a System.ComponentModel.BackgroundWorker, which uses an event-driven model to separate work done in the background thread from reporting on the results.

Ненадежные вызовы между потоками Unsafe cross-thread calls

Вызвать элемент управления напрямую из потока, который не создал его, неважно. It’s unsafe to call a control directly from a thread that didn’t create it. В следующем фрагменте кода показан незащищенный вызов System.Windows.Forms.TextBox элемента управления. The following code snippet illustrates an unsafe call to the System.Windows.Forms.TextBox control. Button1_Click Обработчик событий создает новый WriteTextUnsafe поток, который устанавливает свойство основного потока TextBox.Text напрямую. The Button1_Click event handler creates a new WriteTextUnsafe thread, which sets the main thread’s TextBox.Text property directly.

Отладчик Visual Studio обнаруживает эти ненадежные вызовы потоков путем вызова исключения InvalidOperationException с сообщением, недопустимой операцией между потоками. Доступ к элементу управления «» осуществляется из потока, отличного от потока, в котором он был создан. The Visual Studio debugger detects these unsafe thread calls by raising an InvalidOperationException with the message, Cross-thread operation not valid. Control «» accessed from a thread other than the thread it was created on. InvalidOperationExceptionВсегда происходит для ненадежных межпотоковых вызовов во время отладки Visual Studio и может возникнуть во время выполнения приложения. The InvalidOperationException always occurs for unsafe cross-thread calls during Visual Studio debugging, and may occur at app runtime. Проблему следует устранить, но можно отключить исключение, задав Control.CheckForIllegalCrossThreadCalls для свойства значение false . You should fix the issue, but you can disable the exception by setting the Control.CheckForIllegalCrossThreadCalls property to false .

Надежные вызовы между потоками Safe cross-thread calls

В следующих примерах кода демонстрируются два способа безопасного вызова элемента управления Windows Forms из потока, который не создал его. The following code examples demonstrate two ways to safely call a Windows Forms control from a thread that didn’t create it:

  1. System.Windows.Forms.Control.InvokeМетод, который вызывает делегат из основного потока для вызова элемента управления. The System.Windows.Forms.Control.Invoke method, which calls a delegate from the main thread to call the control.
  2. System.ComponentModel.BackgroundWorkerКомпонент, который предоставляет модель, управляемую событиями. A System.ComponentModel.BackgroundWorker component, which offers an event-driven model.

В обоих примерах фоновый поток заждет одну секунду для имитации работы, выполняемой в этом потоке. In both examples, the background thread sleeps for one second to simulate work being done in that thread.

Вы можете собрать и запустить эти примеры как .NET Framework приложения из командной строки C# или Visual Basic. You can build and run these examples as .NET Framework apps from the C# or Visual Basic command line. Дополнительные сведения см. в разделе Построение из командной строки с помощью csc.exe или Сборка из командной строки (Visual Basic). For more information, see Command-line building with csc.exe or Build from the command line (Visual Basic).

Читайте также:  Fluid mask mac os

Начиная с .NET Core 3,0, можно также создавать и запускать примеры как приложения Windows .NET Core из папки с файлом проекта .NET Core Windows Forms . csproj . Starting with .NET Core 3.0, you can also build and run the examples as Windows .NET Core apps from a folder that has a .NET Core Windows Forms .csproj project file.

Пример. использование метода Invoke с делегатом Example: Use the Invoke method with a delegate

В следующем примере показан шаблон для обеспечения потокобезопасных вызовов элемента управления Windows Forms. The following example demonstrates a pattern for ensuring thread-safe calls to a Windows Forms control. Он запрашивает System.Windows.Forms.Control.InvokeRequired свойство, которое СРАВНИВАЕТ идентификатор потока создаваемого элемента управления с идентификатором вызывающего потока. It queries the System.Windows.Forms.Control.InvokeRequired property, which compares the control’s creating thread ID to the calling thread ID. Если идентификаторы потоков совпадают, он вызывает элемент управления напрямую. If the thread IDs are the same, it calls the control directly. Если идентификаторы потоков отличаются, он вызывает Control.Invoke метод с делегатом из основного потока, который выполняет фактический вызов элемента управления. If the thread IDs are different, it calls the Control.Invoke method with a delegate from the main thread, which makes the actual call to the control.

SafeCallDelegate Позволяет задать TextBox свойство элемента управления Text . The SafeCallDelegate enables setting the TextBox control’s Text property. WriteTextSafe Метод запрашивает InvokeRequired . The WriteTextSafe method queries InvokeRequired. Если InvokeRequired возвращает true , WriteTextSafe передает в SafeCallDelegate метод, Invoke чтобы выполнить фактический вызов элемента управления. If InvokeRequired returns true , WriteTextSafe passes the SafeCallDelegate to the Invoke method to make the actual call to the control. Если InvokeRequired возвращает false , WriteTextSafe задает TextBox.Text непосредственно. If InvokeRequired returns false , WriteTextSafe sets the TextBox.Text directly. Button1_Click Обработчик событий создает новый поток и выполняет WriteTextSafe метод. The Button1_Click event handler creates the new thread and runs the WriteTextSafe method.

Пример. использование обработчика событий BackgroundWorker Example: Use a BackgroundWorker event handler

Простой способ реализации многопоточности заключается в использовании System.ComponentModel.BackgroundWorker компонента, использующего модель, управляемую событиями. An easy way to implement multithreading is with the System.ComponentModel.BackgroundWorker component, which uses an event-driven model. Фоновый поток запускает BackgroundWorker.DoWork событие, которое не взаимодействует с основным потоком. The background thread runs the BackgroundWorker.DoWork event, which doesn’t interact with the main thread. Главный поток запускает BackgroundWorker.ProgressChanged BackgroundWorker.RunWorkerCompleted обработчики событий и, которые могут вызывать элементы управления основного потока. The main thread runs the BackgroundWorker.ProgressChanged and BackgroundWorker.RunWorkerCompleted event handlers, which can call the main thread’s controls.

Чтобы сделать потокобезопасный вызов с помощью BackgroundWorker , создайте метод в фоновом потоке, чтобы выполнить работу, и привяжите его к DoWork событию. To make a thread-safe call by using BackgroundWorker, create a method in the background thread to do the work, and bind it to the DoWork event. Создайте другой метод в основном потоке, чтобы сообщить результаты фоновой работы и привязать его к ProgressChanged RunWorkerCompleted событию или. Create another method in the main thread to report the results of the background work, and bind it to the ProgressChanged or RunWorkerCompleted event. Чтобы запустить фоновый поток, вызовите BackgroundWorker.RunWorkerAsync . To start the background thread, call BackgroundWorker.RunWorkerAsync.

В примере с помощью RunWorkerCompleted обработчика событий задается TextBox свойство элемента управления Text . The example uses the RunWorkerCompleted event handler to set the TextBox control’s Text property. Пример использования ProgressChanged события см. в разделе BackgroundWorker . For an example using the ProgressChanged event, see BackgroundWorker.

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