PDA

View Full Version : سوال: قرار گرفتن داده از form2 به form1



saeed razaee
چهارشنبه 29 تیر 1390, 22:34 عصر
با سلام
من در برنامه خود دو فرم دارم form1 و form2 روی form1 یک textbox1 و یک 1button دارم و روی فرم form2 نیز یک textbox2 و یک button2 دارم وقتی روی 1button کلیک می کنم form2 باز می شود حال می خواهم وقتی روی button2 کلیک می کنم ضمن بسته شدن form2 متن یا عدد داخل textbox2 داخل textbox1 در form1 قرار بگیرد.لطفا راهنمایی فرمائید.

mahdi5121
چهارشنبه 29 تیر 1390, 22:50 عصر
سلام..
http://s1.picofile.com/file/6994395370/TwoForms.rar.html

مشخصه ی Modifiers تکست باکس فرم 1 رو Public کن.

saeed razaee
پنج شنبه 30 تیر 1390, 09:45 صبح
دوست عزیز کدهای فوق جواب نداد لطفا راهنمایی کنید.با تشکر

Rejnev
پنج شنبه 30 تیر 1390, 10:01 صبح
این سوال یکی از ساده ترین و آسون ترین و سطح ابتدایی ترین سوالاتیه که هر روز متاسفانه در انجمن مطرح میشه و علتش رو نمیدونم چرا قبل از ایجاد تاپیک یک جستجوی ساده انجام نمیشه که زود تر به جواب برسید...
به هر حال...
وقتی یک text box یا دکمه یا هر چیزی رو روی فرم قرار میدید، اون شی تبدیل میشه به یک فیلد در کلاس فرمی که در اون قرار داره.
کلاسهای دیگه هرگز به اون فیلد دسترسی ندارن، برای کلاسهای دیگه تنها متدها یا خصوصیات public و عمومیه یک فرم یا یک شیئه که دیده میشه.
کافیه یک خصوصیت جدید خودتون به فرم 2 اضافه کنید که ارتباط شما رو با تکست 2 برقرار کنه:


class form2:form
{
public TextBox MyTextBox2Property
{
get{return textbox2;}
//set{...}
}
}

حالا از داخل فرم 1 میتونید به این خصوصیت جدید دسترسی داشته باشید.
پیشنهاد بنده کمی مطالعه در مورد اصول شی گرایی هست...
اما پاسخ شما میتونه این باشه:

private void btn1_click(...)
{
frm2 f=new frm2();
f.ShowDialog();
MessageBox.Show(f.MyTextBox2Property.Text);
}

داخل فرم 2 هر کدی رو که میخواید بنویسید، مهم اینه که یک روزی بسته میشه، وقتی بسته شد، خط بعد از زمانی که فرم 2 رو باز کردید اجرا خواهد شد...

saman6384
پنج شنبه 30 تیر 1390, 10:05 صبح
به نظر من از event استفاده کن!
یه public event تو فرم 2 تعریف کن که وقتی باتن فرم2 رو میزنی فراخوانی بشه و تکست رو ورودی بگیره

تو فرم یک هم راحت میتونی از این event استفاده کنی دیگه!!

saman6384
پنج شنبه 30 تیر 1390, 10:33 صبح
البته اگه فرم هات زیاد هستش
بهتره از روش Office Automation Model استفاده کنی!!!
(اینو ادمین عزیز آقای موسوی چندین بار گفته):چشمک:

Farshid007
پنج شنبه 30 تیر 1390, 14:36 عصر
Office Automation Model دیگه چیه داش سامان؟

bestirani2
پنج شنبه 30 تیر 1390, 15:20 عصر
شما میتوانید سازنده فرم دوم رو overload کنید که یه آرگومان از نوع آبجکت های مد نظرتون رو هم بگیره و در زمانی که میخواهید یک شئ جدید از فرم دوم بسازید، آبجکت مورد نظر (در اینجا تکست باکس) رو هم به سازنده آن بفرستید.

saman6384
پنج شنبه 30 تیر 1390, 21:04 عصر
یه نوع مدل ارتباط بین فرمها


Implement a Microsoft Word-like Object Model for Your .NET Framework Application
(http://msdn.microsoft.com/en-us/library/ms973253.aspx)

اینم یکی از تشریح های آقای موسوی

لینک (http://barnamenevis.org/showthread.php?271352-%DA%AF%D8%B1%D9%81%D8%AA%D9%86-User-amp-Pass-%D9%81%D9%82%D8%B7-%DB%8C%DA%A9-%D8%A8%D8%A7%D8%B1&p=1200233&viewfull=1#post1200233)

saeed razaee
پنج شنبه 13 مرداد 1390, 18:31 عصر
سلام
لطفاً کمک کنید.در صورت امکان یک مثال عملی پیوست کنید تا از روی آن الگوبرداری شود. با تشکر

@000002@
پنج شنبه 13 مرداد 1390, 18:50 عصر
می تونی از tag استفاده کنی به نظر راحت تر باشه .
اینو تو فرم اول بنویس

form2 nf =new form2()
nf.tag()=textbox1.text
nf.show();
اینم تو فرم دوم

textbox2.text=this.tag().tostring();

saeed razaee
جمعه 14 مرداد 1390, 09:17 صبح
دوست عزیز این کدها را کجا بنویسم روی باتن که روی هر کدام از فرمها قرار داره؟

Farshid007
جمعه 14 مرداد 1390, 11:03 صبح
سلام..
http://s1.picofile.com/file/6994395370/TwoForms.rar.html

مشخصه ی Modifiers تکست باکس فرم 1 رو Public کن.
این کار جواب نمیده داداش
وقتی فرم 2 باز میشه خاصیت تکست تکس باکس رو خالی میفرسته
چرا شو نمی دونم!!!!!

Farshid007
جمعه 14 مرداد 1390, 11:15 صبح
شما می تونید یه رشته رو بصورت استاتیک تعریف کنید و تو فرم 2 اون رو بگیرید
مثال:

@000002@
شنبه 15 مرداد 1390, 01:09 صبح
دوست عزیز این کدها را کجا بنویسم روی باتن که روی هر کدام از فرمها قرار داره؟
آره دوست عزیز
تو حالت عادی که می خوای که یه دکمه فرم 2 نمایش بده اون tag اضافه کن بعد تو فرم دوم قسمت لودش کد پایینی رو بنویس

saman6384
شنبه 15 مرداد 1390, 01:32 صبح
این تگ که گفتی
از فرم یک میفرسته به 2؟؟

saman6384
شنبه 15 مرداد 1390, 01:40 صبح
من همچنان روشی که گفتم رو پیشنهاد میدم

استفاده از event

اینجوری به قول آقای موسوی ماکارونی درس نمیشه :چشمک:


---------------------------------------------------------

مثالی که گذاشتم یه فرم اصلی دارع با 2 3 تا فرم که تو فرم اصلی ساخته میشه
تو هر کدوم که یه چیری بنویسی تو فرم اصلی نوشته عوض میشه!!
همه فرما رو باز کن
بعد تست کن :چشمک:

mmd2009
شنبه 15 مرداد 1390, 04:11 صبح
با سلام

این جمله زیر اختصیار مقاله ی اقای کیانی است که منتشر کده بودن و اگر جستجو کنید مطلب فوق به به شکل کامل تری با مثال های زیاد مشاهده می کنید

یکی از اصل های مهم برنامه نویسی شی گرا کپسوله سازی هست و استفاده از پراپریتی برای پاس دادن داده ها به ابجکت ها یکی از بهترین راه ها هست به دلیل اینکه خاصیت کپسوله سازی رو به خوبی محیا می کند


شاید بپرسید اقای کیانی کی هست؟؟!! خب ایشون یکی از مدیران سابق سایت برنامه نویس هستن که مطالب ایشون چه در کتاب ها ( الکترونیکی و غیر الکترونیکی) یا چه در سایت ها به صورت رایگان مورد استفاده قرار می گیرد و بی شک جز برترین کاربران سایت برنامه نویس هستن و بنده احترام زیادی براشون قائل هستم و حیف که دیگه نمیتونیم از کمکهای ایشون استفاده بکنیم.

موفق باشید

@000002@
شنبه 15 مرداد 1390, 04:14 صبح
این تگ که گفتی
از فرم یک میفرسته به 2؟؟
هر فرمی یه تگ داره و ما میایم تگ این فرم و که یه نمونه ازش میسازیم و برابر با textbox فرم حال حاظر قرار میدیم بعدش تو فرم دوم میایم میگم که چی ؟ tagی که مقداری درونت قرار دادم اون بریز توی textbox فرم 2 به شکل زیر

private void button1_Click(object sender, EventArgs e)
{
Form2 nf = new Form2();
nf.Tag = textBox1.Text;

nf.ShowDialog();
}


private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text = this.Tag.ToString();
}

saman6384
شنبه 15 مرداد 1390, 20:55 عصر
هر فرمی یه تگ داره و ما میایم تگ این فرم و که یه نمونه ازش میسازیم و برابر با textbox فرم حال حاظر قرار میدیم بعدش تو فرم دوم میایم میگم که چی ؟ tagی که مقداری درونت قرار دادم اون بریز توی textbox فرم 2 به شکل زیر

private void button1_Click(object sender, EventArgs e)
{
Form2 nf = new Form2();
nf.Tag = textBox1.Text;

nf.ShowDialog();
}


private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text = this.Tag.ToString();
}

ممنون از توضیحت
ولی
اینجا بحثه فرستادن از 2 به یک هستش!:لبخند:

@000002@
یک شنبه 16 مرداد 1390, 00:38 صبح
ممنون از توضیحت
ولی
اینجا بحثه فرستادن از 2 به یک هستش!:لبخند:
بازم میشه با همین روش این کارو انجام داد

Amir Oveisi
یک شنبه 16 مرداد 1390, 01:28 صبح
بعد از خوندن همه پست ها واقعا متاسف شدم! سوالی که بیش از 50 بار (شاید بیشتر) مطرح شده و هر بار با وجود اینکه پاسخ داده شده، باز هم شاهد این هستیم که اولا کاربران محترم هیچ علاقه ای به جستجو ندارند و دوما بقیه کاربران هم با پاسخ های نادرست، پرسشگر رو به مسیر نادرست هدایت می کنند...

جواب سوال شما:
(Application.OpenForms["yourFirstFormName"].Controls["YourTextBoxName"] as TextBox).Text = form2TextBox.Text;

این کد رو در event کلیک button تون در فرم دومتون بنویسید!
public کردن کنترل ها کار درستی نیست!
متغیر static تعریف کردن بدون دلیل منطقی کار درستی نیست!
property اضافه تعریف کردن کار درستی نیست!
جسنجو نکردن کار درستی نیست!
پاسخ دادن به سوالی که بلد نیستیم کار درستی نیست!
...

mmd2009
یک شنبه 16 مرداد 1390, 02:10 صبح
متن سوال رو یکبار دیگه بخونید فکر کنم دقیق نخوندید.!!!؟!!!!

استفاده از پراپریتی رو با چه منطقی شما میگید کار اضافه خوش حال میشیم در چنین موردی که این دوستمون پرسیدن بهمون بگید

منم واقعا متاسفام چطوری بدون هیچ دلیلی و با یک جمله خشک( property اضافه تعریف کردن کار درستی نیست!) و ندان دلیل منطقی به پاسخ خودتون از این موضوع گذشتید با این لحن سخن و احساس دانایی کردن

Amir Oveisi
یک شنبه 16 مرداد 1390, 13:43 عصر
زمانی که یک قابلیتی وجود دارد که دقیقا برای این هدف هم طراحی شده، که شما بتونید به راحتی و با رعایت اصول شی گرایی، به فرم های باز برنامتون، و کنترل های اونا دسترسی داشته باشید، و شما از اون استفاده نمی کنید و به جاش property تغریف می کنید، در واقع دارید کلاه شرعی میزارید سر برنامه، چون نمیخواید خود کنترل رو public کنید، یه property تعریف می کنید که public باشه. فرض کنید فرم شما دارای 100 تا کنترل هست که همه اونا قراره مقدار بگیرند، اون موقع شما باید 100 تا property جدید به اون فرمتون اضافه کنید؟! یا اصلا فرض کنید برنامه شما ممکنه به شکل dynamic کنترل های جدید بهش اضافه بشه، اون موقع property های مربوط به اونا رو چیکار قراره بکنید؟ و مشکلات بسیاری از این قبیل ممکنه براتون پیش بیاد.
دقت داشته باشید که صرفا حل شدن یک مسئله دلیل بر صحیح بودن یک راه حل نیست. شما باید راه حلی رو انتخاب کنید که بتونه مسئله رو در شرایط مختلف و scale های متفاوت با یک کیفیت حل کنه، نه اینکه فقط به دنبال حل در شرایط خاص باشید.
موفق باشید

پ.ن
دلیلی برای حرفام نیاوردم چون منتظر بودم در ابتدا دلایل بقیه رو بشنوم و روشون بحث کنیم و بعد دلیل خودم رو عنوان کنم، وگرنه اگر قرار نبود دلیلی داده بشه، پست به دلیل تکراری بودن حذف شده بود یا قفل شده بود :)

saman6384
یک شنبه 16 مرداد 1390, 14:55 عصر
مزایای این روشتون رو نسبت به روشی هم که من گذاشتم می فرمایید!؟:متفکر:

با تشکر :لبخندساده:

Amir Oveisi
یک شنبه 16 مرداد 1390, 15:17 عصر
سلام
بنده فرصت بررسی روش شما رو نداشتم و بنابراین در موردش هم اظهار نظر نکردم و الانم نمیتونم مقایسه اش کنم با روشی که خودم عرض کردم.
اما میتونم توضیحی در مورد روش خودم بدم:
بحث اصلی در این مساله اینه که ما چطور به شی مورد نظر از فرم مون که الان در حافظه هست دسترسی داشته باشیم. یک Design Pattern هست به اسم Singletone که روشی رو پیشنهاد میده که در اون، از یک کلاس فقط یک نمونه در یک لحظه در حافظه میتونه وجود داشته باشه. به این صورت، در مورد این مساله اگر بخوایم نگاه کنیم، اگر ما بتونیم تضمین بدیم که تنها یک نمونه از مثلا فرم 1 برنامه ما الان در حافظه وجود داره، و بتونیم به اون نمونه دسترسی داشته باشیم، خیلی راحت میتونیم کارهایی رو که لازم داریم رو با اون فرم انجام بدیم. استفاده از این design pattern این تضمین رو به ما میده و در این روشی هم که بنده عرض کردم، از singletone استفاده شده (در پشت قضیه) و نتیجه به صورت یک indexer در اختیار برنامه نویس قرار داده شده. در واقع وقتی ما می نویسیم Application.OpenForms["..."] داریم به اون نمونه ای از فرم ها که در حافظه است و دارای یک اسم خاص است، دسترسی پیدا می کنیم، بر اساس الگوی singletone.

امیدوارم تونسته باشم توضیح بدم.
موفق باشید

mmd2009
یک شنبه 16 مرداد 1390, 16:45 عصر
حالا من نمی خوام بحث دلیل اوردن یا نیاوردن رو کش بدم ولی فرضا یکی رو میخوان دادگاهی کنن بهش میگن شما این جرم رو مرتکب شدی به این دلیل و اون دلیل و بعدش طرف میاد از خودش دفاع میکنه ولی شما کلا بدون محاکمه تناب دار رو گردن یارو بردی

بگذریم در مورد دلیلتون هم باید بگم من موقعی که تازه شروع کرده بودم برنامه نویسی رو اتفاقا همین روش شمارو رفتم و دقیقا یادم نیست تو کدوم پستم بود که این مطلب رو نوشتم برای کمک کردن و خیلی ها همین دلیل کلاه شرعی رو براش اوورون حالا من نمیگم حرف شما اشتباهه یا حرف اونا و کلا کاری به این چیزاش ندارم ولی کلا تو هر سایت حرفه ای برنامه نویسی هم که رفتم روش پراپریتی رو به کار می بردن برای انتقال مقادیر اینچنینی بین فرم ها حالا باز هم نمیشه گفت روش کدوم بهتره و در چه مواقعی کاربردی تره و اینو اگر کسی که خود این خاصیت رو درست کرده بگه اون موقع میشه به کاربردش مطمئن شد

ولی در کل روش استفاده از پراپریتی ها یک روش کلاه شرعی نیست و اتفاقا یکی از راه های خوب برای این کار هست و اگر یک نگاهی به تمامی پست های من در این مورد زده شده رو ببینید من همه جا گفتم حداقل معیار این کار استفاده از پراپریتی هست چون مطمئنم روش خیلی خوبیه ولی بهترین روش نیست من بیشتر به لحن سخن شما تعجب کردم و الا اتفاقا من خیلی دوست دارم یکی از با دلیل و منطق ایراد بگیره
خیلی از روش های بالا که خودتون گفتید ایراد دارن در هر موقعی کاربردی که بقیه روش های مثل خودشون ندارن رو اونا به راحتی و اصولی میتونن راه بیندازن و باز هم میگم و البته این حرف من نیست به هر حال من یک تازه کار هستم تو دنیای برنامه نویسی ولی باتجربه های سایت مثل اقای ارژنگ و کیانی که برای این دوستان احترام زیادی قائل هستم این روش ها رو پیشنهاد کردن و البته شاید الان حرف اونا به مرور زمان شاید هم تغییر کرده باشه ولی دقیقا یادمه اقا ارژنگ خیلی به این مسئله حساس بودن و بیشتر وقت ها هم شاکی میشدن و در اخر خودشون مثال میزدن و دقیقا استفاده از پراپریتی رو پیشنهاد میکردن برای همچین مسئله هایی
به هر حال منم دلایل خودم رو گفتم و به قول دوستان راه های رسیدن به یک هدف در برنامه نوسی به تعداد کل برنامه نویسان هست حالا هر روشی سادگی ، شیوایی ، اصولی ، غیر اصولی و ..... خودش رو داره در هر شرایط خاصی

موفق باشید

Amir Oveisi
یک شنبه 16 مرداد 1390, 17:02 عصر
من بیشتر به لحن سخن شما تعجب کردم
شما هم اگر جای من بودید و هر روز چندین بار شاهد بودید که تاپیکی در این رابطه ایجاد میشه، و هنوز هم کسانی هستند که میان و میگن یک متغیر استاتیک تعریف کن! ، مثل من جواب میدادید! من خیلی راحت میتونستم این تاپیک رو پاک کنم و بنویسم تکراری! اما واقعا ناراحت میشم وقتی می بینم این چنین مطالبی هزاران بار گفته میشه و هزاران بار هم نشنیده گرفته میشه! از قصد این تاپیک رو پاک نکردم تا توش بتونم این حرفارو بگم...!

در مورد استفاده از property ها، من با استفاده از property ها برای انتقال داده میان اشیا مختلف مشکلی ندارم، اتفاقا تایید و تاکید هم می کنم، اما در این مورد خاص به دلیل اینکه مکانیزم از پیش تعیین شده ای براش وجود داره که به نظر خودم قابلیت های بالاتری به نسبت استفاده از property داره (که در پست های قبلیم توضیح دادم) ، استفاده از property رو نمی پسندم برای این کار.

ممنون از شرکتتون در بحث :)
موفق باشید

mmd2009
یک شنبه 16 مرداد 1390, 17:47 عصر
شما هم اگر جای من بودید و هر روز چندین بار شاهد بودید که تاپیکی در این رابطه ایجاد میشه، و هنوز هم کسانی هستند که میان و میگن یک متغیر استاتیک تعریف کن! ، مثل من جواب میدادید! من خیلی راحت میتونستم این تاپیک رو پاک کنم و بنویسم تکراری! اما واقعا ناراحت میشم وقتی می بینم این چنین مطالبی هزاران بار گفته میشه و هزاران بار هم نشنیده گرفته میشه! از قصد این تاپیک رو پاک نکردم تا توش بتونم این حرفارو بگم...!

از این بابت که 100درصد با شما موافقم .

امیدوارم روزی برسه که تو انجمن برنامه نویس برای این کارا از خاصیت modifire یا متغیر استاتیک استفاده نشه و به جاش روشی که شما گفتید یا روش استفاده از پراپریتی رو دنبال بکنن و حداقل فکر کنم پراپرتی از اونا بهتر باشه :چشمک:

شما هم موفق باشید

saeed razaee
یک شنبه 16 مرداد 1390, 18:03 عصر
سلام
من از کدهایی که فرمودید استفاده کردم اما با این پیغام روبرو شدم مشکل کجاست؟73451

Farshid007
یک شنبه 16 مرداد 1390, 19:52 عصر
مطمئنی که همچین شی هایی وجود داره؟؟؟؟؟؟؟؟

Amir Oveisi
دوشنبه 17 مرداد 1390, 00:30 صبح
اسم فرمتون و تکست باکستون رو درست نوشتید؟

mmd2009
دوشنبه 17 مرداد 1390, 00:54 صبح
با اجازه اقای اوویسی

یک مثال ساده برای اینکار براون زدم امیدوارم به دردتون بخوره

saeed razaee
سه شنبه 18 مرداد 1390, 17:59 عصر
با سلام
کدهای فوق درست کار می کنند مشکل برنامه من این بود که textbox ها درون گروپ باکس بود و این پیغام را می داد پس این نکته مهمی که این کد زمانی درست کار می کند که تکس باکسها درون گروپ باکس نباشند.با تشکر

Amir Oveisi
سه شنبه 18 مرداد 1390, 22:26 عصر
پس این نکته مهمی که این کد زمانی درست کار می کند که تکس باکسها درون گروپ باکس نباشند.
خوب باز هم میتونین به تکسن باکس ها دسترسی داشته باشید.

FastCode
پنج شنبه 31 شهریور 1390, 17:51 عصر
درود
من نهار ماکارونی خوردم.(ولی ماکارونی الفبایی نبود)

برای این کار یه راه ساده ساده ساده وجود داره که
۱.
امنیت برنامه شما رو در برابر reflection به خطر نمیندازه.
۲.
خطاهای random نمیده
۳.
typesafe ه
۴.میتونید فکر کنید HardCode شده یا نشده(بستگی داره چطوری ازش استفاده کنید.)

class PlaceHolderForMyData
{
internal PlaceHolderForMyData(string Data1)
{
if(Data1 != null) this.Data1 = Data1;
}
bool isData1Set = false; string data1;
internal string Data1 { get { return data1; } set { if (isData1Set) return; data1 = value; isData1Set = true; } }
internal bool IsData1Set { get { return isData1Set; } }

bool isData2Set = false; string data2;
internal string Data2 { get { return data2; } set { if (isData1Set) return; data2 = value; isData2Set = true; } }
internal bool IsData2Set { get { return isData2Set; } }
}
class C1
{
void MyButtonClicked()
{
PlaceHolderForMyData PlaceHolderInstance = new PlaceHolderForMyData("Hello");
C2 MyC2 = new C2(PlaceHolderInstance);
MyC2.ShowDialog();
if(PlaceHolderInstance.IsData2Set)
{
MessageBox.Show("Data2 returned from form 'C2'");
}
}
}
class C2 : Form
{
PlaceHolderForMyData placeHolderInstance;
internal C2(PlaceHolderForMyData PlaceHolderInstance)
{
placeHolderInstance = PlaceHolderInstance;
if(placeHolderInstance.IsData1Set)
{
this.InputTextBox.Text = placeHolderInstance.Data1;
}
}
void Form_Closing(...FormClosingEventArgs Here..)
{
if(this.InputTextBox.Text != "")
{
placeHolderInstance.Data2 = this.InputTextBox.Text;
}
}
}

اگر از ShowDialog استفاده نمیکنید چند راه دارید:
۱.
از یک Action (Delegate) استفاده کنید.(به عنوان پارامتر به کلاس PlaceHolder بفرستید و وقتی کارتون در فرم C2 تموم شد فراخوانیش کنید)

۲.
از یک Wait(System.Threading) استفاده کنید(وقتی کارتون در فرم ۲ تموم شد Trig اش کنید)

۳.از یک Event استفاده کنید.

برای حالات معمولی روش یک بهتره.
اگر حجم پردازش بالاست و قراره از یک ترد دیگه استفاده بشه, بهتره از همون اول از روش دو استفاده کنید.
هیچ حالتی به ذهنم نمیرسه که روش سوم رو ترجیح بدم.

reza_magical
پنج شنبه 31 شهریور 1390, 20:26 عصر
خوب باز هم میتونین به تکسن باکس ها دسترسی داشته باشید.
من هم دقیقا به همین مشکل برخوردم

میشه بگید راه حلش چیه؟

(Application.OpenForms["form1"].Controls["textbox1"] as TextBox).Visible = false;
textbox توی panel گذاشتم ، و احتمالا برای همین خطا میده ، دقیقا همون خطایی که دوستمون گفتن:
object reference not set to an instance of an object.

نام فرم و تکست باکس هم صحیح نوشتم.

FastCode
یک شنبه 03 مهر 1390, 19:27 عصر
من هم دقیقا به همین مشکل برخوردم

میشه بگید راه حلش چیه؟

(Application.OpenForms["form1"].Controls["textbox1"] as TextBox).Visible = false;
textbox توی panel گذاشتم ، و احتمالا برای همین خطا میده ، دقیقا همون خطایی که دوستمون گفتن:
object reference not set to an instance of an object.

نام فرم و تکست باکس هم صحیح نوشتم.
پست بالایی رو خوندید؟
باور کن جوابه, سوال نیست.

reza_magical
دوشنبه 04 مهر 1390, 13:21 عصر
پست بالایی رو خوندید؟
باور کن جوابه, سوال نیست.

سلام
بله خوندم
سوال من چیز دیگه ای بود و جوابش این نبود، من می خوام از همون روشی که گفتم استفاده کنم ، ولی چون کنترلم توی پنل بود خطا میداد ، به هر حال مرسی از جوابت ، جوابی هم که دادی واسه ما مبتدیا کمی درک و فهمش سخته..
بازم ممنونم از توجهت.:قلب:

Amir Oveisi
چهارشنبه 06 مهر 1390, 12:26 عصر
من هم دقیقا به همین مشکل برخوردم

میشه بگید راه حلش چیه؟

(Application.OpenForms["form1"].Controls["textbox1"] as TextBox).Visible = false;
textbox توی panel گذاشتم ، و احتمالا برای همین خطا میده ، دقیقا همون خطایی که دوستمون گفتن:
object reference not set to an instance of an object.

نام فرم و تکست باکس هم صحیح نوشتم.

((Application.OpenForms["form1"].Controls["yourPanelName"] as Panel).Controls["yourTextboxName"] as TextBox).Visible = false;

البته در این مثال چون visible از کلاس control به panel و textbox رسیده، الزامی به cast کردن نیست و میشه اون قسمت های as Panel و as TextBox رو از کد حذف کرد.