PDA

View Full Version : متغیرها در پروژه تحت ویندوز



Sedaghat11021377
چهارشنبه 08 شهریور 1396, 19:57 عصر
سلام وخسته نباشید...
من تو این اواخر، مشکلات عجیبی رو تو C#‎‎ دیدم...الانم به مشکل عجیبی دیدم.
چطور میشه مقدار متغیر تعریف شده یک فرم(مثلا فرم1) رو توی فرم دیگه(مثلا فرم 2) تغییر داد؟ یا متغیری که توی یک کلاس تعریف شده رو چطور از توی یه فرم میشه تغییر داد...
تمام این دردسرها برای اینه که من بیام به فرض وقتی روی یه دکمه تو فرم 1 کلیلک میکنم، درصورتی که فرم 2 باز باشه که هیچی، ولی اگه باز نباشه، بازش کنه...در واقع در تلاشم که جلوی تکرار شدن عمل بازکردن یک فرم رو بگیرم
(توضیح آخر که واضح بود؟)

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

mr.sirwan
چهارشنبه 08 شهریور 1396, 23:42 عصر
با سلام دوست عزیز نیازی به این (به قول شما) دردسرا نیست کافیه توی ایونت کلیک دکمه موردنظرتون توی فرم 1 همچین کدی بنویسین:

if (Application.OpenForms["Form2"] == null)
{
Form2 frm2 = new Form2();
//frm2.Name = "SomeNameForThisObject";
frm2.Show();
}
else
{
Application.OpenForms["Form2"].Activate();
}

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

danialafshari
جمعه 10 شهریور 1396, 06:48 صبح
سلام وخسته نباشید...
من تو این اواخر، مشکلات عجیبی رو تو C#‎‎‎‎ دیدم...الانم به مشکل عجیبی دیدم.
چطور میشه مقدار متغیر تعریف شده یک فرم(مثلا فرم1) رو توی فرم دیگه(مثلا فرم 2) تغییر داد؟ یا متغیری که توی یک کلاس تعریف شده رو چطور از توی یه فرم میشه تغییر داد...
تمام این دردسرها برای اینه که من بیام به فرض وقتی روی یه دکمه تو فرم 1 کلیلک میکنم، درصورتی که فرم 2 باز باشه که هیچی، ولی اگه باز نباشه، بازش کنه...در واقع در تلاشم که جلوی تکرار شدن عمل بازکردن یک فرم رو بگیرم
(توضیح آخر که واضح بود؟)
همونطور که گفته شد نیازی به این دردسرا نیست
ولی صرفاً جهت اطلاع برای کار با کلاس و نحوه تغییر مقادیر ابتدا در کلاس کد های زیر را بنویسید
(البته جور دیگه هم کد زیر رو میشه نوشت) ولی اصولیش اینطوره:
Public Class myClass{
private string name;
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
}
}
}
بعد اینطوری در هر فرمی که می خواید مقدار دهی کنید:

myClass c=new myClass();
c.Name="Your Name";


اینجا هم مثال خوبی برای کار با کلاس زده ولی کدهای بالا برای کار شما کفایت می کنه
https://msdn.microsoft.com/en-us/library/aa288470(v=vs.71).aspx
موفق باشید

Sedaghat11021377
جمعه 10 شهریور 1396, 21:26 عصر
دکمه تشکر کمه... خیلی خیلی ممنون...مشکلم رو حل کردی...ایشاالله تو برنامه هات کامپایلرت به کامت کار کنه...دمت گرم...:تشویق:

Sedaghat11021377
جمعه 10 شهریور 1396, 22:26 عصر
با سلام دوست عزیز نیازی به این (به قول شما) دردسرا نیست کافیه توی ایونت کلیک دکمه موردنظرتون توی فرم 1 همچین کدی بنویسین:

if (Application.OpenForms["Form2"] == null)
{
Form2 frm2 = new Form2();
//frm2.Name = "SomeNameForThisObject";
frm2.Show();
}
else
{
Application.OpenForms["Form2"].Activate();
}

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

mr.sirwan
شنبه 11 شهریور 1396, 00:45 صبح
متوجه نشدم، منظورتون قسمت else هستش؟ خب بذارین روند اجرای این چند خط رو توضیح بدم که براتون روشن بشه موضوع: تو طول اجرای برنامه درصورتیکه فرم 2 باز نباشه، یک بار بدنه if اجرا میشه و از اون به بعد تا زمانیکه فرم 2 بسته نشده، قسمت else اجرا میشه، الان مشکل چیه دقیقا؟

Sedaghat11021377
جمعه 24 شهریور 1396, 17:47 عصر
مشکل حل شد...ممنون