PDA

View Full Version : تغییر مقدار یک متغیر ؟؟



dada_shi
سه شنبه 26 مرداد 1389, 02:37 صبح
سلام دوستان
من 2 تا فرم دارم و یک کلاس / تو فرم اولی یک شکلی گذاشتم و مکانش رو با تعریف 2تا متغیر به نام x , y که داخل کلاس جداگانه ای هستش مشخص کردم.حالا تو فرم 2 / 2 تا تکست باکس دارم و یک کلید و میخوام وقتی مقدار جدید داخله این تکست باکسها گذاشته شد و کلید زده شد /فرم 1 رو بازکنه و مکان اون عکس طبق داده ی من به تکست باکس عوض بشه.یعنی چطور میشه مقدار داخله کلاس از طریق فرم 2 عوض کرد؟
شرمنده دیگه/زیادی تازه کاریم.مرسی اگر کمک کنید.

vandermond
سه شنبه 26 مرداد 1389, 02:53 صبح
دوست عزيز
بايد توي كلاست دو خاصيت public براي اينها تعريف كني و بعد به اونها دسترسي داري اونها رو تغيير بدي تا متغيرهات تغيير كنن.
فعلا نميتونم بيشتر بگم (خوابم مياد). اگه واضح نبود بگو بعدا برات بگم كاملتر...

dada_shi
چهارشنبه 27 مرداد 1389, 14:25 عصر
اگر میشه به صورت کد برام مثال بزن.

amirh_karimifar
چهارشنبه 27 مرداد 1389, 14:38 عصر
باید در فرم 1 دو تا متغیر از نوع public تعریف کنی .
public int x , y ;
بعد تو فرم 2 اونا رو مقدار بده .

form1 f1 = new form1()
f1.x = 10 ;
f1.y = 20
f1.show();

vandermond
چهارشنبه 27 مرداد 1389, 15:01 عصر
من VS ندارم الان دوست عزيز :گریه:
جناب amirh_karimifar (http://barnamenevis.org/forum/member.php?u=109835) به متغيرها فكر ميكنم دسترسي نداريم (:متفکر: تا اونجايي كه يادم مياد اينطوري نميشه)
براي ايجاد خاصيت:

private int x;
public int X
{
get
{
return x;
}
set
{
x=value;
}
}
البته خط اول جزء خاصيت نيست(براي اينكه اساتيد مشكل نگيرن:چشمک:).

اينو مثلا تو فرم يك (حالا كلاسي كه ميخاي مثلا) مينويسي. و براي فراخاني به راحتي ميتوني بگي:

f1.X=20;
البته f1 همون فرم يك هست (يا يك نمونه جديد از اون)

vandermond
چهارشنبه 27 مرداد 1389, 15:07 عصر
الان كه سوالو دوباره خوندم يه چيز ديگه به ذهنم رسيد.
ببين دوست عزيز اگه ميخاي اول مقدار بدي بعد نمونه سازي بشه. ميتوني از متد سازنده (Constructor) فرم 1 كه در واقع داره بعد از فرم 2 نشون داده ميشه استفاده كني. ميتوني اونجا دو مقدار x,y رو بگيري و وقت نمونه سازي فرم 1 مقدار هايي كه ميخاي رو بدي بهش.
اميدوارم خوب توضيح داده باشم.
اگه مشكلي بود بگو

amirh_karimifar
چهارشنبه 27 مرداد 1389, 15:43 عصر
چرا ! میشه . من معمولا از این روش استفاده می کنم . جواب میده!

dada_shi
چهارشنبه 27 مرداد 1389, 18:34 عصر
من که قاطی کردم .راستش تازه کارم و اصلا هم نمیخوام سی شارپ رو ادامه بدم.فقط برای اینکه یک بازی ساده رو تموم کنم گیر کردم.حالا اگر دوستان میتونن اینی که گفتید رو تو یک فایل بزارید.البته اگر خیلی وقت گیر نیست.

amirh_karimifar
چهارشنبه 27 مرداد 1389, 22:57 عصر
آقا این روشی که من گفتم و امتحان کن . جواب میده

dada_shi
پنج شنبه 28 مرداد 1389, 15:47 عصر
باید در فرم 1 دو تا متغیر از نوع public تعریف کنی .
public int x , y ;
بعد تو فرم 2 اونا رو مقدار بده .

form1 f1 = new form1()
f1.x = 10 ;
f1.y = 20
f1.show();

این کار رو امتحان کردم ولی نشد.یعنی وقتی وارد فرم بعدی میشه باز هم مقدار رو 0 میگیره.اگر میشه خودت امتحان کن

dada_shi
پنج شنبه 28 مرداد 1389, 15:52 عصر
من VS ندارم الان دوست عزيز :گریه:
جناب amirh_karimifar (http://barnamenevis.org/forum/member.php?u=109835) به متغيرها فكر ميكنم دسترسي نداريم (:متفکر: تا اونجايي كه يادم مياد اينطوري نميشه)
براي ايجاد خاصيت:

private int x;
public int X
{
get
{
return x;
}
set
{
x=value;
}
}
البته خط اول جزء خاصيت نيست(براي اينكه اساتيد مشكل نگيرن:چشمک:).

اينو مثلا تو فرم يك (حالا كلاسي كه ميخاي مثلا) مينويسي. و براي فراخاني به راحتي ميتوني بگي:

f1.X=20;
البته f1 همون فرم يك هست (يا يك نمونه جديد از اون)

این هم جواب نمیده.مشکل اصلی اینه که 2 تا فرم داریم و 1 کلاس.متغیر x , y داخل کلاس هستش که میخوام از طریق فرم 2 مقدار بهش بدم و اون مقدار رو تو فرم 1 استفاده کنم.به فرم 1 که میرسه بازهم مقدار 0 میشه

dada_shi
جمعه 29 مرداد 1389, 05:34 صبح
کسی نیست جواب بده؟این سی شارپ عجب چیزه بیخودیه.قربون دلفی برم که هرجا هرسوالی در موردش بشه هزار نفر جواب میدن

اَرژنگ
جمعه 29 مرداد 1389, 06:18 صبح
کسی نیست جواب بده؟این سی شارپ عجب چیزه بیخودیه.قربون دلفی برم که هرجا هرسوالی در موردش بشه هزار نفر جواب میدن
این مفهوم ربطی به سی‌شارپ و یا دلفی ندارد، این مفهوم پایه‌ایست که ندانستنش به برنامه‌نویس برمیگرده نه به زبان برنامه نویسی.
این مطلب حداقل ۱۰۰ بار پرسیده شده و در همین تالار من حداقل ۲۰ بار جواب دادم.
یا هم پروژه کامل اینکه میگید کار نمیکنه را بفرستید کارش بندازند، از این سطح ساده‌تر دیگر نمیتونند جواب بدند.