Acasă / Internet / Legați două forme c. Adăugarea de formulare. Interacțiunea dintre forme. Creați un formular cu un singur articol sau un formular de detalii

Legați două forme c. Adăugarea de formulare. Interacțiunea dintre forme. Creați un formular cu un singur articol sau un formular de detalii

Ultima actualizare: 31.10.2015

Pentru a adăuga un alt formular la proiect, faceți clic dreapta pe numele proiectului în fereastra Solution Explorer și selectați Adăugare (Adăugare)->Formular Windows...

Să dăm formă nouă un nume, de exemplu, Form2.cs:

Deci, am adăugat un al doilea formular la proiect. Acum să încercăm să implementăm interacțiunea dintre cele două forme. Să presupunem că primul formular va apela al doilea formular când se face clic pe butonul. Mai întâi, să adăugăm un buton la primul formular Form1 și să facem dublu clic pe buton pentru a merge la fișierul de cod. Deci, vom intra în handler-ul de evenimente de clic pe butonul, care este creat implicit după dublu clic pe butonul:

Private void button1_Click(expeditor obiect, EventArgs e) ( )

Acum să adăugăm codul de apel al celui de-al doilea formular. Al doilea formular se numește Form2, așa că mai întâi creăm un obiect din această clasă și apoi apelăm metoda Show pentru a-l afișa pe ecran:

Privat void button1_Click (expeditor obiect, EventArgs e) ( Form2 newForm = new Form2(); newForm.Show(); )

Acum să facem invers - astfel încât a doua formă să o afecteze pe prima. În timp ce a doua formă nu știe despre existența primei. Pentru a remedia acest lucru, trebuie să transferați cumva informații despre primul formular în al doilea formular. Pentru a face acest lucru, vom folosi transmiterea unui link către formular în constructor.

Deci, să trecem la al doilea formular și să trecem la codul său - faceți clic dreapta pe formular și selectați Vizualizare cod (Vizualizare cod). În timp ce este gol și conține doar un constructor. Deoarece C# acceptă supraîncărcarea metodelor, putem crea mai multe metode și constructori cu parametri diferiți și putem apela una dintre ele în funcție de situație. Deci, să schimbăm fișierul de cod al celei de-a doua forme în următorul:

Utilizarea sistemului; folosind System.Collections.Generic; folosind System.ComponentModel; folosind System.Data; folosind System.Drawing; folosind System.Linq; folosind System.Text; folosind System.Threading.Tasks; folosind System.Windows.Forms; namespace HelloApp (clasa parțială publică Form2: Form ( public Form2() ( InitializeComponent(); ) public Form2(Form1 f) ( InitializeComponent(); f.BackColor = Color.Yellow; ) ) )

De fapt, tocmai am adăugat aici nou constructor public Form2(Form1 f) , unde obținem primul formular și îi setăm fundalul la galben. Acum să mergem la codul primei forme, unde am apelat a doua formă și am schimbat-o în următoarea:

Privat void button1_Click(expeditor obiect, EventArgs e) ( Form2 newForm = new Form2(this); newForm.Show(); )

Pentru că în acest caz cuvântul cheie this reprezintă o referință la obiectul curent - obiectul Form1, apoi la crearea celui de-al doilea formular, îl va primi (linkul) și va gestiona primul formular prin intermediul acestuia.

Acum, după ce facem clic pe butonul, vom crea un al doilea formular, care va schimba imediat culoarea primei forme.

De asemenea, putem crea obiecte pentru forma curentă:

Privat void button1_Click (expeditor obiect, EventArgs e) ( Form1 newForm1 = new Form1(); newForm1.Show(); Form2 newForm2 = new Form2(newForm1); newForm2.Show(); )

Când lucrați cu mai multe formulare, rețineți că unul dintre ele este cel principal - care este lansat mai întâi în fișierul Program.cs. Dacă avem o grămadă de formulare deschise în același timp, atunci când cel principal este închis, întreaga aplicație se închide și odată cu ea toate celelalte formulare.

Dacă aveți un formular lung pentru mai multe articole, poate doriți uneori să detaliați rapid pentru a vedea mai multe informații despre unul dintre articole. În Access, acest lucru necesită stabilirea unei legături între un formular cu mai multe articole și un formular cu un singur articol. Când selectați un articol într-un formular cu mai multe articole, se deschide formularul cu un singur articol și afișează detalii suplimentare.

Note:

Creați formulare

În cele mai multe cazuri, două formulare într-o configurație granulară se bazează pe același tabel sau interogare. Dacă aveți deja câteva formulare pe care trebuie să le utilizați (unul este un tabel sau un formular cu mai multe articole, iar celălalt este un singur articol sau un formular cu detalii), puteți sări peste această secțiune. În caz contrar, utilizați următoarele proceduri pentru a le crea.

Creați un formular de tabel sau un formular cu mai multe elemente

    În panoul de navigare, selectați tabelul sau interogarea care conține datele pe care doriți să le afișați în formă tabelară.

    Selectați articole Creare > Alte forme, și apoi - Elemente multiple sau Masaîn funcţie de tipul de formular dorit.

    Salvați și închideți formularul.

Pentru mai multe informații despre formularele cu mai multe articole, consultați Crearea unui formular utilizând instrumentul Elemente multiple .

Creați un formular cu un singur articol sau un formular de detalii

    În panoul de navigare, faceți clic pe tabelul sau pe interogarea care conține datele pe care doriți să le afișați în formularul de detalii. Cel mai probabil va fi același tabel sau interogare pe care l-ați folosit pentru primul formular.

    Selectați articole Creare > Forma.

    Faceți modificările necesare, salvați și închideți formularul.

Pentru mai multe informații, consultați Crearea unui formular cu instrumentul Formă .

Adăugarea de logică pentru a deschide formularul de detalii

Acum să vedem cum să adăugați o mică macrocomandă la un formular cu mai multe articole sau un tabel care va deschide formularul de detalii și va afișa articolul corect.

Nu vă faceți griji dacă nu aveți prea multă experiență cu macrocomenzi. Puteți pur și simplu să copiați și să lipiți XML din procedura din acest articol.

    Dacă utilizați un formular de tabel, faceți dublu clic pe el în panoul de navigare pentru al deschide. Pentru un formular cu mai multe articole, faceți clic dreapta pe el în panoul de navigare și selectați Modul aspect.

    Apăsați tasta F4 pentru a deschide fereastra de proprietăți dacă nu este deja deschisă.

    Faceți clic pe coloana în care doriți să adăugați macrocomandă. Aceasta ar trebui să fie coloana care, atunci când se face clic, va deschide formularul de detalii după rularea macrocomenzii. În imaginea de mai sus, macrocomanda este adăugată la coloana frmContactList.

Sfat:(SFAT) Puteți adăuga macrocomenzi în mai multe coloane.

Pentru mai multe informații despre macrocomenzi din bazele de date computerizate, consultați


Este clar că dacă creați un pointer de tip<что там>::Formul va funcționa, dar am nevoie de un formular deja creat, cu butoane etc. (în general, controale diferite), dar manual (adică programatic) nu vreau să le prescriu într-o formă curată (multe mâzgălire și nu faptul că ați înțeles bine). Acesta este ceea ce încă mă încurcă ....... Când am adăugat formularul la un proiect deja creat, în noul fișier de antet Form2.h era scris așa:

#pragma o dată
#include „Formular1.h”

folosind sistemul de spații de nume;



folosind spațiul de nume System::Data;

spațiu de nume My1(

///
/// Rezumat pentru Form2



clasă de referință publică Form2: public System::Windows::Forms::Form
{
public:
Formularul 2 (nulat)
{
InitializeComponent();

}

Protejat:

~Formula2()
{
dacă (componente)
{
șterge componente;
}
}

Privat:



///
{
this->components = gcnew System::ComponentModel::Container();
this->Size = System::Drawing::Size(300,300);
this->Text = L"Form2";
this->Padding = System::Windows::Forms::Padding(0);
asta->
}
#pragmaendregion
};
}

deși în Form1.h este scris astfel:

#pragma o dată
#include „Form2.h”

spațiu de nume My1(

Utilizarea spațiului de nume System;
folosind spațiul de nume System::ComponentModel;
folosind spațiul de nume System::Colections;
folosind spațiul de nume System::Windows::Forms;
folosind spațiul de nume System::Data;
folosind spațiul de nume System::Drawing;

///
/// Rezumat pentru Form1
/// AVERTISMENT: Dacă schimbați numele acestei clase, va trebui să schimbați
/// Proprietatea „Nume fișier resursă” pentru instrumentul de compilare a resurselor gestionate
/// asociat cu toate fișierele .resx de care depinde această clasă. In caz contrar,
/// designerii nu vor putea interacționa corect cu localizat
/// resurse asociate acestui formular.
clasă de referință publică Form1: public System::Windows::Forms::Form
{
public:
Formularul 1 (nulat)
{
InitializeComponent();
//TODO: Adăugați aici codul constructorului
}

Protejat:
/// Curățați orice resurse utilizate.
~Formular1()
{
dacă (componente)
{
șterge componente;
}
}
privat: System::Windows::Forms::Button^ button1;
protejat:

Privat:
/// Variabilă de proiectant necesară.
System::ComponentModel::Container ^componente;

#pragma region Cod generat de Windows Form Designer
/// Metodă necesară pentru suportul Designer - nu modificați
/// conținutul acestei metode cu editorul de cod.
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
// butonul 1
this->button1->Location = System::Drawing::Point(60, 76);
this->button1->Nume = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 0;
this->button1->Text = L"button1";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
// Formularul 1
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(292, 266);
this->Controle->Add(this->button1);
this->Nume = L"Form1";
this->Text = L"Form1";
this->ResumeLayout(false);

}
#pragmaendregion

Sistem static::Windows::Forms::Form ^frm = gcnew System::Windows::Forms::Form();
privat: System::Void button1_Click(System::Object^ expeditor, System::EventArgs^ e) (
frm->Show();
}
};
}

ÎN DIFERITE LOCURI CONECTAREA SPAȚIULUI DE NUMELE ESTE REGLATĂ!