Как открыть форму по кнопке c
Перейти к содержимому

Как открыть форму по кнопке c

Что прописать на кнопку, чтобы открыть новую форму в С#, MS Visual Studio.

Что прописать на кнопку, чтобы открыть новую форму С#, MS Visual Studio.

На самом деле не смейтесь, но что-то переход с Delphy туго даётся.

6 ответов

Я бы на твоем месте не умничал бы — если ленив — то читай что тебе пишут. Туго тебе переход дается или нет — проблемы твои. Если лень запустить гугл и открыть пару ссылок — ну так кто тебе доктор. Понижение репутации зарабатываешь заслужено.

Не думай, что ты должны ответить. Ты никому ничего не должен; ты же, в конечном счете, не получишь платы за эти услуги. Ты можешь дать ответ, если, на твой взгляд, вопрос существенный, интересный и наводящий на размышления — вопрос, неявно дающий сообществу новый опыт, а не просто пассивно требующий от тебя поделиться знаниями.(с)sunday10

Ничего не напоминает, умник. Лично тебя никто ничего не просит, по-моему ты малешко зазнался. Не думай за других, у тебя за себя не очень получается. Точка.

Как открыть форму по кнопке c

БлогNot. Visual C++: из формы в форму

Visual C++: из формы в форму

Несмотря на то, что моё мнение о микрософтовском Visual Studio по-прежнему остаётся невысоким, иногда приходится что-то делать и на нём. Если смириться с тем, что пишем мы при этом, собственно, не на C++, а на так называемом C++/CLI, работа с привычными визуальными компонентами будет не так уж сильно отличаться от тех же Борландовских сред. А вот взаимодействие форм и модулей способно, по сравнению с Builder’ом, создать проблемы. Рассмотрим 3 типовых ситуации работы с приложением, содержащим больше одной формы. Среда примера — бесплатная Visual C++ 2010 Express, предполагается, что главная форма имеет имя по умолчанию Form1 .

Пример конструирования и программного вызова формы

Этот код можно выполнить, например, по нажатию кнопки в главной форме Form1.

Для добавления обработчика нажатия программно сгенерированной кнопки button2 достаточно перед последней строкой кода написать:

— до того, как будет вызван метод form2->ShowDialog() или form2->Show();

При этом код обработчика размещён в текущем модуле Form1.h :

Вызвать другую форму из главной формы

В меню выберем Проект — Добавить новый элемент — Форма — имя Form2

перед первым namespace в Form1.h (то есть, в самое начало файла).

Включим указатель на экземпляр класса в секцию public класса Form1 :

Добавим код там, где нужно создать и вызвать вторую форму:

Для программного удаления второй формы подойдёт код

Следует учесть, что указатель хранит адрес только одной формы, той, что создана последней. Если мы последовательно создали таким кодом несколько форм, удалена будет только последняя из них. Как вариант попробуйте массив форм, описанный ниже.

Опишем нужные данные в классе формы Form1 (здесь имя и namespace проекта Tabulator , если нужно, замените на своё):

Потом инициализируем данные по событию Load главной формы:

Затем реализуем код для создания очередной формы

Если мы хотим создавать дочерние формы не отдельно, а внутри родительской формы, то в свойствах Form1 нужно указать, что она «предок» (установить свойство IsMdiParent = true ), а перед показом дочерней формы оператором F2[FormCount-1]->Show() пометить её как потомка Form1:

Вызвать из дочерней формы метод родительской формы

Нам едва ли обойтись без привлечения файлов .cpp, что неплохо — писать код в файлах .h правильного Си’шника вообще ломает 🙂

Распишем процесс по шагам.

1) Имеются 2 формы — Form1 и Form2 , на Form1 располагаются Button ( button1 , будет открывать вторую форму) и Label ( label1 , здесь будем менять текст). На Form2 — button1 , по нажатию на которую будет происходить смена текста в label1 .

2) Так как нам из первой формы нужно иметь доступ ко второй, а из второй к первой, то будет возникать проблема перекрестных ссылок (когда Form1.h ссылается на Form2.h , который, в свою очередь, опять ссылается на Form1.h ). Для того, чтобы этого избежать, код первой формы ( Form1 ), который будет иметь доступ ко второй форме ( Form2 ), мы вынесем из .h-файла в .cpp файл. Таким образом нужно создать файл Form1.cpp .

3) Объявить открытый метод Set в Form1.h для того, чтобы можно было изменить текст label1 (код можно написать в конце файла, после #pragma endregion ):

4) В файле Form2.h подключаем Form1.h (в начале):

и создаем конструктор, который будет принимать и сохранять ссылку на первую форму для дальнейшего использования: //ниже сразу ниже можно прописать ссылку: private: Form1^ parentForm;

5) По клику кнопки в Form2 будем вызывать метод Set родительской формы:

6) Осталось в первой форме сделать открытие второй формы. Для этого из Form1.h обработчик нажатия кнопки переносим в Form1.cpp , а в .h-файле оставляем только его объявление.

Код в файле Form1.cpp :

В Form1.h вставляем только строку:

На этом все. Можно скомпилировать и проверить проект, архив во вложении:

Наладить взаимодействие двух форм

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

Как в с#(внутри) ? Как в c# при нажатии на кнопку, открывалась новая форма?

во че у меня:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Безделушка
<
public partial class Form1 : Form
<
public Form1()
<
InitializeComponent();
>

private void button1_Click(object sender, EventArgs e)
<

че писать на private void button1_Click(object sender, EventArgs e)?

public partial class Form1 : Form
<
public Form1()
<
InitializeComponent();
>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *