روش های دسترسی به کنترل های یک فرم در فرم دیگر
یک از روش های دسترسی به کنترل های یک فرم در داخل فرم دیگر ایجاد یک خصوصیت از نوع کنترلی است که می خواهیم به ان دسترسی داشته باشیم. بهتر است که یک مثال بزنیم. یک برنامه ویندوزی ایجاد کرده و یک فرم دیگر به آن اضافه کنید. به فرم اول یک کنترل button به فرم دوم یک کنترل textbox اضافه کنید. حال فرض کنید که می خواهید در داخل فرم اول به این کنترل textbox فرم دوم دسترسی داشته باشید و مقادیری به آن ارسال کنید. برای این منظور ابتدا یک خاصیت از نوع رشته (چون textbox مقادیر رشته را قبول می کند) در فرم دوم ایجاد کنید.
public partial class Form2 : Form { public Form2() { InitializeComponent(); } public string Text { get { return this.textBox1.Text; } set { this.textBox1.Text = value; } } }
سپس بر روی دکمه در فرم اول دو بار کلیک کرده و کدهای زیر را در داخل آن بنویسید :
private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.Text = "Hello, world."; frm.ShowDialog(); }
برنامه را اجرا کرده و بر روی دکمه کلیک کنید :
مشاهده می کنید که مقدار “Hello World” به کنترل textbox ارسال می شود.
یک روش دیگر این است که خاصیت modifier کنترلی که قرار است به آن دسترسی داشته باشیم (textBox) را برابر Public قرار داده و در رویداد کلیک دکمه در فرم اول کد زیر را بنویسید :
private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); Control[] Control = frm.Controls.Find("textBox1", false); if (Control.Length > 0) { TextBox textBox = (TextBox)Control[0]; textBox.Text = "www.w3-farsi.com"; } frm.Show(); }
همانطور که در کد بالا مشاهده می کنید، نام کنترلی را که می خواهیم به آن دسترسی داشته باشیم را به متد find ارسال می کنیم. برنامه را اجرا و نتیجه را مشاهده کنید :
با سلام و عرض ادب لطفاً در صورت امکان برعکس این مطلب را نیز توضیح دهید. یعنی تغییر متن یک برچسب روی فرم اولی(اصلی) از طریق فرم دومی. با تشکر
مرسی خوب بود ولی واقعا میشد خلاصه تر گفت ..
خاصیت modifiers اون ابزار رو public میکنیم . داخل فرم 2 ، یک شی از فرم 1 میسازیم.
بازم ممنون
سلام
میخواستم بدونم چطور میشه ما از داخل یک فرم با استفاده از کنترل چک باکس بتونیم با کلیک برروی آن یک متنی را در بخش گزارش و در فرم گزارشمون اون متنو مشاهده کنیم و بلعکس نبینیم؟
تشکر
سلام، سوالتونو تو بخش پرسش و پاسخ مطرح بفرمایید
بله درست می فرمایید. درباره Label اشتباه کردم. سوالم را در بخش پرسش و پاسخ مطرح میکنم.
بسیار متشکرم
سلام
من دقیقا همین کدها را نوشتم فقط در فرم دوم بجای لیبل از تکست باکس استفاده کردم. مشکل این است که در فرم یک همواره مقدار اولیه تکست باکس نمایش داده می شود.
یعنی اگر مقدار تکست باکس را تغییر دهم در فرم یک این مقدار جدید نشان داده نمی شود و همان مقدار اولیه را نشان می دهد.
پیشاپیش از راهنمایی جنابعالی سپاسگزارم
سلام، ببخشید بنده متوجه نشدم، ما در کد بالا از Label استفاده نکردیم که شما به جاش Textbox بذارین. در ضمن ممنون میشم تو بخش پرسش و پاسخ سوالتونو همراه با عکس ، مطرح بفرمایید تا بهتر راهنماییتون کنم.
چطور از رویداد کلیک داخل یه فرم توی یه فرم دیگه استفاده کنم (یعنی تو فرم اول روی باتن کلیک شد رویدادش توی فرم دوم اتفاق بیفته)؟؟؟
ممنون میشم سوالتونو تو بخش پرسش و پاسخ سایت مطرح بفرمایید
سلام ی سوال داشتم
من دو عدد form دارم چجوری در form اول بفهمم labal که در form دوم دارم چیزی داخلش هست یا ن
سلام، ممنون میشم از این به بعد سوالتونو تو بخش پرسش و پاسخ مطرح بفرمایید. دکمه F7 رو رو فرم دومتون بزنید تا وارد محیط کدنویسی بشین و کد زیر رو بعد از سازنده فرم بنویسید :
بعد مثلا روی فرم اول دوبار کلیک کنید و تو رویداد Load فرم کد زیر رو بنویسید و برنامه رو اجرا و نتیجه رو ببینید :
الان اگه سوال رو تو بخش پرسش و پاسخ مطرح می کردین عکس هم واستون میذاشتم.
چرا میپیچونی داداش کنترل مورد نظرو تو فرم 1 modifiers ش رو public کن بعد یه شی از فرم 1 تو فرم 2 بساز حالا راحت قابل دسترسی هست تمام!
سلام
خواستم یه توضیحی بدم برای آقای نیما.
تو برنامه نویسی لزوما کوتاه نوشتن کد ها به معنای بهتر بودن و حرفه ای بودن نیست ، گاهی اوقات کوتاه نوشتن کد ها باعث کاهش خوانایی برنامه و افزایش خطا میشه.
استفاده از پراپرتی ها ( روش اول ) در برنامه سبب این میشه تا بتونیم دسترسی به کنترل های مورد نیاز فرم های دیگه رو محدود کنیم مثلا با این روش که فقط modifier رو public کنیم شخصی که از بیرون میخواد داخلش مقداری بریزه حواسش نباشه و به جای رشته مثلا عدد بریزه یا … ، البته در این مثلا شاید لزومی نداشته باشه و روشی که آقای نیما فرمودند جواب بده ولی در برنامه های بزرگ که یک تیم برنامه نویسی با هم کار میکنند و هر نفر یک بخش رو مینویسه میتونه باعث بروز خطا بشه.