PDA

View Full Version : خواندن مقدار یک متغیر در یک فرم دیگر



na3er-faraji
یک شنبه 28 شهریور 1389, 13:31 عصر
توی یکی از فرم هام یک متغیر از نوع Public تعریف کردم . تو فرم دیگه وفتی مقدارشو میخونم 0 بر میگردونه؟؟؟؟

mmd2009
یک شنبه 28 شهریور 1389, 15:14 عصر
با سلام

حداقل کد یا برنامتون رو بذارید که بدونیم چیکار کردید؟؟؟

na3er-faraji
یک شنبه 28 شهریور 1389, 15:26 عصر
فرض کنید من یک فرم دارم که یک لیبل داره که توش یک عدده. حالا تو فرم دیگه میخام مقدار اون لیبل رو بخونم. چیکار باید بکنم؟؟؟

mmd2009
یک شنبه 28 شهریور 1389, 15:36 عصر
این سوال بارها پرسیده شده بود ولی با این حال جوابش رو میتونی اینجا (http://programming.ramiz.ir/index.php?option=com_content&view=article&id=39:----2---1----&catid=4:1389-05-31-00-46-55&Itemid=9)ببینی موفق باشی

na3er-faraji
یک شنبه 28 شهریور 1389, 16:20 عصر
دوست عزیز ممنون از سایتتون. ولی یک پیشنهاد برادرانه . عضو کردن اجباری کاربران برای خوندن مطالب اصلا روش جالبی نیست!!!

mmd2009
یک شنبه 28 شهریور 1389, 16:22 عصر
ولی کل سایت های جهان یا بهتر بگم اکثریتشون این کارو میکنن.

به هر حال طراحی اون سایت هم با من نبوده و من فقط فعالیت می کنم اونجا.

ysfali123
یک شنبه 28 شهریور 1389, 17:38 عصر
سلام
یک کلاس public باید درست کنی بعد متغییری که درونش استفاده میکنی string باید باشه (به خاطر label) این جوری متغیرت تو همه فرم ها استفاده میشه حالا اگه محتویات label عدد باشه میتونی convert کنی

na3er-faraji
چهارشنبه 31 شهریور 1389, 13:04 عصر
فرم1

public string UserName
{
get { return this.txtSellerName.Text; }
set { this.txtSellerName.Text = value; }
}

فرم2

frmAddBuyFactor addBuyFactor = new frmAddBuyFactor();
string name = addBuyFactor.UserName;

بازم کار نمیکنه؟؟؟ مشکل از چیه؟؟ این برنامه ای که دوستمون تو سایتش بود دقیقا به همین شکله و کار میکنه ولی ماله من نه؟؟؟

mmd2009
چهارشنبه 31 شهریور 1389, 13:26 عصر
برنامتو بذار تا برات درستش کنم

na3er-faraji
چهارشنبه 31 شهریور 1389, 22:55 عصر
تو فرم2 میخام مقداری که تو text change تو فرم یک بود با کلیک روی باتن نمایش داده بشه؟؟؟

MSN_Issue
چهارشنبه 31 شهریور 1389, 23:07 عصر
دوست عزیز فکر کنم اگه برای تابع سازنده ی فرم دومت یه پارامتر ورودی بذاری مشکلت حل میشه ...
این پارامتر میتونه همون رشته ای باشه که میخوای !

na3er-faraji
چهارشنبه 31 شهریور 1389, 23:15 عصر
دوست عزیز فکر کنم اگه برای تابع سازنده ی فرم دومت یه پارامتر ورودی بذاری مشکلت حل میشه ...
این پارامتر میتونه همون رشته ای باشه که میخوای !

میخاستم با پراپرتی اینکار رو بکنم. والا راه های دیگه ای هم هست

cheshm6k
چهارشنبه 31 شهریور 1389, 23:30 عصر
سلام.

اشتباه شما زمانیست که یک شی جدید از فرم اول ایجاد میکنید . باید به UserName همان فرم دسترسی پیدا کنید .

در رویداد کلیک باتن به جای شی جدید از Form1، این کد را وارد کنید:


Form1 f1 = (Form1)Application.OpenForms["Form1"];


موفق باشید.

mmd2009
پنج شنبه 01 مهر 1389, 01:20 صبح
مثال خودت رو حالا اینطوری که من نوشتم ببین شکل صحیح اینطوریه

اَرژنگ
پنج شنبه 01 مهر 1389, 05:36 صبح
مثال خودت رو حالا اینطوری که من نوشتم ببین شکل صحیح اینطوریه
صحیحه.
اشکال اصلی اینه که به جایه تمرکز به خصوصیات اشیا از واژه و طرز تفکرات غیره شیگرائی استفاده میشه.
دلیلش هم معمولاً این هست که هر برنامه‌نویسی یا با سی و یا پاسکال شروع کرده در همان طرز تفکرها گیر میکنه.
اگر سی را بعد از سی‌شارپ یاد میگرفتن راحتر پیشرفت میکردند
--------------------

سلام.

اشتباه شما زمانیست که یک شی جدید از فرم اول ایجاد میکنید . باید به UserName همان فرم دسترسی پیدا کنید .

در رویداد کلیک باتن به جای شی جدید از Form1، این کد را وارد کنید:


Form1 f1 = (Form1)Application.OpenForms["Form1"];


موفق باشید.
قبلاً در مورد اشتباه بودن این روش بحث شده بود.
--------------------

سلام
یک کلاس public باید درست کنی بعد متغییری که درونش استفاده میکنی string باید باشه (به خاطر label) این جوری متغیرت تو همه فرم ها استفاده میشه حالا اگه محتویات label عدد باشه میتونی convert کنی
به اشتباه بودن این روش هیچ شکی نیست، قبلاً بارها بحث شده.

na3er-faraji
پنج شنبه 01 مهر 1389, 08:39 صبح
دلیلش هم معمولاً این هست که هر برنامه‌نویسی یا با سی و یا پاسکال شروع کرده در همان طرز تفکرها گیر میکنه

با QBasic :چشمک:

cheshm6k
پنج شنبه 01 مهر 1389, 11:03 صبح
قبلاً در مورد اشتباه بودن این روش بحث شده بود.


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

موفق باشید.

اَرژنگ
پنج شنبه 01 مهر 1389, 13:03 عصر
اشتباه بودن این روش به چگونگی استفاده از آن برمیگردد. چه بسا اگر اشتباه بود، نویسندگان زبان، آن را به عنوان قابلیت نمی افزودند. اما استفاده از این روش، نسبت به احتیاج دوستمون و اینکه تنها یک شی از فرم اول ایجاد میشود، آن هم در زمان اجرای برنامه، اشتباه نیست .

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

فرض کنیم ۲ تا فرم ۱ در یک زمان با هم نشان داده میشند حالا با این روش کدام یکی بدست میاد؟ نداشتن صراحت در برنامه‌نویسی ، برنامه‌نویسی حساب نمیشه.


موفق باشید

cheshm6k
پنج شنبه 01 مهر 1389, 13:33 عصر
نوشته شده توسط cheshm6k http://barnamenevis.org/forum/images/buttons/viewpost.gif (http://barnamenevis.org/forum/showthread.php?p=1106696#post1106696)
اشتباه بودن این روش به چگونگی استفاده از آن برمیگردد. چه بسا اگر اشتباه بود، نویسندگان زبان، آن را به عنوان قابلیت نمی افزودند. اما استفاده از این روش، نسبت به احتیاج دوستمون و اینکه تنها یک شی از فرم اول ایجاد میشود، آن هم در زمان اجرای برنامه، اشتباه نیست .

موفق باشید.

دوست عزیز فرمایشتون درسته، اما اگه به حرف های من دقت میکردید،(مخصوصا به قسمتی که bold شده) منم همینو گفتم.


این روش ربطی به طراحی زبان ندارد، وجود قابلیت بعضی کارها دلیل بر درست بودنشان نیست.

مطمئن باشید اگر قابلیتی، کارایی نداشت، پدیدآورندگان زبان که صد در صد دلسوزتر از ما برای ارتقاء محصولشان هستند، آن را حذف میکردند .

موفق باشید.

mohsen_csharp
پنج شنبه 01 مهر 1389, 14:17 عصر
مطمئن باشید اگر قابلیتی، کارایی نداشت، پدیدآورندگان زبان که صد در صد دلسوزتر از ما برای ارتقاء محصولشان هستند، آن را حذف میکردند .
دوست عزیز همه برنامه نویسان میگن که استفاده از دستور goto مناسب نیست پس چرا این دستور در c# وجود داره مگه مهندسان مایکروسافت از این قضیه بی خبرند؟؟؟؟
دستور goto اگه درست ازش استفاده بشه هیچ مشکلی پیش نمیاره ولی وقتی دستورات بهتری هست چرا از goto استفاده کنم؟؟؟
پس بیاییم عادت کنیم که درست کد بزنیم وقتی روش ها و دستورات کاملتری هست، از Form1 f1 = (Form1)Application.OpenForms["Form1"];
استفاده نکنیم.

cheshm6k
پنج شنبه 01 مهر 1389, 14:41 عصر
دوست عزیز همه برنامه نویسان میگن که استفاده از دستور goto مناسب نیست پس چرا این دستور در C#‎‎ وجود داره مگه مهندسان مایکروسافت از این قضیه بی خبرند؟؟؟؟
دستور goto اگه درست ازش استفاده بشه هیچ مشکلی پیش نمیاره ولی وقتی دستورات بهتری هست چرا از goto استفاده کنم؟؟؟


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



پس بیاییم عادت کنیم که درست کد بزنیم وقتی روش ها و دستورات کاملتری هست، از Form1 f1 = (Form1)Application.OpenForms["Form1"];
استفاده نکنیم.

من اصراری به استفاده از این دستور ندارم، اما میگم میشه در جای خودش، ازش استفاده کرد و استفاده از اون اشتباه نیست.

موفق باشید.

اَرژنگ
پنج شنبه 01 مهر 1389, 15:36 عصر
دوست عزیز فرمایشتون درسته، اما اگه به حرف های من دقت میکردید،(مخصوصا به قسمتی که bold شده) منم همینو گفتم.


مطمئن باشید اگر قابلیتی، کارایی نداشت، پدیدآورندگان زبان که صد در صد دلسوزتر از ما برای ارتقاء محصولشان هستند، آن را حذف میکردند .

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

موفق باشید

na3er-faraji
پنج شنبه 01 مهر 1389, 15:51 عصر
آقا این روش رو فرم های باز فقط جواب میده؟؟؟ چون من وقتی میخام تو همون برنامه از فرم 2 بعد اینکه بسته شد یک مقدار رو به فرم 1 برگردونم کار نمیکنه؟؟؟ دقیقا همه چیز رو برعکس کردم. فقط یک فرقی داره که وقتی از فرم1 به فرم2 متغیر ارسال میشد فرم 1 بسته نمیشد. اما اینجا باید فرم2 بسته بشه؟؟؟

mmd2009
پنج شنبه 01 مهر 1389, 16:05 عصر
باید این کارو بکنی :

mmd2009
پنج شنبه 01 مهر 1389, 16:35 عصر
اگر هم دوست نداری فرم 2 بسته بشه ولی هم زمان مقدار بره تو فرم 1 میتونی از مثالی که زدم باز استفاده بکنی کلا با این روش ها میتونی به سادگی هر چیزی که معقوله رو ارسال بکنی از گرید ویو بگیر تا لیست و کمبو باکس

cheshm6k
پنج شنبه 01 مهر 1389, 16:51 عصر
نمیدانم این عقیده که طراحان یک زبان همه چیز را در نظر گرفتند از کجا گرفته شده

من نگفتم همه چیز رو در نظر گرفتن، اما مسلما وجود نیازها، باعث گنجاندن این قابلیت شده.


در ضمن اشکالی که به این روش گرفته میشه این است که زمانی روشهایی وجود دارند که برایه یادگرفتن و پیشرفت کردن در برنامه نویسی بر این روش میانبر برتری دارند چرا از اول تازه
کارها را به راه کور ببریم. هرکی که روشهایه درست را بلده میتونه از همین روش هم هرجایی که دلش خواست استفاده کند، ولی کسانی که تازه دارند یاد میگیرند اول باید روشهایه درست را یاد بگیریند و بعد از اینکه کار به روشهایه درست را یاد گرفتند وجود این گونه روشها را با اشکالاتی که میتونند ایجاد کنند بهشان نشان داده بشه.


فکر کنم اول باید در رابطه با کلمه "اشتباه" به توافق برسیم . این روش گفته های شما و دیگر دوستان رو نقض نمیکنه، بلکه یکی از روشهاست و مسلما اشتباه نیست (تحت شرایط گفته شده). دوستان هم (حتی مبتدیان) قدرت درک گفته ها و استدلالها رو دارند و نسبت به نیازشون از روشهای متفاوت استفاده میکنند.


در بالایه این تالار نوشته مرجع تخصصی، این روشی که پیشنهاد شده بود را هیچ متخصصی تجویز نمیکنه.

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

اَرژنگ
جمعه 02 مهر 1389, 00:56 صبح
فکر کنم اول باید در رابطه با کلمه "اشتباه" به توافق برسیم . این روش گفته های شما و دیگر دوستان رو نقض نمیکنه، بلکه یکی از روشهاست و مسلما اشتباه نیست (تحت شرایط گفته شده). دوستان هم (حتی مبتدیان) قدرت درک گفته ها و استدلالها رو دارند و نسبت به نیازشون از روشهای متفاوت استفاده میکنند.

من ادعایی مبنی بر متخصص بودن ندارم، فقط دانسته های اندکم رو در اختیار دوستان قرار میدم.
موفق باشید.
و اشکال هم همین است که برایه یاد دادن باید متخصص بود، با مطالعه ، تفکر و دانستن باید کمک کرد. با دلسوزی نمیشه چیزی را که یکی خودش دسر نمیدانه به دیگران یاد بده. چرا کسی که در زبان فرانسه تخصص ندارد نمیره به دیگران یاد بده؟ فرق یاد دادن با دانستن و ندانستن چیه ؟
من در مواردی که تخصص ندارم کمک نمیکنم و بقیه را هم با خودم به بیراهه نمیکشانم.
بله درست میفرمائید باید در مورد بکار بری کلمه اشتباه به توافق برسیم. اشتباه یعنی استفاده از روشهایه بی اساس و پایه.
در مورد اینکه روش کار میکنه و جواب هم میده (بلا به حالتهایه بخصوص) شکی نیست. ولی اشکالی که به این کار گرفته میشه این که شبیه به استفاده از یک متغییر سراسریه. ما داریم سعی میکنیم که اول با روشهایه اصولی (استفاده از پراپرتی) و داشتن کنترل بر اشیایه برنامه‌نویسی تازه‌کارها را راه بندازیم.
یک اشکال دیگر که به این روش گرفته میشه استفاده از رشته‌هاست و اینکه اشکال تا زمان اجرا و زمانی که کد صدا زده نشه مشکلش معلوم نمیشه، مثلاً اگر نام فرم تغییر کند برنامه‌نویس باید یادش باشد که در اون کد اسمش را هم اضافه کنه. حالا اگر از این گونه کدها در چند جا استفاده شده باشد در زمان کمپایل متوجه نمیشیم. یکی از قوتهایه سی‌شارپ پیدا کردن مشکلات در زمان کمپایل هست و با این گونه روشها ما این قوت را از دست میدیم.
شاید یکی این روش را در پروژه‌هایه شخصی کوچیک استفاده کند ولی همانطوری که گفته شد در روشهایه معتبر جایی ندارد.
در ضمن منظور اینکه یکی متخصص هست و یا نیست نبود چونکه بهترین متخصصها هم گاهاً اشتباه میکنند ولی روشها را میشه در گروه‌های مختلف تقسیم کرد.
روشهایی که گاهاً و تحت شرائط خاص کار میکنند روش نیستند، همانطوری که بعضی ماتریکسها را میشه جاشان را ضرب عوض کرد و همان جواب را گرفت، در حال کلی درست نیست و کسی با فرض اینکه A×B = B×A مسئله را حل نمیکند.

TeacherMath
جمعه 02 مهر 1389, 09:20 صبح
شما می تونید این استرینگ رو استاتیک تعریف کنید.و بعد در فرم مقصد از طریق نام کلاس مبدا به متغییر دسترسی داشته باشین.

اَرژنگ
جمعه 02 مهر 1389, 09:45 صبح
شما می تونید این استرینگ رو استاتیک تعریف کنید.و بعد در فرم مقصد از طریق نام کلاس مبدا به متغییر دسترسی داشته باشین.
به اشتباه بودن این روش هیچ شکی نیست، قبلاً بارها بحث شده.

na3er-faraji
جمعه 02 مهر 1389, 11:46 صبح
دوستان من کارم راه افتاد. اما هنو یه چیز رو نفهمیدم. چرا ما مثلا وقتی میخایم از فرم1 مقدار بدیم به فرم2 تعریف پراپرتی توی فرم2 انجام میگیره؟؟؟ مگه فرقی میکنه؟؟؟ چرا نمیشه تو همون فرم1 تعریفش کرد و مقدار داد و تو فرم2 خوندش؟؟؟ یک کم گیج شدم؟؟؟ یه تفر میتونه ساده واسم توضیح بده؟؟؟

فرم1

public string a { get; set; }

private void btnShow_Click(object sender, EventArgs e)
{
a = "salam";
Form2 f2 = new Form2();
f2.ShowDialog();
}


فرم2

private void Form2_Load(object sender, EventArgs e)
{
Form1 f1 = new Form1();
MessageBox.Show(f1.a);
}

چرا این غلطه؟؟؟

cheshm6k
جمعه 02 مهر 1389, 13:29 عصر
از مدیران سایت و شخص بوجود آورنده تاپیک (swi)، به خاطر تبدیل این تاپیک به آف تاپیک، نسبت به سهم خودم، عذر خواهی میکنم.


و اشکال هم همین است که برایه یاد دادن باید متخصص بود، با مطالعه ، تفکر و دانستن باید کمک کرد. با دلسوزی نمیشه چیزی را که یکی خودش
دسر نمیدانه به دیگران یاد بده. چرا کسی که در زبان فرانسه تخصص ندارد نمیره به دیگران یاد بده؟ فرق یاد دادن با دانستن و ندانستن چیه ؟
من در مواردی که تخصص ندارم کمک نمیکنم و بقیه را هم با خودم به بیراهه نمیکشانم.


نپذیرفتن مسئولیت سنگین این لقب به خاطر معنیه اونه :


معنیه کلمه متخصص در لغت نامه دهخدا :
خاص گرديده . (آنندراج ). تخصيص شده و براي خود قبول کرده شده و مخصوص گشته . (ناظم الاطباء): بنده مخلص و خادم متخصص احمد بن عمر بن علي النظامي العروضي السمرقندي . (چهارمقاله ). داعي مخلص و هواخواه متخصص در وصف بهار اين قصيده آبدار گفت . (راحةالصدور).
•خصوصيت دارنده . (غياث ).
•علامت مخصوص نهاده شده . (ناظم الاطباء) (از فرهنگ جانسون ).
•شخصي که در شغلي يا فني تخصص و کارداني به کمال دارد: متخصص در امراض داخلي است . و رجوع به تخصص شود.


آشنایی با یک حرفه، بیشتر از دیگران، مارو متخصص نمیکنه.



قانون شماره 4
این سایت محلی جهت تبادل اطلاعات در رابطه با اهداف سایت می باشد. پس لطفاً تنها مطالب مربوط به این موضوع و یا موضوعات وابسته به آن را مطرح کنید.

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


بله درست میفرمائید باید در مورد بکار بری کلمه اشتباه به توافق برسیم. اشتباه یعنی استفاده از روشهایه بی اساس و پایه.


لطفا تفسیر به رای نکنید :


معنی کلمه اشتباه در لغتنامه معین : 1 ـ پوشيده شدن . 2 ـ مانند شدن چيزي به چيز ديگر. 3 ـ سهو، خطا.

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


در مورد اینکه روش کار میکنه و جواب هم میده (بلا به حالتهایه بخصوص) شکی نیست. ولی اشکالی که به این کار گرفته میشه این که شبیه به استفاده از یک متغییر سراسریه. ما داریم سعی میکنیم که اول با روشهایه اصولی (استفاده از پراپرتی) و داشتن کنترل بر اشیایه برنامه‌نویسی تازه‌کارها را راه بندازیم.


باید تعریف متغیر سراسری رو بازنویسی کنن!!! کار شما، بسیار ارزنده و قابل احترام، لیکن دانستن روشی علاوه بر آن روشها، منجر به متوقف شدن دوستان نخواهد شد .


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


ایکاش حداقل یکبار با این دستور کار میکردید. به جای نام فرم بصورت رشته، میتوانید اندیس فرم را قرار دهید.

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

موفق و پیروز باشید.

جواب swi :

پراپرتی یک ویژگی یا خصوصیت است . و با ایجاد کردن شی جدید، اون شی دارای خصوصیت مخصوص بخود خواهد بود . برای دسترسی به پروپرتی یک شی باید خود آن شی را در اختیار داشت .
موفق باشید.

na3er-faraji
جمعه 02 مهر 1389, 14:07 عصر
پراپرتی یک ویژگی یا خصوصیت است . و با ایجاد کردن شی جدید، اون شی دارای خصوصیت مخصوص بخود خواهد بود . برای دسترسی به پروپرتی یک شی باید خود آن شی را در اختیار داشت .

ببخشید ها خنگ نیستم. من خیلی وقته برنامه نویسی کار میکنم. اما تازه از vb به c# سوییچ کردم واسه همین این مشکلات واسم به وجود اومده. کد منو ببینید تو صفحه قبل تو فرم 1 یک پراپرتی تعریف کردم

public string a { get; set; }


بعد وقتی روی دکمه کلیک میشه یک مقدار رو میریزم تو این پراپرتی و فرم2 را باز می کنم.

private void btnShow_Click(object sender, EventArgs e)
{
a = "salam";
Form2 f2 = new Form2();
f2.ShowDialog();
}

به محض باز شدن فرم2 یک یک متغیر از کلاس فرم1 تعریف میکنم و میخام اون مقدار رو تو یک مسیج باکس نشون بدم

private void Form2_Load(object sender, EventArgs e)
{
Form1 f1 = new Form1();
MessageBox.Show(f1.a);
}

اما کار نمیکنه. البته من کارم راه افتاده اما نمیتونم درک کنم مشکل این کد کجاست؟؟؟ من بدم میاد از اینکه چیزی رو که نمیفهمم تو برنامم به کار ببرم.

cheshm6k
جمعه 02 مهر 1389, 14:18 عصر
ببخشید ها خنگ نیستم.
دوست عزیز، من همچین جسارتی نکردم . اگه از حرفام اینطور برداشت کردید ،معذرت میخوام .

اما بصورت واضح جواب شما رو دادم .

private void Form2_Load(object sender, EventArgs e)
{
Form1 f1 = new Form1();
MessageBox.Show(f1.a);
}

شما در اینجا یک شی جدید ایجاد میکنید با ویژگیه جدید. این a مربوط به f1 میشه، نه فرمی که از اونجا فرم 2 رو نمایش دادید.

na3er-faraji
جمعه 02 مهر 1389, 14:28 عصر
شما در اینجا یک شی جدید ایجاد میکنید با ویژگیه جدید. این a مربوط به f1 میشه، نه فرمی که از اونجا فرم 2 رو نمایش دادید.
در حقیقت فک کنم مشکل من اینه که اول باید کلاس رو ساخت بعد مقدار داد تا بشه ازش استفاده کرد. اما من اول مقدار دادم بعد کلاسو ساختم و این باعث میشه که پراپرتی من خالی بشه؟؟؟درسته؟؟؟

cheshm6k
جمعه 02 مهر 1389, 14:47 عصر
در حقیقت فک کنم مشکل من اینه که اول باید کلاس رو ساخت بعد مقدار داد تا بشه ازش استفاده کرد. اما من اول مقدار دادم بعد کلاسو ساختم و این باعث میشه که پراپرتی من خالی بشه؟؟؟درسته؟؟؟
نه . به اینصورت نیست .

فرض کنید ما یک کلاس داریم به نام Class و این کلاس یه پراپرتی داره به نام a.



class Class
{
public string a { get; set; }
}

حالا ما دو تا شی از این کلاس به نامهای f1,f2 ایجاد میکنیم .


Class f1 = new Class();
Class f2 = new Class();
f1.a = "a";
f2.a = "b";
MessageBox.Show(f1.a + " " + f2.a);


نتیجه اینکه ما وقتی از یه کلاس شی جدیدی ایجاد میکنیم . برای متدها و متغیرهای این شی، حافظه جدید در نظر میگیره( البته استثناعاتی هم داره، مثلا اگر static باشن فقط یه نمونه ساخته میشه و بقیه اشیا به اون اشاره میکنن) . حالا وقتی تو یه فرم دیگه میخوای از پراپرتی یه شی استفاده کنی لازمه به شی اون دسترسی داشته باشی.

اَرژنگ
یک شنبه 04 مهر 1389, 13:47 عصر
آشنایی با یک حرفه، بیشتر از دیگران، مارو متخصص نمیکنه.

منطق این جمله را نمیشه درک کرد، مگر اینکه منظور از آشنایی فقط داشتن لقب در اون حرفه باشد نه داشتن مطالعه ، پژوهش شخصی و به شکل مداوم به دنبال درک عمیقتر بودن.




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

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




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

ببخشید، من فکر کنم حداقل ۳ اشکال مختلف اون روش را گفتم، اینکه در شرائط خاص اون جواب در جلوه کار میکند دلیل بر درست بودنش هم نیست.



باید تعریف متغیر سراسری رو بازنویسی کنن!!! کار شما، بسیار ارزنده و قابل احترام، لیکن دانستن روشی علاوه بر آن روشها، منجر به متوقف شدن دوستان نخواهد شد .

در برانمه‌نویسی چیزی به اسمه anti pattern وجود دارد، و این به اصتلاح "روش" در حقیقت ضد روش است. و اینکه "دوستان" با اینگونگ ضد روشها برایه مدت کوتاهی فکر کنند که مشکلشان حل شده و بعدا گیج و مبهوت به دنبال اشکالات بگردند کمک حساب نمیشه. به جایه اینکه با چوب کبریت و آدامس یک چیزی که ظاحر کار کند برایشان سرهم کنیم از همان اول فقط روشهایه معتبر برنامه‌نویسی را نشان بدیم بهتر نیست؟




ایکاش حداقل یکبار با این دستور کار میکردید. به جای نام فرم بصورت رشته، میتوانید اندیس فرم را قرار دهید.

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



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


دلیلهایی که اراعه شد و مشکلاتی که در مورد روش بیان شد به شخص من و یا دیگری ربطی ندارد. برنامه‌نویسی نقاشی و یا شعر نیست که به قضاوت اشخاص وابستگی داشته باشد. البته هر کی آزاد هست که از هر راهی دلش بخواهد استفاده کند ولی بیان ضد روش تحت عنوان یک روش معتبر به تازه‌کارها با به گمراهی کشاندنشان فرقی ندارد.
از اینکه در این مورد دیگر پاسخی نخواهید فرستاد متشکرم.
موفق باشید

netfa.ir
دوشنبه 29 آذر 1389, 22:02 عصر
منطق این جمله را نمیشه درک کرد، مگر اینکه منظور از آشنایی فقط داشتن لقب در اون حرفه باشد نه داشتن مطالعه ، پژوهش شخصی و به شکل مداوم به دنبال درک عمیقتر بودن.



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



ببخشید، من فکر کنم حداقل ۳ اشکال مختلف اون روش را گفتم، اینکه در شرائط خاص اون جواب در جلوه کار میکند دلیل بر درست بودنش هم نیست.


در برانمه‌نویسی چیزی به اسمه anti pattern وجود دارد، و این به اصتلاح "روش" در حقیقت ضد روش است. و اینکه "دوستان" با اینگونگ ضد روشها برایه مدت کوتاهی فکر کنند که مشکلشان حل شده و بعدا گیج و مبهوت به دنبال اشکالات بگردند کمک حساب نمیشه. به جایه اینکه با چوب کبریت و آدامس یک چیزی که ظاحر کار کند برایشان سرهم کنیم از همان اول فقط روشهایه معتبر برنامه‌نویسی را نشان بدیم بهتر نیست؟



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



دلیلهایی که اراعه شد و مشکلاتی که در مورد روش بیان شد به شخص من و یا دیگری ربطی ندارد. برنامه‌نویسی نقاشی و یا شعر نیست که به قضاوت اشخاص وابستگی داشته باشد. البته هر کی آزاد هست که از هر راهی دلش بخواهد استفاده کند ولی بیان ضد روش تحت عنوان یک روش معتبر به تازه‌کارها با به گمراهی کشاندنشان فرقی ندارد.
از اینکه در این مورد دیگر پاسخی نخواهید فرستاد متشکرم.
موفق باشید


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


به اشتباه بودن این روش هیچ شکی نیست، قبلاً بارها بحث شده.

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

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

na3er-faraji
دوشنبه 29 آذر 1389, 22:44 عصر
عزیزم ببخشید این تاپیک خیلی قدیمه و الان هم دیگه اقا ارژنگ فک میکنم سایت نمیان. بهتره این تاپیک ادامه پیدا نکنه.