PDA

View Full Version : سوال: ارتباط بین فرم و اشیاء فرم ها؟



ProWorld
شنبه 30 شهریور 1392, 13:34 عصر
با سلام و خسته نباشید به همه دوستان...

مدتی بود موضوع ارتباط بین فرم و اشیاء آنها ذهنم رو مشغول کرد. و در حال حاضر به مشکل بر خوردم.:اشتباه:


فرض کنید در فرم اصلی برنامه یک richTextBox وجود دارد حال با زدن یک دکمه (Boutton) فرم جدیدی باز شده::لبخند:

سوال؟؟؟ :متفکر:

1) به طور مثال در فرم جدید سه دکمه برای تغییر چینش ( richTextBox . Align) در فرم اصلی وجود دارد و می خواهیم با زدن هرکدام این تغییر اعمال شود؟

2) مثلا در فرم جدید از دستوراتی برای پیدا کردن یک کلمه در متن richTextBox . text استفاده کردیم و حال میخواهیم در صورت پیدا شدن کلمه ، همان کلمه در فرم اصلی Select شود؟

با سپاس فراوان از پاسخ هایی که خواهید داد...:قلب:

ProWorld
شنبه 30 شهریور 1392, 19:42 عصر
اساتید محترم ...؟

yashar666
شنبه 30 شهریور 1392, 20:20 عصر
خیلی مطرح شده جستجو کن

ProWorld
یک شنبه 31 شهریور 1392, 10:19 صبح
خیلی مطرح شده جستجو کن

بله دوست عزیز من قبل از ایجاد پست کلی جستجو کردم ولی اکثرا در باره ارسال اطلاعات از فرم اول به فرم دوم یعنی فرمی که هنوز اجرا نشده بود.:متفکر:
اما سوال من عکس این قضیه هست یعنی ( مثلا فرم یک باز شد و از طریق ان فرم دورا باز کردیم بدون بسته شدن فرم اول و قصد داریم با کلیک برروی دکمه فرم دو متن تکست باکس فرم یک سلکت شود).:عصبانی++:

farhad.k.t
یک شنبه 31 شهریور 1392, 11:08 صبح
برای جستجو:
int start=(Application.OpenForms["Form1"].Controls["rtb"] as RichTextBox).Find (textBox1.Text);
if (start ==-1)
MessageBox.Show("یافت نشد");
else
{
(Application.OpenForms["Form1"].Controls["rtb"] as RichTextBox).Select(start , textBox1.TextLength);
(Application.OpenForms["Form1"].Controls["rtb"] as RichTextBox).SelectionColor = Color.Blue;
}

برای تغییر چینش:

private void button1_Click(object sender, EventArgs e)
{
(Application.OpenForms["Form1"].Controls["rtb"] as RichTextBox).SelectionAlignment = HorizontalAlignment.Left;
}

private void button2_Click(object sender, EventArgs e)
{
(Application.OpenForms["Form1"].Controls["rtb"] as RichTextBox).SelectionAlignment = HorizontalAlignment.Center;
}

private void button3_Click(object sender, EventArgs e)
{
(Application.OpenForms["Form1"].Controls["rtb"] as RichTextBox).SelectionAlignment = HorizontalAlignment.Right;
}

ProWorld
یک شنبه 31 شهریور 1392, 11:35 صبح
(Application.OpenForms["Form1"].Controls["rtb"] as RichTextBox).SelectionAlignment = HorizontalAlignment.Center;

ممنون از راهنمایی بسیار مفید تون.
اما در کدی که ذکر کردین با وجود این که ["control["rtb رو ذکر کردین چرا as RichTextBox این قسمت رو نوشتید؟
و اینکه چرا Form1 و rtb توی [] قرار دادید؟
و چرا(Application.OpenForms["Form1"].Controls["rtb"] as RichTextBox) توی () هست؟
با تشکر...

farhad.k.t
یک شنبه 31 شهریور 1392, 11:53 صبح
به نکته ی خوبی اشاره کردید...
-همانطور که می بینید ما در این کد به یک کنترل اشاره می کنیم که می تواند شامل هر کنترلی باشد اگر بدون استفاده از کلمه کلیدی as این کار را انجام دهید ، کامپایلر آن را به عنوان یک کنترل عمومی خواهد شناخت که خاصیت selectionAlignment جزو این خواص نیست و ما باید به کامپایلر بگوییم که این کنترل را از نوع RTB در نظر بگیرد تا بتوانیم به تمامی خواص یک RTB دسترسی داشته باشیم...
-همانطور که اشاره شد، در یک فرم مجموعه ای از کنترل ها قرار دارند که باید یک Identifier یا شناسنده به آن بدهیم تا کامپایلر متوجه شود که منظور ما کدام کنترل است که در این جا هم می توانیم از Index به عنوان یک شناسنده استفاده کنیم و هم نام کنترل...
-باید این عبارت را به عنوان یک عبارت واحد در نظر بگیریم که برای این کار گذاشتن () الزامی است و عبارت داخل پرانتز همان RTB مورد نظر شماست...(در واقع از این به بعد کامپایلر با عبارت داخل پرانتز مانند یک RTB رفتار خواهد کرد)

ProWorld
یک شنبه 31 شهریور 1392, 13:54 عصر
به نکته ی خوبی اشاره کردید...
-همانطور که می بینید ما در این کد به یک کنترل اشاره می کنیم که می تواند شامل هر کنترلی باشد اگر بدون استفاده از کلمه کلیدی as این کار را انجام دهید ، کامپایلر آن را به عنوان یک کنترل عمومی خواهد شناخت که خاصیت selectionAlignment جزو این خواص نیست و ما باید به کامپایلر بگوییم که این کنترل را از نوع RTB در نظر بگیرد تا بتوانیم به تمامی خواص یک RTB دسترسی داشته باشیم...
-همانطور که اشاره شد، در یک فرم مجموعه ای از کنترل ها قرار دارند که باید یک Identifier یا شناسنده به آن بدهیم تا کامپایلر متوجه شود که منظور ما کدام کنترل است که در این جا هم می توانیم از Index به عنوان یک شناسنده استفاده کنیم و هم نام کنترل...
-باید این عبارت را به عنوان یک عبارت واحد در نظر بگیریم که برای این کار گذاشتن () الزامی است و عبارت داخل پرانتز همان RTB مورد نظر شماست...(در واقع از این به بعد کامپایلر با عبارت داخل پرانتز مانند یک RTB رفتار خواهد کرد)
ببخشید
یه سوال کوچیک دیگه ؟
عبارت داخل [] باید حتماً داخل " " باشه؟
و اینکه modifiers کنترول مورد نظر باید Public باشه؟

farhad.k.t
یک شنبه 31 شهریور 1392, 14:18 عصر
بله زیرا نام فرم و کنترل را داریم وارد می کنیم که از نوع رشته هستند...
خیر لازم نیست...