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

شروع موضوع توسط Ftmthri ‏12 ژوئن 2019 در 22:37 در انجمن برنامه‌نویسی C و هم خانواده‌هایش

  1. Ftmthri

    Ftmthri New Member

    ارسال‌ها:
    10
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    من یک متغیر تعریف کردم در اولین فرم برنامه و میخام توی یکی از ستون های پایگاه داده مقادیری که این متغیر میگیره رو ذخیره کنم و برای ذخیره کردن در پایگاه داده از دستور insert در فرم سوم برنامه استفاده میکنم اما با اینکه این متغیر رو public تعریف میکنم و فرم یک رو هم در فرم سه تعریف میکنم اما برنامه بریک میکنه و ب تعریف فرم 1 در 3 ایراد میگیره
    چیکار باید بکنم؟
     
    نوشته شده توسط Ftmthri در ‏12 ژوئن 2019 در 22:37
  2. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,887
    تشکر شده:
    10,961
    امتیاز دستاورد:
    113
    اگر متغیری رو به این شکل در Form1 تعریف کرده باشید هر بار که پنجره ای از Form1 باز میشه (شیء ای از نوع Form1 ساخته میشه) یک متغیر مجزا به اون نام a داره که مختص همون شیء فرم ئه که ایجاد کردید :
    کد (Text):
        public partial class Form1 : Form
        {
            public int a;

            public Form1()
            {
                InitializeComponent();
            }
     
    یعنی در این مثال اون a بین همه Form1 هایی که به دفعات ایجاد میشه مشترک نیست. نباید توقع داشته باشید که یک شیء از Form1 ایجاد کنید و باز کنید و به a اش مقداری بدهید و دفعه بعد که Form1 دیگری داشتید همون a رو داشته باشه که قبلا مقدار دهی کردید، هر کدوم شون a مستقل ای دارند :
    کد (Text):
                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 یکدونه است و بین همه شون مشترک ئه :
    کد (Text):
        public partial class Form1 : Form
        {
            public static int a;

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

                var f2 = new Form1();
                f2.ShowDialog();
                Form1.a = 5;
     
     
    نوشته شده توسط the_king در ‏13 ژوئن 2019 در 02:07
    SajjadKhati و Ftmthri از این پست تشکر کرده اند.

به اشتراک بگذارید