Uy / Internet / Ikki shaklni bog'lang c. Shakllarni qo'shish. Shakllar orasidagi o'zaro ta'sir. Bitta element shakli yoki tafsilotlar shaklini yarating

Ikki shaklni bog'lang c. Shakllarni qo'shish. Shakllar orasidagi o'zaro ta'sir. Bitta element shakli yoki tafsilotlar shaklini yarating

Oxirgi yangilanish: 31.10.2015

Loyihaga boshqa shakl qo'shish uchun Solution Explorer oynasidagi loyiha nomini sichqonchaning o'ng tugmasi bilan bosing va Qo'shish (Qo'shish)-> Windows formasi... ni tanlang.

Keling, yangi shaklga qandaydir nom beraylik, masalan, Form2.cs:

Shunday qilib, biz loyihaga ikkinchi shaklni qo'shdik. Endi ikkala shakl o'rtasidagi o'zaro ta'sirni amalga oshirishga harakat qilaylik. Aytaylik, tugma bosilganda birinchi forma ikkinchi formani chaqiradi. Avval Form1 ning birinchi formasiga tugma qo'shamiz va kod fayliga o'tish uchun tugmani ikki marta bosamiz. Shunday qilib, biz tugmani ikki marta bosgandan so'ng sukut bo'yicha yaratilgan tugmani bosish hodisasi ishlovchisiga kiramiz:

Shaxsiy bekor tugmasi1_Click(ob'ekt jo'natuvchi, EventArgs e) ( )

Endi unga ikkinchi shakldagi qo'ng'iroq kodini qo'shamiz. Bizning ikkinchi formamiz Form2 deb ataladi, shuning uchun avval ushbu klass ob'ektini yaratamiz, so'ngra uni ekranda ko'rsatish uchun Show usulini chaqiramiz:

Maxfiy bekor tugmasi1_Click(ob'ekt jo'natuvchi, EventArgs e) ( Form2 newForm = new Form2(); newForm.Show(); )

Endi teskarisini qilaylik - ikkinchi shakl birinchisiga ta'sir qilishi uchun. Ikkinchi shakl esa birinchisining mavjudligi haqida bilmaydi. Buni tuzatish uchun siz qandaydir tarzda birinchi shakl haqidagi ma'lumotlarni ikkinchi shaklga o'tkazishingiz kerak. Buning uchun konstruktorda formaga havolani uzatishdan foydalanamiz.

Shunday qilib, keling, ikkinchi shaklga o'tamiz va uning kodiga o'tamiz - forma ustiga sichqonchaning o'ng tugmachasini bosing va Kodni ko'rish (Kodni ko'rish) ni tanlang. U bo'sh va faqat konstruktorni o'z ichiga oladi. C# usuli haddan tashqari yuklashni qo'llab-quvvatlaganligi sababli, biz turli xil parametrlarga ega bir nechta usul va konstruktorlarni yaratishimiz va vaziyatga qarab ulardan birini chaqirishimiz mumkin. Shunday qilib, ikkinchi shakldagi kod faylini quyidagiga o'zgartiramiz:

Tizimdan foydalanish; System.Collections.Generic yordamida; System.ComponentModel yordamida; System.Data yordamida; System.Drawing yordamida; System.Linq yordamida; System.Text yordamida; System.Threading.Tasks dan foydalanish; System.Windows.Forms-dan foydalanish; nom maydoni HelloApp ( umumiy qisman klass Form2: Shakl ( umumiy Form2() ( InitializeComponent(); ) umumiy Form2(Form1 f) ( InitializeComponent(); f.BackColor = Color.Yellow; ) ) )

Aslida, biz bu yerga qo'shdik yangi konstruktor umumiy Form2(Form1 f), bu erda biz birinchi shaklni olamiz va uning fonini sariq rangga o'rnatamiz. Endi biz ikkinchi shaklni chaqirgan birinchi forma kodiga o'tamiz va uni quyidagicha o'zgartiramiz:

Maxfiy bekor tugmasi1_Click(ob'ekt jo'natuvchisi, EventArgs e) ( Form2 newForm = new Form2(bu); newForm.Show(); )

Chunki ichida bu holat this kalit so'zi joriy ob'ektga - Form1 ob'ektiga havolani ifodalaydi, keyin ikkinchi shaklni yaratishda u uni (havolani) oladi va u orqali birinchi shaklni boshqaradi.

Endi tugmani bosganimizdan so'ng biz ikkinchi formani yaratamiz, u darhol birinchi formaning rangini o'zgartiradi.

Joriy shakl uchun ob'ektlarni ham yaratishimiz mumkin:

Maxfiy bekor tugmasi1_Click(ob'ekt jo'natuvchisi, EventArgs e) ( Form1 newForm1 = new Form1(); newForm1.Show(); Form2 newForm2 = new Form2(newForm1); newForm2.Show(); )

Bir nechta shakllar bilan ishlaganda, ulardan biri asosiysi ekanligini yodda tuting - bu birinchi navbatda Program.cs faylida ishga tushiriladi. Agar bizda bir vaqtning o'zida bir nechta shakllar ochilgan bo'lsa, asosiysi yopilganda, butun dastur yopiladi va u bilan birga barcha boshqa shakllar.

Agar sizda bir nechta elementlar uchun uzun shakl mavjud bo'lsa, ba'zan elementlardan biri haqida qo'shimcha ma'lumotni ko'rish uchun tezda pastga tushmoqchi bo'lishingiz mumkin. Access-da bu ko'p elementli shakl va bitta elementli shakl o'rtasida bog'lanishni o'rnatishni talab qiladi. Ko'p elementli shakldagi elementni tanlaganingizda, bitta element shakli ochiladi va qo'shimcha ma'lumotlarni ko'rsatadi.

Eslatmalar:

Formalar yaratish

Ko'pgina hollarda, granüler konfiguratsiyadagi ikkita shakl bir xil jadval yoki so'rovga asoslanadi. Agar sizda allaqachon foydalanish kerak bo'lgan bir nechta shakl mavjud bo'lsa (biri jadval yoki ko'p elementli shakl, ikkinchisi esa bitta element yoki tafsilotlar shakli), bu bo'limni o'tkazib yuborishingiz mumkin. Aks holda, ularni yaratish uchun quyidagi tartiblardan foydalaning.

Bir nechta elementlardan iborat jadval shakli yoki formasini yarating

    Navigatsiya panelida jadval shaklida ko'rsatmoqchi bo'lgan ma'lumotlarni o'z ichiga olgan jadval yoki so'rovni tanlang.

    Elementlarni tanlang Yaratilish > Boshqa shakllar, undan keyin - Bir nechta elementlar yoki stol kerakli shakl turiga qarab.

    Shaklni saqlang va yoping.

Ko'p elementli shakllar haqida ko'proq ma'lumot olish uchun Ko'p elementlar vositasi yordamida shakl yaratish-ga qarang.

Bitta element shakli yoki tafsilotlar shaklini yarating

    Navigatsiya panelida tafsilotlar shaklida ko'rsatmoqchi bo'lgan ma'lumotlarni o'z ichiga olgan jadval yoki so'rovni bosing. Bu birinchi shakl uchun ishlatgan jadval yoki so'rov bo'lishi mumkin.

    Elementlarni tanlang Yaratilish > Shakl.

    Kerakli o'zgarishlarni kiriting, shaklni saqlang va yoping.

Qo'shimcha ma'lumot olish uchun Shakl vositasi bilan shakl yaratish-ga qarang.

Tafsilotlar shaklini ochish uchun mantiq qo'shiladi

Keling, tafsilotlar shaklini ochadigan va to'g'ri elementni ko'rsatadigan ko'p elementli yoki jadval shakliga kichik makrosni qanday qo'shishni ko'rib chiqaylik.

Makroslar bilan ko'p tajribaga ega bo'lmasangiz, tashvishlanmang. Siz shunchaki ushbu maqoladagi protseduradan XML-ni nusxalashingiz va joylashtirishingiz mumkin.

    Agar siz jadval shaklidan foydalanayotgan bo'lsangiz, uni ochish uchun Navigatsiya panelida ikki marta bosing. Ko'p elementli shakl uchun Navigatsiya panelida uni o'ng tugmasini bosing va tanlang Joylashtirish rejimi.

    Agar u hali ochilmagan bo'lsa, xususiyatlar oynasini ochish uchun F4 tugmasini bosing.

    Makros qo'shmoqchi bo'lgan ustunni bosing. Bu makrosni ishga tushirgandan so'ng, bosilganda, tafsilotlar shaklini ochadigan ustun bo'lishi kerak. Yuqoridagi rasmda makro frmContactList ustuniga qo'shilgan.

Maslahat:(Maslahat) Siz bir nechta ustunlarga makroslarni qo'shishingiz mumkin.

Kompyuter ma'lumotlar bazalaridagi makroslar haqida ko'proq ma'lumot olish uchun qarang


Agar siz ko'rsatgich turini yaratsangiz, bu aniq<что там>::Forma ishlaydi, lekin menga tugmalar va hokazolar bilan allaqachon yaratilgan shakl kerak. (umuman, turli xil boshqaruv), lekin qo'lda (ya'ni, dasturiy jihatdan) men ularni toza shaklda yozishni xohlamayman (ko'p yozish va siz buni to'g'ri tushunganingiz uchun emas). Bu meni haligacha chalkashtirib yuborgan narsa ....... Shaklni allaqachon yaratilgan loyihaga qo'shganimda, yangi Form2.h sarlavha faylida shunday yozilgan edi:

#pragma bir marta
#"Form1.h"ni o'z ichiga oladi

nom maydoni tizimidan foydalanish;



nom maydonidan foydalanish System::Data;

nom maydoni My1(

///
/// Form2 uchun xulosa



umumiy ref klassi Form2: umumiy tizim::Windows::Forms::Form
{
ommaviy:
Shakl2 (bo'sh)
{
InitializeComponent();

}

Himoyalangan:

~Form2()
{
agar (komponentlar)
{
komponentlarni o'chirish;
}
}

Shaxsiy:



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

Form1.h da shunday yozilgan bo'lsa ham:

#pragma bir marta
#"Form2.h"ni o'z ichiga oladi

nom maydoni My1(

Nomlar tizimidan foydalanish;
System::ComponentModel nom maydonidan foydalanish;
nom maydonidan foydalanish System::To'plamlar;
nom maydonidan foydalanish System::Windows::Forms;
nom maydonidan foydalanish System::Data;
nom maydonidan foydalanish System::Chizma;

///
/// Form1 uchun xulosa
/// OGOHLANTIRISH: Agar siz ushbu sinf nomini o'zgartirsangiz, uni o'zgartirishingiz kerak bo'ladi
/// Boshqariladigan resurs kompilyator vositasi uchun "Resurs fayl nomi" xususiyati
/// bu sinf bog'liq bo'lgan barcha .resx fayllari bilan bog'langan. Aks holda,
/// dizaynerlar mahalliylashtirilgan bilan to'g'ri aloqa qila olmaydi
/// ushbu shakl bilan bog'liq manbalar.
umumiy ref klassi Form1: umumiy tizim::Windows::Forms::Form
{
ommaviy:
Shakl 1 (bekor)
{
InitializeComponent();
//TODO: Bu yerga konstruktor kodini qo'shing
}

Himoyalangan:
/// Foydalanilayotgan resurslarni tozalang.
~Form1()
{
agar (komponentlar)
{
komponentlarni o'chirish;
}
}
xususiy: System::Windows::Forms::Button^ button1;
himoyalangan:

Shaxsiy:
/// Kerakli dizayner o'zgaruvchisi.
System::ComponentModel::Container ^components;

#pragma regioni Windows Form Designer tomonidan yaratilgan kod
/// Dizaynerni qo'llab-quvvatlash uchun talab qilinadigan usul - o'zgartirmang
/// kod muharriri bilan ushbu usulning mazmuni.
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this -> SuspendLayout();
// tugma 1
this->button1->Location = System::Chizma::Point(60, 76);
this->button1->Ism = L"button1";
this->button1->Size = System::Chizma::Size(75, 23);
this->button1->TabIndex = 0;
this->button1->Matn = L"button1";
this->button1->UseVisualStyleBackColor = rost;
this->button1->Click += gcnew System::EventHandler(bu, &Form1::button1_Click);
// Shakl 1
this->AutoScaleDimensions = System::Chizma::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Chizma::Size(292, 266);
this->Controls->Qo'shish (bu->button1);
this -> Ism = L "Form1";
this -> Matn = L "Form1";
this -> ResumeLayout (noto'g'ri);

}
#pragmaendregion

Statik tizim::Windows::Forms::Form ^frm = gcnew System::Windows::Forms::Form();
xususiy: System::Void button1_Click(System::Object^ jo'natuvchi, System::EventArgs^ e) (
frm->Show();
}
};
}

TURLI JOYLARDA NOM MAYOSINING BOG'LANISHI TARTIB ETILGAN!