کار با فرم ها در سی شارپ :: V i R u s Ʒ²

V i R u s Ʒ²

هک و امنیت

V i R u s Ʒ²

هک و امنیت

Virus 32

💢 دوستانم بی دفاع و دشمنانم بی جواب نخواهند ماند 💢

-->
آخرین نظرات
  • ۶ ارديبهشت ۰۳، ۱۶:۱۵ - hidden
    test
در این پست قراره یاد بگیریم :
به برنامه مون فرم های جدید اضافه کنیم
فرم های جدید رو فراخوانی کنیم
مقدار هایی را از فرم اصلی (والد) به فرمهای بعدی (فرزندان) ارسال کنیم و برعکس این ماجرا
متغییر های Static و public تعریف کنیم و بین فرمها ازشون استفاده کنیم
یه پروژه جدید سی شارپ ایجاد کنید (بعضی ها هم به پروژه شون برن D: )
با ظاهر پروژه تون کار ندارم (میتونه هر ظاهری داشته باشه)
من اینجا یه فرم دارم که ده تا دکمه روش گذاشتم و قراره هر کدوم از این دکمه ها یه فرم دیگه رو فراخوانی و فرم اصلیم (والد) رو هم مخفی کنه.
و اینکه میخوام از فرم اصلیم یسری اطلاعات بفرستم به فرم دوم (فرزند) و بعد از انجام عملیاتی در فرم دوم میخوام دوباره یسری اطلاعات بفرستم به فرم اصلیم و به کمک این اطلاعات اعمالی رو انجام بدیم.
ارسال اطلاعاتی از فرم اصلی به فرمهای فرعی کار خیلی ساده ای هستش.
اکثر دوستان در برعکس این ماجرا یعنی ارسال از فرم فرزند به فرم والد مشکل دارن
برای شروع ابتدا میخوام یه فرم دیگه به برنامه اضافه کنم
از طریق کلیک راست کردن روی اسم پروژه ام در کادر Solutions و انتخاب Add و New Item از صفحه باز شده یه Windows Form جدید به اسم Form2 به پروژه اضافه میکنم
ابتدا فراخوانی کردن این فرم توسط دکمه ای که روش نوشتم 1 به دو شکل :
با این کد فرم بصورت عادی فراخوانی میشه:
Form2 v32 = new Form2();
v32.Show();
با کد زیر هم بعنوان بالاترین فرم برنامه فراخوانی میشه و اجازه دسترسی به فرمهای پشتی یا قبلی رو نمیده تا وقتی که اون فرم بسته شه
(تست کنید متوجه میشین)
Form2 v32 = new Form2();
v32.ShowDialog();
حالا میخواییم هم فرم دوم فراخوانی بشه و هم فرم اولی یا فرم اصلی محو بشه.
میدونید که ما اجازه بستن فرم اصلی یا والد رو نداریم چون در صورت بسته شدن کل برنامه متوقف خواهد شد
پس باید مخفیش کنیم
Form1.ActiveForm.Visible = false;
Form2 v32 = new Form2();
v32.Show();
در هر مرحله تست بگیرید تا بهتر متوجه شین.
خوب تا اینجا مشکلی نیست.
حالا میخواییم یه مقداری به فرم دوم ارسال کنیم.
ابتدا در فرم دوم یه متغییر به صورت پابلیک یا عمومی تعریف میکنیم
public string a = "";
بعد در فرم اول کدهای دکمه ی فراخوانی فرممون به شکل زیر میشه
Form1.ActiveForm.Visible = false;
Form2 v32 = new Form2();
v32.a = "Virus32";
v32.Show();
ولی اگه بخواییم برای یکی از اشیا هامون مقداری بفرستیم چی؟
برای استفاده از یک شی در فرم های دیگه ابتدا باید مقدار Modifiers اون شی رو برابر Public قرار بدیم
برای مثال من میخوام برای تکست باکسی که در فرم دومم قرار داده اسم خودمو بفرستم
ابتدا مقدار Modifiers اون رو Public میکنم و
Form1.ActiveForm.Visible = false;
Form2 v32 = new Form2();
v32.textBox1.Text = "Virus32";
v32.Show();
البته ما میتونیم بجز مقدار تنظیمات شی ها رو هم دستکاری کنیم
مثلا غیر فعال کردن
v32.textBox1.Enabled = false;
یا مخفی کردن
v32.textBox1.Visible = false;
یا هر چیزی که دل تنگت میخواهد علی جان :)
حالا قسمت سخت قضیه ^_^
ماجرا اینه که تمام دکمه های من بجز دکمه اولم در فرم اصلی غیر فعال بود
Enabled = false
حالا من میخوام به کمک دکمه ای که در فرم دومم قرار داره
(فرمی که بعد از فراخوانی به روش بالا بهش رسیدیم)
یه مقداری به فرم اصلیم (والد) بفرستم
بعد به کمک اون مقدار تعیین کنم که یکی از دکمه هام فعال یا غیر فعال بشه
برای اینکار ما باید ابتدا یه متغییر public یا عمومی و یک متغییر Static یا ایستا در فرم اصلی باید تعریف کنیم
(البته این v32 میتونه خصوصی یا private هم باشه)
public static string v32 = "";
public String coder
{
set
{
v32 = value;
}
}
حالا میخوام به کمک مقدار این متغییر ها مخفی یا نمایان بودن یا فعال یا غیر فعال بودن دکمه هامو تعیین کنم
ابتدا یه کلاس براش میسازم
public void unvis()
{
if (v32 == "1")
{
button2.Visible = false;
}
else
{
button2.Visible = true;
}
}
دستور دادم اگه مقدار یک بود دکمه دوم رو فعال کن اگر نه غیر فعالش کن
خوب این کلاس ساده ای هستش.
"برای دکمه های بعدی خودتون دست به کار شین"
ولی هربار که فرم اصلی نمایش داده شد این کلاس باید کار کنه
(منظور از نمایش داده شد فقط لود و اجرا شدن نیست)
پس این کلاس رو در قسمت Active فرم فراخوانیش میکنیم
کد :
private void Form1_Activated(object sender, EventArgs e)
{
unvis();
}
خوب کارمون تو فرم اصلی (والد) تموم شد.
برین به فرم دوم
یک دکمه بهش اضافه کنید
میخواییم این دکمه فرم خودش رو ببنده
فرم اصلی رو نمایش بده
و دکمه شماره دو در فرم اصلی رو فعال کنه
Form1 cd = new Form1();
cd.coder = "1";
cd.Show();
this.Close();

if (this.Owner != null)
{
this.Owner.Enabled = true;
}
کارها انجام شده بود این دکمه تقریبا کار خاصی انجام نداد
همونطور که میبینید به متغییر مون در فرم اصلی مقدار یک رو دادم
فرم  دوم رو بست
فرم اصلی رو فعال کرد
یه تیکه کد رو جا انداختم برای خروج که اونو خودتون کشف کنید

این پست رو هم به خاطر دوست خوبمون آقا علی تکمیل کردم
باشد که رستگار شویم و حرفه ای D:

دریافت سورس پروژه
حجم: 47.3 کیلوبایت

ایرانی همیشه سرافراز

نظر (۶)

یه سوال
public static string v32 = "";
public String coder
{
set
{
v32 = value;
}
}
این تیکه کد چیکار میکنه؟
والا تا حالا من همچبن کدی ندبده بودم :/ حالا سئوال پیش اومده برام که چیه و چیکار میکنه :/
البته شایدم دیدم یا این که ازش به صورت های دیگه ای استفاده میکردم

Virus32 Virus 32 :
علیک سلام میکروب :)
خط اول که یه متغییر رشته به صورت ایستا و عمومی تعریف شده v32
خط دوم هم یه رشته عمومی تعریف کردم و مقدار متغییر اول رو برابر مقدار این متغییر در نظر گرفتیم که قراره از فرم های دیگه براش ارسال بشه
ویروس جان ببین همین اولش یک اررو میده که بهت هم گفتم گفته بودی عکس بده بفرما http://s9.picofile.com/file/8356259342/Error1.png
Virus32 Virus 32 :
این خطا بخاطر نبود یوزینگ زیر هستش
using System.Windows.Forms;
ویروس جان میدونم این برنامه نویسی گاهی اوقات یک مشکلاتی رو داره ولی باور کن تقصیر من نیست ببین بازم هست باز همین ارور رو میده
http://s8.picofile.com/file/8356260426/Error_2.png
Virus32 Virus 32 :
روی references کلیک راست کن
add reference رو بزن
تو صفحه باز شده در قسمت جستجو عبارت wind رو سرچ کن
از یافته ها مطمئن شو تیک عبارت زیر خورده شده باشه
System.Windows.Forms;
ویروس جان اوکی شد نیاز به زحمت نیست مر30
سلام ویروس جان از صمیم دل واست ارزوی زندگی بهتری رو دارم خیلی کمکم کردی داداش یک سوال دیگه من تو این بازی یک متغیر اول بازی تعریف کرده بودم اینطوری :
int Gold =30; ولی من تو وسط های برنامه به سک مشکلی بر خوردم چطوری میشه یک متغیر رو ذخیره کرد یعنی تو این مرحله من 30 تا باید سکه داشته باشم طبقه متغیرم و دارم مشکلی نیست ولی امکان داره منه سازنده مستقیم جواب برنامه رو بگم و 10 سکه ببرم چون تو تعریف گفتمن اگه جواب درست بود Gold = Gold +10; ولی اگه کسی بیاد از پول هاش خرج کنه تا مرحله رو ببره گیرم 10 سکه براش باقی میمونه و میبره میره مرحله ی بعد باز 30 سکه داره چون تو اول برنامه اینطوری تعریف کردم چطوری میتونم بگم با هرپولی داره باز تو مرحله ی بعدی به همان مقدار باشه ؟!!!
Virus32 Virus 32 :
سلام ممنون
همون اول میدونستم به این مشکل برمیخوری.
باید یه بانک اطلاعاتی (دیتابیس) داشته باشی
تا تمام این اعمال رو ثبت کنی (مقدار پول ، مرحله های سپری شده و ... )
برای مقدار پولت هم مثل مقدار هر مرحله یه متغییر تعریف کن و بعد از انجام محاسبات هر بار این مقدار ها رو باید تو دیتابیس ثبت کنی
دیتابیست میتونه یه تکست باکس یا هر دیتابیس دیگه ای باشه
Glad to see you again my friend
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی