ஒரு படிவத்திலிருந்து மற்றொன்றை எவ்வாறு திறப்பது. படிவங்களைச் சேர்த்தல். படிவங்களுக்கு இடையிலான தொடர்பு. ஒரு படிவத்தை உருவாக்குவதற்கும் நிரலாக்க ரீதியாக அழைப்பதற்கும் ஒரு எடுத்துக்காட்டு

இந்தக் கட்டுரையில் குறிப்பிடப்பட்டுள்ள கேள்வியானது பயன்பாட்டுக் கட்டமைப்பை உருவாக்கும் தலைப்புடன் தொடர்புடையதாக இருக்கலாம், குறிப்பாக பரிசீலனையில் உள்ள சிக்கலுடன் அல்ல. ஒரு படிவத்திலிருந்து மற்றொரு படிவத்திற்கு தரவை மாற்றுவது கடினம் அல்ல. இதைச் செய்ய, யாருடைய தரவை நாம் பெற விரும்புகிறோமோ அதன் கட்டுப்பாட்டை திறக்க வேண்டும், அதாவது பொது மாற்றியமைப்புடன் அதைக் குறிக்கவும். மேலும், மற்றொரு விருப்பம் சாத்தியமாகும். எடுத்துக்காட்டாக, முதல் வடிவத்தில், நம்மைப் பற்றிய குறிப்பை கட்டமைப்பாளருக்கு அனுப்புவதன் மூலம் இரண்டாவது வடிவத்தின் பொருளை உருவாக்குகிறோம், அதாவது முதல் படிவத்திலிருந்து இரண்டாவது வடிவத்திற்கு ஒரு குறிப்பை அனுப்புவதன் மூலம்.
SecondForm secondForm = புதிய SecondForm(இது);
இயற்கையாகவே, இதைச் செய்வதற்கு முன், இரண்டாவது படிவத்தின் கட்டமைப்பாளருக்கு அதிக சுமைகளை உருவாக்குவதை நீங்கள் கவனித்துக் கொள்ள வேண்டும்.

மேலும் இந்த முறை மிகவும் பொதுவானது. இருப்பினும், அதன் எளிமையுடன், இது பல சாத்தியமான சிக்கல்களைக் கொண்டுள்ளது, அவற்றில் முக்கியமானது உறைதல் கொள்கையின் மீறலாகும். ஒரு வார்த்தையில், இரண்டாவது வடிவம் முதல் இருப்பைப் பற்றி எதுவும் தெரியக்கூடாது, இன்னும் அதிகமாக, அதை பாதிக்க முடியாது.

இந்த சிக்கலுக்கான தீர்வு மிகவும் எளிமையானது. குறியீட்டை நேரடியாகப் பார்ப்போம். நாங்கள் வடிவமைப்பாளரில் உருவாக்குகிறோம் முக்கிய வடிவம்(பயன்பாடு தொடங்கும் போது இது தொடங்கப்படும்). ஒன்று போடுவோம் உரைப்பெட்டி, லேபிள்மற்றும் பொத்தானை.

பொத்தானைக் கிளிக் செய்வதன் மூலம் இரண்டாவது படிவத்தையும் உரையையும் திறக்கும் உரை புலம்முக்கிய படிவம் இரண்டாவது படிவத்தின் உரை புலத்திற்கு மாற்றப்படும். ஆரம்பத்தில், இரண்டாவது வடிவம் இதுபோல் தெரிகிறது:

முதல் ஒன்றைப் போலவே, இது அதே கட்டுப்பாடுகளைக் கொண்டுள்ளது. எங்களுக்கு இனி தேவையில்லை. பயன்பாட்டு நுழைவு புள்ளி முக்கிய படிவத்தைத் தொடங்குகிறது:

கணினியைப் பயன்படுத்துதல்; System.Collections.Generic ஐப் பயன்படுத்துதல்; System.Linq ஐப் பயன்படுத்துதல்; System.Windows.Forms ஐப் பயன்படுத்துதல்; பெயர்வெளி From1FormTo2 ( நிலையான வகுப்பு நிரல் ( // பயன்பாட்டிற்கான முக்கிய நுழைவு புள்ளி. நிலையான வெற்றிட முதன்மை() ( Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm)() );

முக்கிய படிவக் குறியீடு இதுபோல் தெரிகிறது:

கணினியைப் பயன்படுத்துதல்; System.Collections.Generic ஐப் பயன்படுத்துதல்; System.ComponentModel ஐப் பயன்படுத்துதல்; System.Data ஐப் பயன்படுத்துதல்; கணினி வரைதல்; System.Linq ஐப் பயன்படுத்துதல்; System.Text ஐப் பயன்படுத்துதல்; System.Windows.Forms ஐப் பயன்படுத்துதல்; பெயர்வெளி From1FormTo2 (பொது பகுதி வகுப்பு முதன்மை படிவம்: படிவம் ( //இரண்டாம் வடிவம் SecondForm secondForm; //constructor public MainForm() ( InitializeComponent(); ) //தரவு பரிமாற்ற நிகழ்வு கையாளுதல் //முக்கிய படிவத்திலிருந்து இரண்டாவது தனிப்பட்ட வெற்றிடத்திற்கு btn_mainForm_ அனுப்புபவர், EventArgs e) ( secondForm = புதிய SecondForm(tb_mainForm.Text.Trim()); secondForm.ShowDialog(); என்றால் (secondForm.DialogResult == DialogResult.OK) tb_mainForm.Text.)) = secondDForta

அதன்படி, நிகழ்வில் பொத்தானை இணைக்க மறக்காதீர்கள் கிளிக் செய்யவும். இங்கே முக்கிய படிவ வகுப்பில் ஒரு புலம் உள்ளது இரண்டாம் படிவம் இரண்டாம் படிவம், இரண்டாவது வடிவப் பொருளைக் குறிக்கிறது. நீங்கள் "சமர்ப்பி" பொத்தானைக் கிளிக் செய்தால், இரண்டாவது படிவம் உருவாக்கப்படும் (ஓவர்லோடட் கன்ஸ்ட்ரக்டர் என்று அழைக்கப்படுகிறது, நாங்கள் அதை பின்னர் உருவாக்குவோம்) மற்றும் முறையைப் பயன்படுத்தி தொடங்கப்பட்டது ஷோ டயலாக்(). இந்த வழக்கில், இந்த முறை எங்களுக்கு ஏற்றது. மேலும், இதற்குப் பிறகு, இரண்டாவது படிவம் மூடப்பட்டதா என்பதைச் சரிபார்க்கிறோம், ஆனால் அதன் பொத்தானைக் கிளிக் செய்கிறோம். இரண்டாவது படிவத்தில் ஒரு பொத்தானைக் கிளிக் செய்தால், முதல் படிவம் இரண்டாவது படிவத்திலிருந்து தரவை ஏற்க வேண்டும். முறை அழைப்பதன் மூலம் இது நிகழ்கிறது ReturnData()இரண்டாவது வடிவத்தில்.

இப்போது மிகவும் சுவாரஸ்யமான பகுதி இரண்டாவது படிவத்தின் குறியீடு:

கணினியைப் பயன்படுத்துதல்; System.Collections.Generic ஐப் பயன்படுத்துதல்; System.ComponentModel ஐப் பயன்படுத்துதல்; System.Data ஐப் பயன்படுத்துதல்; கணினி வரைதல்; System.Linq ஐப் பயன்படுத்துதல்; System.Text ஐப் பயன்படுத்துதல்; System.Windows.Forms ஐப் பயன்படுத்துதல்; பெயர்வெளி From1FormTo2 (பொது பகுதி வகுப்பு SecondForm: படிவம் (//ஓவர்லோடட் கன்ஸ்ட்ரக்டர் பொது SecondForm(string data)) (InitializeComponent(); tb_secondForm.Text = data; ) //தரவு பரிமாற்ற நிகழ்வு கையாளுதல் //இரண்டாம் படிவத்திலிருந்து முதன்மையான தனிப்பட்ட வெற்றிடத்திற்கு btn_secondForm_Click (பொருள் அனுப்புபவர், EventArgs e) ( this.DialogResult = DialogResult.OK; ) // பொது முறைஇந்த படிவத்தின் பொது சரத்தின் உரைப் புலத்தை அணுக // ReturnData() ( return (tb_secondForm.Text.Trim()); ) )

நீங்கள் பார்க்க முடியும் என, ஒரு சரம் வகையை ஏற்கும் ஒற்றை கன்ஸ்ட்ரக்டர் ஓவர்லோட் உள்ளது. TextBox இலிருந்து உரையை மாற்ற முயற்சிக்கிறோம் என்பதை நினைவில் கொள்ளுங்கள். கன்ஸ்ட்ரக்டரில், கூறுகள் துவக்க திட்டமிடப்பட்டுள்ளது மற்றும் உரை புலத்தின் உரை முதல் படிவத்திலிருந்து அனுப்பப்பட்ட மதிப்புக்கு அமைக்கப்படும். அடுத்து, நிகழ்வுக்கு சந்தா செலுத்துவதன் மூலம் கிளிக் செய்யவும்இரண்டாவது படிவத்தின் பொத்தானுக்கு, ஹேண்ட்லரை உருவாக்கினோம் btn_secondForm_Click, இது எந்த உரையாடல் பெட்டியின் "சரி" பொத்தானின் செயல்பாட்டை உருவகப்படுத்துகிறது. எனவே, "சமர்ப்பி" பொத்தானைக் கிளிக் செய்வதன் மூலம் (இரண்டாவது படிவத்தின்), நாங்கள் நிபந்தனையை இயக்குகிறோம்

(secondForm .DialogResult == DialogResult .சரி)

முதல் வடிவம், எனவே, முறை அழைப்பதன் மூலம் இரண்டாவது படிவம் .ReturnData(), முதல் படிவத்தின் உரை புலத்தை இரண்டாவது படிவத்தின் உரை புலத்தின் மதிப்பிற்கு அமைக்கிறோம்.

வேலை இந்த முறை, இனி விளக்கம் தேவையில்லை என்று நினைக்கிறேன். இது ஒரு தனி உரை புலத்தில் இருந்து உரையை திருப்பித் தருகிறது, அதே நேரத்தில் அதை தனிப்பட்டதாக வைத்திருக்கும்.

இதன் விளைவாக, இணைக்கும் கொள்கைகளை மீறாமல், தரவை முதல் படிவத்திலிருந்து இரண்டாவது படிவத்திற்கும், இரண்டாவதிலிருந்து முதல் படிவத்திற்கும் மாற்றினோம்.

முதல் படிவத்தின் உரை புலத்தில் “aaa” என்ற உரையை உள்ளிட்டு பொத்தானைக் கிளிக் செய்யவும். திறக்கும் இரண்டாவது வடிவத்தில் இந்த உரையை உரை புலத்தில் காண்பீர்கள். உரையை “aaa ppp” ஆக மாற்ற முயற்சிக்கவும் மற்றும் பொத்தானைக் கிளிக் செய்யவும். இரண்டாவது படிவத்தை மூடிய பிறகு, முக்கிய படிவத்தின் உரை புலத்தில் இந்த உரை எவ்வாறு தோன்றும் என்பதை நீங்கள் காண்பீர்கள்.

இப்போது, ​​நீங்கள் படிவங்களுக்கு இடையில் தரவை இன்னும் சரியாகப் பரிமாற்ற முடியும் என்று நினைக்கிறேன். அடுத்த கட்டுரையில் ASP.NET பயன்பாடுகளில் இதை எப்படி செய்வது என்பது பற்றி பேசுவோம்.

கடைசியாக புதுப்பிக்கப்பட்டது: 10/31/2015

திட்டத்தில் மற்றொரு படிவத்தைச் சேர்க்க, தீர்வு எக்ஸ்ப்ளோரர் சாளரத்தில் திட்டப் பெயரில் வலது கிளிக் செய்து Add->Windows Form... என்பதைத் தேர்ந்தெடுக்கவும்.

புதிய படிவத்திற்கு சில பெயர்களை வழங்குவோம், எடுத்துக்காட்டாக, Form2.cs:

எனவே, எங்கள் திட்டத்தில் இரண்டாவது படிவத்தைச் சேர்த்துள்ளோம். இப்போது இரண்டு வடிவங்களுக்கிடையேயான தொடர்புகளை செயல்படுத்த முயற்சிப்போம். பட்டனை அழுத்தினால் முதல் படிவம் இரண்டாவது படிவத்தை அழைக்கும் என்று வைத்துக்கொள்வோம். முதலில், Form1 என்ற முதல் படிவத்தில் ஒரு பொத்தானைச் சேர்த்து, குறியீட்டு கோப்பிற்குச் செல்ல பட்டனில் இருமுறை கிளிக் செய்யவும். எனவே, பொத்தானின் கிளிக் நிகழ்வு ஹேண்ட்லருக்கு நாங்கள் அழைத்துச் செல்லப்படுவோம், இது பொத்தானை இருமுறை கிளிக் செய்த பிறகு இயல்பாக உருவாக்கப்படும்:

தனிப்பட்ட வெற்றிட பொத்தான்1_கிளிக்(பொருள் அனுப்புபவர், EventArgs e) ( )

இப்போது இரண்டாவது படிவத்தை அழைப்பதற்கான குறியீட்டைச் சேர்ப்போம். எங்கள் இரண்டாவது படிவம் Form2 என்று அழைக்கப்படுகிறது, எனவே முதலில் இந்த வகுப்பின் ஒரு பொருளை உருவாக்குகிறோம், பின்னர் அதை திரையில் காண்பிக்க ஷோ முறை என்று அழைக்கிறோம்:

தனிப்பட்ட வெற்றிட பொத்தான்1_கிளிக்(பொருள் அனுப்புபவர், EventArgs e) (Form2 newForm = new Form2(); newForm.Show(); )

இப்போது அதற்கு நேர்மாறாகச் செய்வோம் - அதனால் இரண்டாவது வடிவம் முதலில் பாதிக்கிறது. இரண்டாவது வடிவம் முதல் இருப்பு பற்றி தெரியாது போது. இதை சரிசெய்ய, முதல் படிவத்தைப் பற்றிய தகவலை எப்படியாவது இரண்டாவது படிவத்திற்கு மாற்ற வேண்டும். இதைச் செய்ய, கட்டமைப்பாளரில் உள்ள படிவத்திற்கான இணைப்பைப் பயன்படுத்துவோம்.

எனவே இரண்டாவது படிவத்திற்குச் சென்று அதன் குறியீட்டிற்குச் செல்லலாம் - படிவத்தில் வலது கிளிக் செய்து, பார்வைக் குறியீட்டைத் தேர்ந்தெடுக்கவும். இப்போதைக்கு அது காலியாக உள்ளது மற்றும் ஒரு கன்ஸ்ட்ரக்டர் மட்டுமே உள்ளது. சி# முறை ஓவர்லோடிங்கை ஆதரிப்பதால், பல்வேறு அளவுருக்கள் கொண்ட பல முறைகள் மற்றும் கன்ஸ்ட்ரக்டர்களை உருவாக்கலாம் மற்றும் சூழ்நிலையைப் பொறுத்து அவற்றில் ஒன்றை அழைக்கலாம். எனவே, இரண்டாவது படிவத்தின் குறியீடு கோப்பை பின்வருவனவற்றிற்கு மாற்றுவோம்:

கணினியைப் பயன்படுத்துதல்; System.Collections.Generic ஐப் பயன்படுத்துதல்; System.ComponentModel ஐப் பயன்படுத்துதல்; System.Data ஐப் பயன்படுத்துதல்; கணினி வரைதல்; System.Linq ஐப் பயன்படுத்துதல்; System.Text ஐப் பயன்படுத்துதல்; System.Threading.Tasks ஐப் பயன்படுத்துதல்; System.Windows.Forms ஐப் பயன்படுத்துதல்; namespace HelloApp (பொது பகுதி வகுப்பு படிவம்2: படிவம் (பொது படிவம்2() (InitializeComponent(); ) பொது Form2(Form1 f) (InitializeComponent(); f.BackColor = Color.Yellow; ) )

உண்மையில் நாங்கள் இங்கே சேர்த்துள்ளோம் புதிய கட்டமைப்பாளர் public Form2(Form1 f) இதில் முதல் படிவத்தைப் பெற்று அதன் பின்புலத்தை மஞ்சள் நிறமாக அமைக்கிறோம். இப்போது முதல் படிவத்தின் குறியீட்டிற்குச் செல்லலாம், அங்கு நாம் இரண்டாவது படிவத்தை அழைத்தோம் மற்றும் பின்வருவனவற்றை மாற்றுவோம்:

தனிப்பட்ட வெற்றிட பொத்தான்1_கிளிக்(பொருள் அனுப்புபவர், EventArgs e) (Form2 newForm = புதிய Form2(இது); newForm.Show(); )

இந்த விஷயத்தில் முக்கிய சொல் தற்போதைய பொருளின் குறிப்பைக் குறிக்கிறது - படிவம் 1 பொருள், பின்னர் இரண்டாவது படிவத்தை உருவாக்கும் போது அது (இணைப்பு) பெறும் மற்றும் அதன் மூலம் முதல் படிவத்தை கட்டுப்படுத்தும்.

இப்போது, ​​பொத்தானைக் கிளிக் செய்த பிறகு, இரண்டாவது படிவம் உருவாக்கப்படும், இது உடனடியாக முதல் படிவத்தின் நிறத்தை மாற்றும்.

தற்போதைய வடிவத்தின் பொருட்களையும் நாம் உருவாக்கலாம்:

தனிப்பட்ட வெற்றிட பொத்தான்1_கிளிக் (பொருள் அனுப்புநர், நிகழ்வு ஆர்க்ஸ் இ) (படிவம்1 புதியபடிவம்1 = புதிய படிவம்1(); புதியபடிவம்1.காண்பி(); படிவம்2 புதியபடிவம்2 = புதிய படிவம்2(புதியபடிவம்1); புதியபடிவம்2.காண்பி(); )

பல படிவங்களுடன் பணிபுரியும் போது, ​​​​அவற்றில் ஒன்று முக்கியமானது என்பதை நீங்கள் கணக்கில் எடுத்துக்கொள்ள வேண்டும் - இது Program.cs கோப்பில் முதலில் தொடங்கப்பட்டது. ஒரே நேரத்தில் பல படிவங்கள் திறந்திருந்தால், முக்கிய ஒன்றை மூடும்போது, ​​முழு பயன்பாடும் மூடப்பட்டு, அதனுடன் மற்ற எல்லா வடிவங்களும் இருக்கும்.

மைக்ரோசாப்டின் விஷுவல் ஸ்டுடியோவைப் பற்றிய எனது கருத்து இன்னும் அப்படியே இருந்தாலும், சில நேரங்களில் நீங்கள் அதில் ஏதாவது செய்ய வேண்டும். நாம் எழுதுவது உண்மையில் C++ இல் அல்ல, ஆனால் C++/CLI என்று அழைக்கப்படுபவற்றில், பழக்கமான காட்சி கூறுகளுடன் பணிபுரிவது அதே போர்லண்ட் சூழல்களிலிருந்து வேறுபட்டதாக இருக்காது. ஆனால் இது பில்டருடன் ஒப்பிடும்போது, ​​​​ஒன்றுக்கு மேற்பட்ட படிவங்களுடன் பணிபுரியும் 3 பொதுவான சூழ்நிலைகளைக் கருத்தில் கொள்வோம், எடுத்துக்காட்டு சூழல் சி++ 2010 எக்ஸ்பிரஸ், இது முக்கிய படிவத்தில் இயல்புநிலை பெயர் உள்ளது என்று கருதப்படுகிறது.

ஒரு படிவத்தை உருவாக்குவதற்கும் நிரலாக்க ரீதியாக அழைப்பதற்கும் ஒரு எடுத்துக்காட்டு

இந்த குறியீட்டை செயல்படுத்தலாம், எடுத்துக்காட்டாக, படிவம் 1 இல் உள்ள ஒரு பொத்தானைக் கிளிக் செய்வதன் மூலம்.

படிவம்^படிவம்2 = gcnew படிவம்(); பட்டன்^ பட்டன்2 = gcnew பட்டன்(); button2->உரை = L"சரி"; button2->இடம் = புள்ளி(10,10); form2->Text = L"My window"; form2->HelpButton = true; form2->FormBorderStyle = அமைப்பு::Windows::Forms::FormBorderStyle::FixedDialog; form2->StartPosition = FormStartPosition::CenterScreen; form2->கட்டுப்பாடுகள்->சேர்(பொத்தான்2); form2->ShowDialog();

நிரல்ரீதியாக உருவாக்கப்பட்ட பொத்தான்2க்கு கிளிக் ஹேண்ட்லரைச் சேர்க்க, குறியீட்டின் கடைசி வரிக்கு முன் எழுதவும்:

பட்டன்2->கிளிக் += gcnew System::EventHandler(இது, &Form1::button2_Click);

form2->ShowDialog() அல்லது form2->Show() முறை அழைக்கப்படுகிறது;

இந்த வழக்கில், ஹேண்ட்லர் குறியீடு தற்போதைய தொகுதி Form1.h இல் அமைந்துள்ளது:

தனிப்பட்ட: சிஸ்டம்:: வெற்றிட பொத்தான்2_கிளிக்(சிஸ்டம்::ஆப்ஜெக்ட்^ அனுப்புபவர், சிஸ்டம்::EventArgs^ e) ( MessageBox::Show("Here"); )

முக்கிய படிவத்திலிருந்து மற்றொரு படிவத்தை அழைக்கவும்

மெனுவில், திட்டம் - சேர் என்பதைத் தேர்ந்தெடுக்கவும் புதிய உறுப்பு- படிவம் - பெயர் படிவம்2

ஒரு ஆபரேட்டரைச் சேர்ப்போம்

#"Form2.h" அடங்கும்

Form1.h இல் முதல் பெயர்வெளிக்கு முன் (அதாவது, கோப்பின் ஆரம்பத்திலேயே).

படிவம்1 வகுப்பின் பொதுப் பிரிவில் வகுப்பு நிகழ்விற்கான சுட்டியைச் சேர்ப்போம்:

படிவம்2^F2;

நாம் உருவாக்க வேண்டிய குறியீட்டைச் சேர்த்து, இரண்டாவது படிவத்தை அழைக்கவும்:

F2=gcnewForm2(); F2->Show();

இரண்டாவது படிவத்தை நிரல் ரீதியாக நீக்க, பின்வரும் குறியீடு பொருத்தமானது:

F2 ஐ நீக்கு;

சுட்டிக்காட்டி கடைசியாக உருவாக்கப்பட்ட ஒரு படிவத்தின் முகவரியை மட்டுமே சேமிக்கிறது என்பதை கவனத்தில் கொள்ள வேண்டும். இந்தக் குறியீட்டைப் பயன்படுத்தி நாம் தொடர்ச்சியாக பல படிவங்களை உருவாக்கினால், கடைசியானது மட்டுமே நீக்கப்படும். மாற்றாக, கீழே விவரிக்கப்பட்டுள்ள வடிவ வரிசையை முயற்சிக்கவும்.

படிவ வகுப்பில் தேவையான தரவை விவரிப்போம் படிவம் 1 (இங்கே டேபுலேட்டர் திட்டத்தின் பெயர் மற்றும் பெயர்வெளி, தேவைப்பட்டால், உங்கள் சொந்தமாக மாற்றவும்):

நிலையான கான்ஸ்ட் இன்ட் MAX_FORMS = 100; //அதிகபட்ச எண்ணிக்கையிலான படிவங்கள் int FormCount; //படிவம் கவுண்டர் வரிசை ^F2; //படிவங்களின் வரிசைக்கு சுட்டி

முக்கிய படிவத்தின் ஏற்ற நிகழ்வைப் பயன்படுத்தி தரவைத் துவக்குகிறோம்:

FormCount=0; F2 = gcnew அணிவரிசை (MAX_FORMS);

அடுத்த படிவத்தை உருவாக்க குறியீட்டை செயல்படுத்துகிறோம்

என்றால் (படிவம் எண்ணிக்கை ஷோ(); ) வேறு மெசேஜ்பாக்ஸ் ::ஷோ("மிக அதிகமான வடிவங்கள்!");

மற்றும் அதன் நீக்கம்:

என்றால் (FormCount) (F2ஐ நீக்கவும்; FormCount--; )

குழந்தை படிவங்களை தனித்தனியாக உருவாக்காமல், பெற்றோர் படிவத்திற்குள் உருவாக்க விரும்பினால், படிவம் 1 இன் பண்புகளில் அது ஒரு “மூதாதையர்” என்பதைக் குறிக்க வேண்டும் (IsMdiParent சொத்து = உண்மை என்பதை அமைக்கவும்), மேலும் குழந்தை படிவத்தைக் காண்பிக்கும் முன் F2->Show() ஆபரேட்டர், அதை குழந்தை படிவம்1 எனக் குறிக்கவும்:

F2->MdiParent = இது;

குழந்தை படிவத்திலிருந்து பெற்றோர் படிவ முறையை அழைக்கவும்

.cpp கோப்புகளைப் பயன்படுத்தாமல் நாம் செய்ய முடியாது, இது மோசமானதல்ல - .h கோப்புகளில் குறியீடு எழுதுவது பொதுவாக சரியான C அமைப்பை உடைக்கிறது :)

செயல்முறையை படிப்படியாக விவரிப்போம்.

1) 2 படிவங்கள் உள்ளன - படிவம் 1 மற்றும் படிவம் 2, படிவம் 1 இல் ஒரு பொத்தான் உள்ளது (பொத்தான்1, இரண்டாவது படிவத்தைத் திறக்கும்) மற்றும் லேபிள் (லேபிள்1, இங்கே நாம் உரையை மாற்றுவோம்). Form2 - button1ல், கிளிக் செய்யும் போது, ​​label1ல் உள்ள உரை மாறும்.

2) முதல் படிவத்திலிருந்து இரண்டாவதாகவும், இரண்டாவதாக முதல் படிவத்தை அணுக வேண்டியிருப்பதால், குறுக்கு குறிப்புகளின் சிக்கல் எழும் (Form1.h Form2.h ஐக் குறிக்கும் போது, ​​இது மீண்டும் குறிப்பிடுகிறது. Form1.h) . இதைத் தவிர்க்க, முதல் படிவத்தின் (Form1) குறியீட்டை, .h கோப்பிலிருந்து .cpp கோப்பிற்கு இரண்டாவது படிவத்தை (Form2) அணுகும். எனவே, நீங்கள் Form1.cpp கோப்பை உருவாக்க வேண்டும்.

3) Form1.h இல் ஒரு பொது அமைவு முறையை அறிவிக்கவும், இதன் மூலம் நீங்கள் label1 இன் உரையை மாற்றலாம் (#pragma endregion க்குப் பிறகு கோப்பின் முடிவில் குறியீட்டை எழுதலாம்):

பொது: வெற்றிடமான தொகுப்பு(சரம்^ உரை) (லேபிள்1->உரை = உரை;)

4) Form2.h கோப்பில் Form1.h (ஆரம்பத்தில்):

#"Form1.h" அடங்கும்

மேலும் பயன்பாட்டிற்காக முதல் படிவத்திற்கான இணைப்பை ஏற்று சேமிக்கும் ஒரு கட்டமைப்பாளரை உருவாக்கவும்:

Form2(Form1^ parent) ( InitializeComponent(); parentForm = parent; ) //உடனடியாக கீழே நீங்கள் இணைப்பை எழுதலாம்: தனிப்பட்ட: Form1^ parentForm;

5) படிவம்2 இல் உள்ள பொத்தானைக் கிளிக் செய்வதன் மூலம், பெற்றோர் படிவத்தின் அமைவு முறையை அழைப்போம்:

தனிப்பட்ட: கணினி:: வெற்றிட பொத்தான்1_கிளிக்(கணினி:: பொருள்^ அனுப்புநர், கணினி:: நிகழ்வு ஆர்க்ஸ்^ இ) ( parentForm->Set("hello from form2"); parentForm->Show(); this->Hide(); )

6) முதல் படிவத்தில் இரண்டாவது படிவத்தைத் திறக்க இது உள்ளது. இதைச் செய்ய, பொத்தான் கிளிக் ஹேண்ட்லரை Form1.h இலிருந்து Form1.cpp க்கு மாற்றுவோம், மேலும் .h கோப்பில் அதன் அறிவிப்பை மட்டும் விட்டுவிடுவோம்.

சில நேரங்களில் நிரல் செயல்படுத்தலின் போது ஒரு படிவத்தின் கூறுகளை மற்றொன்றிலிருந்து அணுகுவது அவசியம். எடுத்துக்காட்டாக, படிவம் 1 உள்ளது, அதிலிருந்து நாம் மற்றொரு படிவம் 2 ஐத் திறக்கிறோம், இப்போது, ​​படிவம் 2 இல் பணிபுரியும், பெற்றோர் படிவம் படிவம் 1 இன் கூறுகளை அணுக வேண்டும். இதைச் செய்ய நான் பல வழிகளைக் கண்டேன்.

1 வது முறை. பொது மாறிக்கான குறிப்பை அனுப்புதல்.

பெயர்வெளி WindowsApplication1 (பொது பகுதி வகுப்பு படிவம்1: படிவம் (பொது படிவம்1() (InitializeComponent(); ) தனிப்பட்ட வெற்றிட பொத்தான்1_கிளிக்(பொருள் அனுப்புநர், EventArgs e) ( Form2 frm = new Form2(); frm.but1 = this.button1; // அனுப்பவும் படிவத்தில் உள்ள பட்டனுக்கான இணைப்பு.Frm.ShowDialog() )

படிவம் 2 இல், இணைப்பு அனுப்பப்பட்ட மாறி இப்போது படிவம் 1 இலிருந்து பட்டன்1 க்கு ஒத்திருக்கும்

பெயர்வெளி WindowsApplication1 (பொது பகுதி வகுப்பு படிவம்2: படிவம் (பொது பொத்தான் ஆனால்1; // இந்த மாறியானது Form1 பொது படிவம்2() ( InitializeComponent(); ) தனிப்பட்ட void button1_Click(object sender, EventArgs e) ( but1. Text) இலிருந்து பட்டன்1க்கான இணைப்பைக் கொண்டிருக்கும் = "சோதனை";

2வது முறை. குழந்தை படிவத்திற்கான இணைப்பை அனுப்புதல்.

1 வது முறையில் சாராம்சம் தோராயமாக ஒரே மாதிரியாக இருக்கும். Form2ஐத் திறக்கும்போது, ​​நாம் பின்னர் மாற்றத் திட்டமிடும் உறுப்புக்கான இணைப்பை அதில் அனுப்புவோம்.

பெயர்வெளி WindowsApplication1 (பொது பகுதி வகுப்பு படிவம்1: படிவம் (பொது படிவம்1() (InitializeComponent(); ) தனிப்பட்ட வெற்றிட பொத்தான்1_Click(பொருள் அனுப்புநர், EventArgs e) ( Form2 frm = new Form2(this.button1); // பொத்தானுக்கு இணைப்பை அனுப்பவும் படிவம் 2 frm.ShowDialog() )

இப்போது Form2 இல் இந்த பட்டனுக்கான இணைப்பைக் கொண்டிருக்கும் ஒரு மாறியை உருவாக்க வேண்டும், அதன் மூலம் Form1 இல் உள்ள பொத்தானை அணுகுவோம் (வரிகள் 5,7,9 மற்றும் 15).

பெயர்வெளி WindowsApplication1 (பொது பகுதி வகுப்பு படிவம்2: படிவம் (தனிப்பட்ட பட்டன் பட்1; // இந்த மாறியானது, படிவம்1 பொது படிவம்2(பட்டன் ஆனால்)) பொத்தானுக்கான இணைப்பைக் கொண்டிருக்கும். = ஆனால்; )

3 வது முறை. முழு பெற்றோர் படிவத்திற்கான அணுகல்.

இதைச் செய்ய, நீங்கள் பல கோப்புகளில் மாற்றங்களைச் செய்ய வேண்டும், ஆனால் அதே நேரத்தில் நாங்கள் பெற்றோர் படிவத்தின் அனைத்து கூறுகளுக்கும் அணுகலைப் பெறுவோம், மேலும் முறை 1 இல் உள்ளதைப் போல ஒவ்வொரு உறுப்புக்கும் இணைப்பை அனுப்ப வேண்டிய அவசியமில்லை.

படி 1.கோப்பில் Program.csஒரு பொது மாறி f1 (வரி 5) உருவாக்கவும்.

பெயர்வெளி WindowsApplication1 ( நிலையான வகுப்பு நிரல் ( பொது நிலையான படிவம் 1 f1; // மாறி அது படிவம் 1 நிலையான வெற்றிட முதன்மை() ( Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); விண்ணப்பம்.Run1(புதுப்பித்தல்) ) )))

படி 2.திறப்பு Form1.Designer.csமற்றும் அதில், மற்றொரு படிவத்திலிருந்து அணுக வேண்டிய உறுப்புகளுக்கு, நாங்கள் மாற்றுகிறோம் தனிப்பட்டஅன்று பொது. எடுத்துக்காட்டாக, Form1 இல் பட்டன்1 மாற்றங்களைச் செய்யலாம்.

பொது அமைப்பு.Windows.Forms.பட்டன் பொத்தான்1; // தனிப்பட்டது பொது என்று மாற்றப்பட்டது

படி 3. Form1 ஐ உருவாக்கும் போது, ​​f1 என்ற மாறிக்கு இந்தப் படிவத்திற்கான இணைப்பை வழங்குகிறோம் (வரி 7)

நேம்ஸ்பேஸ் WindowsApplication1 (பொது பகுதி வகுப்பு படிவம்1: படிவம் (பொது படிவம்1() (Program.f1 = இது; //இப்போது f1 ஆனது Form1 InitializeComponent(); ) தனிப்பட்ட வெற்றிட பொத்தான் frm = புதிய படிவம்2();

படி 4.இப்போது முற்றிலும் எந்தப் படிவத்திலிருந்தும் அல்லது எந்த வகுப்பிலிருந்தும் நீங்கள் Form1 இல் உள்ள பட்டன்1 உறுப்பை அணுகலாம்: Program.f1.button1. எடுத்துக்காட்டாக, Form2 இல் உள்ள பட்டன் படிவம்1 இல் உள்ள பொத்தான் உரையை மாற்றட்டும்:

பெயர்வெளி WindowsApplication1 (பொது பகுதி வகுப்பு படிவம்2: படிவம் (பொது படிவம்2() (InitializeComponent(); ) தனிப்பட்ட வெற்றிட பொத்தான்1_Click(பொருள் அனுப்புநர், EventArgs e) ( Program.f1.button1.Text = "சோதனை"; // உரையை மாற்றவும் படிவ பொத்தான் படிவம்1)))

நிர்வாகி மூலம்.

C# கற்றல் மெதுவாக உள்ளது. ஆனால் அது உண்மையாக தொடர்கிறது. சமீபத்தில் தான் ஐ
விஷுவல் சி#ல் ஒரு படிவத்தில் இருந்து இன்னொன்றைத் திறப்பது எப்படி என்பதற்கான உதாரணத்தைக் கொடுத்தது. கொள்கையளவில், எல்லாம் எளிது.

இன்று பின்வரும் பணி தோன்றியது: பயன்பாட்டின் முக்கிய வடிவத்திலிருந்து ஒரு மாதிரி படிவத்தைத் தொடங்கவும், இந்த படிவம் சில தரவுகளை (உரை, சொத்து மதிப்புகள், முதலியன) முக்கிய படிவத்தில் உள்ள கட்டுப்பாடுகளுக்கு அனுப்ப வேண்டும். படிவங்களைப் பற்றி முந்தைய இடுகையில் விவரிக்கப்பட்ட முறையைப் பயன்படுத்தி இந்த சிக்கலை தீர்க்க முடியாது, ஏனெனில் இந்த வழக்கில், அனைத்து பண்புகளுக்கும் புதிய மதிப்புகளுடன் புதிய வடிவ பொருளை உருவாக்குகிறோம். அதிர்ஷ்டவசமாக, C# க்கு ஒரு அற்புதமான குப்பை சேகரிப்பான் உள்ளது... ஆனால் புள்ளி சேகரிப்பான் அல்ல, ஆனால் C# இல் குழந்தை படிவத்தை எவ்வாறு திறப்பது, பின்னர் அதிலிருந்து முக்கிய படிவத்திற்கு திரும்புவது எப்படி?

தொடங்குவதற்கு, ஆரம்ப (ஆரம்ப) தரவை அமைப்போம்.

அதனால். எங்களிடம் முக்கிய விண்ணப்பப் படிவம் உள்ளது:

இந்தப் படிவத்தில் TBDialog என்ற பெயருடன் ஒரு உரைப்பெட்டியும், நாம் கிளிக் செய்ய வேண்டிய பட்டன் பட்டனும் உள்ளது:

  1. பாஸ் மதிப்பு உரை பண்புகள் TBDialog முதல் TBMain வரை;
  2. fDialog ஐ மூடு;

இப்போது முழு செயல்முறையையும் வரிசையாகப் பார்ப்போம்.

முதலாவதாக, C# இல் உள்ள அனைத்து பண்புகள், மாறிகள் மற்றும் முறைகள் முன்னிருப்பாக மாற்றியமைக்கும் என்பதை எப்போதும் நினைவில் கொள்ள வேண்டும். தனிப்பட்டஎனவே, இரண்டாவது படிவத்தில் இருந்து முதல் கட்டுப்பாட்டுக்கு வருவதற்கு, TBMainக்கு ஒரு மாற்றி அமைக்க வேண்டும். பொதுசொந்தமாக. இதைச் செய்ய, படிவ வடிவமைப்பாளரில் உள்ள TBMain உறுப்பைத் தேர்ந்தெடுத்து, பண்புகள் சாளரத்திற்குச் செல்லவும் சொத்து மதிப்பை மாற்றவும் மாற்றியமைப்பவர்கள் உடன் தனிப்பட்டஅன்று பொது

இப்போது TBMain மற்ற பொருட்களில் தெரியும். தொடரலாம். மாதிரி பயன்முறையில் படிவத்தைத் திறக்க, ShowDialog() முறைக்கான இரண்டு விருப்பங்களில் ஒன்றைப் பயன்படுத்த வேண்டும்:

பொது உரையாடல் முடிவுகள் காட்சி உரையாடல்() ; பொது உரையாடல் முடிவுகள் ஷோ டயலாக்(IWin32Window உரிமையாளர்) ;

முதல் வழக்கில், முறையானது படிவத்தை மாதிரி உரையாடல் பெட்டியாகக் காண்பிக்கும், தற்போதைய செயலில் உள்ள சாளரம் உரிமையாளராக அமைக்கப்பட்டுள்ளது, இரண்டாவதாக, எங்கள் மாதிரி சாளரத்திற்கு எந்தப் படிவம் உரிமையாளராக மாறும் என்பதை நாம் சுயாதீனமாகக் குறிப்பிடலாம்.

எடுத்துக்காட்டாக, ShowDialog() முறையின் இரண்டாவது பதிப்பைப் பயன்படுத்தி, இரண்டாவது படிவத்தை மாதிரியாகக் காட்டலாம். இதைச் செய்ய, பின்வருவனவற்றை எழுதுவோம்:

இங்கே நான் மீண்டும் பயன்படுத்தினேன் முக்கிய வார்த்தை இது , இது தற்போதைய பொருளை சுட்டிக்காட்டுகிறது, அதாவது. முக்கிய படிவத்தை உரிமையாளராக அமைக்கவும் ( fMain) இப்போது எங்கள் சிக்கலைத் தீர்ப்பதற்கு நேரடியாகச் சென்று கேள்விக்கு பதிலளிப்போம்: ஒரு படிவத்திலிருந்து மற்றொரு படிவத்திற்கு மதிப்பை எவ்வாறு மாற்றுவது?ஒவ்வொரு கட்டுப்பாட்டுக்கும் ஒரு குறிப்பிடத்தக்க சொத்து உள்ளது உரிமையாளர் - இது பெற்றோரை சுட்டிக்காட்டுகிறது:

இப்போது நீங்கள் ப்ராஜெக்ட்டை இயக்கலாம் மற்றும் குழந்தை படிவத்தில் உள்ள உரைப்பெட்டியில் இருந்து வரும் உரையானது முதலில் உள்ள TextBox க்கு சரியாக மாற்றப்படுவதை உறுதிசெய்யலாம். ஒரு வேளை, எடுத்துக்காட்டில் விவாதிக்கப்பட்ட திட்டத்தின் மூலக் குறியீட்டை இடுகையிடுகிறேன்.