استفاده از یک متغیر در فرم های دیگه

Ftmthri

New Member
من یک متغیر تعریف کردم در اولین فرم برنامه و میخام توی یکی از ستون های پایگاه داده مقادیری که این متغیر میگیره رو ذخیره کنم و برای ذخیره کردن در پایگاه داده از دستور insert در فرم سوم برنامه استفاده میکنم اما با اینکه این متغیر رو public تعریف میکنم و فرم یک رو هم در فرم سه تعریف میکنم اما برنامه بریک میکنه و ب تعریف فرم 1 در 3 ایراد میگیره
چیکار باید بکنم؟
 

the_king

مدیرکل انجمن
من یک متغیر تعریف کردم در اولین فرم برنامه و میخام توی یکی از ستون های پایگاه داده مقادیری که این متغیر میگیره رو ذخیره کنم و برای ذخیره کردن در پایگاه داده از دستور insert در فرم سوم برنامه استفاده میکنم اما با اینکه این متغیر رو public تعریف میکنم و فرم یک رو هم در فرم سه تعریف میکنم اما برنامه بریک میکنه و ب تعریف فرم 1 در 3 ایراد میگیره
چیکار باید بکنم؟
اگر متغیری رو به این شکل در Form1 تعریف کرده باشید هر بار که پنجره ای از Form1 باز میشه (شیء ای از نوع Form1 ساخته میشه) یک متغیر مجزا به اون نام a داره که مختص همون شیء فرم ئه که ایجاد کردید :
کد:
    public partial class Form1 : Form
    {
        public int a;

        public Form1()
        {
            InitializeComponent();
        }
یعنی در این مثال اون a بین همه Form1 هایی که به دفعات ایجاد میشه مشترک نیست. نباید توقع داشته باشید که یک شیء از Form1 ایجاد کنید و باز کنید و به a اش مقداری بدهید و دفعه بعد که Form1 دیگری داشتید همون a رو داشته باشه که قبلا مقدار دهی کردید، هر کدوم شون a مستقل ای دارند :
کد:
            var f1 = new Form1();
            f1.a = 4;
            f1.ShowDialog();

            var f2 = new Form1();
            f2.ShowDialog();
            f2.a = 5;
اینجا هیچ ارتباطی بین f1.a و f2.a نیست، دو تا متغیر مجزا هستند.

شما برای حل این مشکل باید بجای اینکه Form1 رو در Form3 تعریف کنید و تعاریف کلاس ها رو بهم بزنید، به سادگی اون a یا هر متغیر public دیگری که در Form1 تعریف کرده بودید رو بصورت public static تعریف کنید و هر جا خواستید به a اشاره کنید از Form1.a استفاده کنید. مهم نیست که در چه فرمی اون Form1.a رو می نویسید، Form1.a همیشه در دسترس هست، حتی اگه اصلا فرم Form1 رو نشون نداده باشید. اون a هم فقط و فقط یک نمونه است، بیشتر نیست، هر چند تا هم فرم از نوع Form1 بسازید اون a یکدونه است و بین همه شون مشترک ئه :
کد:
    public partial class Form1 : Form
    {
        public static int a;

        public Form1()
        {
            InitializeComponent();
        }
Form1 اسم کلاس ئه، با اسم متغیر هایی که از نوع Form1 میسازید اشتباه نگیرید.
کد:
            var f1 = new Form1();
            Form1.a = 4;
            f1.ShowDialog();

            var f2 = new Form1();
            f2.ShowDialog();
            Form1.a = 5;
 

جدیدترین ارسال ها

بالا