телевизори. Конзоли. Проектори и аксесоари. Технологии. Цифрова телевизия

Установяване на връзка между формите. Установете връзка между формулярите Създайте формуляр за единичен артикул или детайл

Последна актуализация: 31.10.2015 г

За да добавите друг формуляр към проекта, щракнете с десния бутон върху името на проекта в прозореца на Solution Explorer и изберете Add->Windows Form...

Нека дадем име на новата форма, например, Form2.cs:

И така, добавихме втора форма към нашия проект. Сега нека се опитаме да реализираме взаимодействие между две форми. Да кажем, че първата форма ще извика втората форма, когато се щракне върху бутона. Първо, нека добавим бутон към първия формуляр, Form1, и щракнете двукратно върху бутона, за да отидете до файла с код. И така, ще бъдем отведени до манипулатора на събития за щракване на бутона, който се създава по подразбиране след двойно щракване върху бутона:

Private void button1_Click(изпращач на обект, EventArgs e) ( )

Сега нека добавим кода за извикване на втората форма към него. Нашата втора форма се нарича Form2, така че първо създаваме обект от този клас и след това, за да го покажем на екрана, извикваме метода Show:

Private void button1_Click(object sender, EventArgs e) ( Form2 newForm = new Form2(); newForm.Show(); )

Сега нека направим обратното - така че втората форма да повлияе на първата. Докато втората форма не знае за съществуването на първата. За да коригирате това, трябва по някакъв начин да прехвърлите информация за първия формуляр към втория формуляр. За целта ще използваме предаване на връзка към формата в конструктора.

Така че нека да преминем към втория формуляр и да отидем на неговия код - щракнете с десния бутон върху формуляра и изберете Преглед на кода. Засега е празен и съдържа само конструктор. Тъй като C# поддържа претоварване на методи, можем да създадем няколко метода и конструктори с различни параметри и да извикаме един от тях в зависимост от ситуацията. И така, нека променим кодовия файл на втората форма на следното:

Използване на системата; използване на System.Collections.Generic; използване на System.ComponentModel; използване на System.Data; използване на System.Drawing; използване на System.Linq; използване на System.Text; използване на System.Threading.Tasks; използване на System.Windows.Forms; пространство от имена HelloApp ( публичен частичен клас Form2: Form ( публичен Form2() ( InitializeComponent(); ) публичен Form2(Form1 f) ( InitializeComponent(); f.BackColor = Color.Yellow; ) ) )

Всъщност ние току-що добавихме нов конструктор тук, public Form2(Form1 f) , в който получаваме първата форма и задаваме нейния фон на жълто. Сега нека преминем към кода на първата форма, където извикахме втората форма и я променихме на следното:

Private void button1_Click(object sender, EventArgs e) ( Form2 newForm = new Form2(this); newForm.Show(); )

Тъй като в случая ключовата дума this представлява препратка към текущия обект - обекта Form1, то при създаването на втората форма тя ще я получи (връзката) и ще контролира първата форма чрез нея.

Сега, след натискане на бутона, ще бъде създадена втора форма, която веднага ще промени цвета на първата форма.

Можем също да създаваме обекти от текущата форма:

Private void button1_Click(object sender, EventArgs e) ( Form1 newForm1 = new Form1(); newForm1.Show(); Form2 newForm2 = new Form2(newForm1); newForm2.Show(); )

Когато работите с няколко форми, трябва да имате предвид, че една от тях е основната - която се стартира първа във файла Program.cs. Ако имаме отворени няколко форми едновременно, тогава, когато затворим основната, цялото приложение се затваря и заедно с него всички останали форми.

Ако имате дълъг формуляр за няколко елемента, понякога може да искате бързо да разгледате данните, за да видите повече информация за един от елементите. В Access това изисква установяване на връзка между формуляра за няколко елемента и формуляра за отделен елемент. Когато изберете елемент във формуляр с множество артикули, формулярът за индивидуален артикул се отваря и показва допълнителна информация.

Бележки:

Създаване на формуляри

В повечето случаи два формуляра в подробна конфигурация се базират на една и съща таблица или заявка. Ако вече имате няколко формуляра за използване (единият от които е таблица или формуляр с множество елементи, а другият формуляр с един елемент или детайл), можете да пропуснете този раздел. В противен случай използвайте следните процедури, за да ги създадете.

Създайте формуляр за таблица или формуляр с множество елементи

    В навигационния екран изберете таблицата или заявката, която съдържа данните, които искате да покажете в таблична форма.

    Изберете елементи Създаване > Други форми, и тогава - Множество елементиили Таблицав зависимост от вида на необходимата форма.

    Запазете и затворете формата.

За повече информация относно формуляри с множество елементи вижте Създаване на формуляр с помощта на инструмента за множество елементи.

Създайте формуляр за единичен артикул или детайл

    В навигационния екран щракнете върху таблицата или заявката, която съдържа данните, които искате да покажете във формуляра с подробности. Най-вероятно това ще бъде същата таблица или същата заявка, която сте използвали за първия формуляр.

    Изберете елементи Създаване > форма.

    Направете необходимите промени, запазете и затворете формата.

За повече информация вижте Създаване на формуляр с помощта на инструмента за формуляр.

Добавяне на логика за отваряне на формуляра с подробности

Сега нека да разгледаме как да добавим малък макрос към формуляр с множество елементи или таблица, който ще отвори формуляра с подробности и ще покаже правилния елемент.

Не се притеснявайте, ако нямате много опит с макроси. Можете просто да копирате и поставите XML кода от процедурата, предоставена в тази статия.

    Ако използвате табличен формуляр, щракнете двукратно върху него в навигационния панел, за да го отворите. За формуляр с множество елементи щракнете с десния бутон върху него в навигационния панел и изберете Режим на оформление.

    Натиснете F4, за да отворите прозореца със свойства, ако вече не е отворен.

    Щракнете върху колоната, в която искате да добавите макроса. Това трябва да е колона, която при щракване ще отвори формуляра с подробности след изпълнение на макроса. На снимката по-горе макросът е добавен към колоната frmContactList.

съвет:(СЪВЕТ) Можете да добавяте макроси към множество колони.

За повече информация относно макросите в компютърните бази данни вижте


Ясно е, че ако създадете указател на тип<что там>::Формулярът ще работи, но ми трябва вече създаден формуляр, с бутони и т.н. (като цяло с различни контроли), но не искам да ги пиша ръчно (т.е. програмно) в чист вид (има много писане и не е факт, че ще го получите както трябва). Това, което все още ме обърква е това...... Когато добавих формуляра към вече създадения проект, в новия заглавен файл Form2.h беше записано така:

#прагма веднъж
#include "Form1.h"

използване на пространство от имена System;



използване на пространство от имена System::Data;

пространство от имена My1 (

///
/// Резюме за Form2



публичен реф клас Form2: публичен System::Windows::Forms::Form
{
публичен:
Form2 (недействителен)
{
InitializeComponent();

}

Защитено:

~Form2()
{
ако (компоненти)
{
изтриване на компоненти;
}
}

Частно:



///
{
това->компоненти = gcnew System::ComponentModel::Container();
това->Размер = System::Drawing::Size(300,300);
това->Текст = L"Form2";
this->Padding = System::Windows::Forms::Padding(0);
това->
}
#pragmaendregion
};
}

въпреки че във Form1.h е написано така:

#прагма веднъж
#include "Form2.h"

пространство от имена My1 (

Използване на namespace System;
използване на пространство от имена System::ComponentModel;
използване на пространство от имена System::Collections;
използване на пространство от имена System::Windows::Forms;
използване на пространство от имена System::Data;
използване на пространство от имена System::Drawing;

///
/// Резюме за Form1
/// ПРЕДУПРЕЖДЕНИЕ: Ако промените името на този клас, ще трябва да промените
/// Свойство „Име на файл с ресурси“ за инструмента за компилиране на управлявани ресурси
/// свързани с всички .resx файлове, от които зависи този клас. В противен случай,
/// дизайнерите няма да могат да взаимодействат правилно с локализираните
/// ресурси, свързани с този формуляр.
public ref class Form1: public System::Windows::Forms::Form
{
публичен:
Формуляр 1 (невалиден)
{
InitializeComponent();
//TODO: Добавете кода на конструктора тук
}

Защитено:
/// Почистете всички използвани ресурси.
~Формуляр1()
{
ако (компоненти)
{
изтриване на компоненти;
}
}
private: System::Windows::Forms::Button^ button1;
защитен:

Частно:
/// Необходима дизайнерска променлива.
System::ComponentModel::Container ^components;

#pragma region Генериран код от Windows Form Designer
/// Изискван метод за поддръжка на Designer - не променяйте
/// съдържанието на този метод с редактора на код.
void InitializeComponent(void)
{
това->button1 = (gcnew System::Windows::Forms::Button());
това->SuspendLayout();
// бутон1
това->button1->Местоположение = System::Drawing::Point(60, 76);
това->бутон1->Име = L"бутон1";
this->button1->Size = System::Drawing::Size(75, 23);
това->button1->TabIndex = 0;
това->бутон1->Текст = L"бутон1";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//Формуляр1
това->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
това->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
това->Размер на клиента = System::Drawing::Size(292, 266);
това->Контроли->Добавяне(това->button1);
това->Име = L"Формуляр1";
това->Текст = L"Формуляр1";
това->ResumeLayout(false);

}
#pragmaendregion

Статична система::Windows::Forms::Form ^frm = gcnew System::Windows::Forms::Form();
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) (
frm->Покажи();
}
};
}

ВРЪЗКАТА С ИМЕННОТО ПРОСТРАНСТВО Е ПОСОЧЕНА НА РАЗЛИЧНИ МЕСТА!



Свързани публикации