تبلیغات :
خرید لپ تاپ استوک
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 6 از 6

نام تاپيک: کار با فرم ها و دسترسی به المنتهای form1 از طریق form2

  1. #1
    پروفشنال as13851365's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    لیبدرا
    پست ها
    914

    12 کار با فرم ها و دسترسی به المنتهای form1 از طریق form2

    سلام و خسته نباشید

    مدتی هست که می خواستم سی شارپ یاد بگیریم از آنجایی هم که من قبلا دلفی کار می کردم هنگام کار با سی شارپ به مشکلاتی برخورد کردم مثلا :

    1 ) دو تا فرم داریم به اسم form1 و form2 که فرم یک فرم اصلی برنامه می باشد

    روی form1 یک دکمه قرار دادم و می خوام با زدن آن form2 نمایش داده بشه ( یه سری کد پیدا کردم ولی ... )


    2 ) از طریق form1 می خواستم مقدار textbox موجود در form2 رو داشته باشم از چه روشی باید استفاده کنم ؟ (بعبارتی می خواستم از مقدادیر موجود در فرم ها به صورت اشتراکی استفاده کنم یعنی از مقدارهای وارد شده در المنتهای form1 در فرم های دیگه استفاده کنم ولی کدی پیدا نکردم)

  2. #2
    پروفشنال as13851365's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    لیبدرا
    پست ها
    914

    پيش فرض

    فکر نکنم جای این تایپیک رو اشتباهی ایجاد کرده باشم

    نمی دونم سوالم خیلی خیلی ساده بود که دوستان قابل ندونستن جواب بدن یا !؟!؟

    من دلفی کار می کنم و مشکلی هم باهاش ندارم فقط می خواستم با سی شارپ هم کار کنم که در قدم اول با این مشکل مواجه شدم

    نمی خوام آموزش دلفی بدم ولی :
    در دلفی شما به راحتی دو تا فرم انتخاب می کنی و نام یونیت آنها را در همدیگه uses می کنی و بعد به راحتی می تونی ازشون استفاده کنی

    بعنوان مثال :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    حالا من معادل این رو به زبان سی شارپ می خوام
    البته جستجو کردم و کلی کد در این باره پیدا کردم ولی زیاد ویژوالی نبود یعنی باید فرم رو تعریف می می ساختی در صورتی که من نمی خوام فرم رو بسازم می خوام فقط فراخوانیش کنم ( البته شاید دوستان بگن که تا زمانی که فرمی ساخته نشده نمی تونی فراخوانیش کنی ولی می خوام این کار به صورت اتوماتیک یا هنگام نمایش فرم1 فرم دوم ساخته بشه ولی مخفی باشه ... قاطی کردم )

    اگه به کدی که به زبان دلفی گذاشتم دقت کرده باشید اونجایی که به رنگ آبی مشخص کردم form2 رو در برنامه uses ( یا به عبارتی مورد استفاده ، معرفی و ... ) کردم و در قسمت بعدی که به رنگ آبی انتخاب شده به سادگی با فراخوانی متد show فرم مربوطه را نشان می دم

    در قسمتی که به رنگ قرمز مشخص کردم ( از آنجایی که form2 در برنامه فراخوانی شده ) به راحتی می تونم به المنتهای فرم دوم از طریق فرم اول دسترسی داشته باشم و مقدار آنها را دستکاری کنم

    کل این کار ها در دلفی به سادگی انجام می شه ولی در سی شارپ برای مورد اول که باید فرم رو بسازیم
    و برای مورد دوم من کلی چیزی نتونستم پیدا کنم

    حالا اگه دوستان لطف کنند کمی راهنمایی کنن خیلی ممنون می شم

  3. #3
    پروفشنال as13851365's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    لیبدرا
    پست ها
    914

    13 دانلود نمونه برنامه برای شفافیت موضوع

    من دو تا نمونه برنامه در این تایپیک قرار می دم که یکی به زبانی دلفی می باشد و یکی به زبان سی شارپ

    هر دو برنامه کار یکسانی انجام می دن ولی برنامه دلفی کار می کنه و برنامه سی شارپ نه


    بعبارتی من با ساخت فرم در سی شارپ مشکل دارم یعنی نمی شه فرم رو یک بار ساخت و همیشه از آن در همه جای برنامه استفاده کرد ؟


    دانلود برنامه به زبان دلفی با اندازه 150 کیلوبایت
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    دانلود برنامه به زبان سی شارپ به اندازه 15 کیلوبایت
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    اگه دوستان یه زحمتی بکشن یه توضیحی بدن خیلی خوب می شه

    هر چی توی اینترنت جستجو کردم همه هر جا که نیازی به فرم داشته باشن فرم رو از نو می سازن در صورتی که من نمی خوام اینجوری باشه می خوام یک بار فرم ساخته بشه و در همه جای برنامه ( تمام فرم ها ) بشه ازش استفاده کرد

    اگه به مثال دلفی توجه کنید دقیقا برابر مثال سی شارپ است با این تفاوت که دلفی کار می کنه و سی شارپ کار نمی کنه

    ( به صورت سرسری یه سری کتاب رو هم نگاه کردم همشون هر المنتی رو که نیاز دارن می سازن و کلا دارن با کدها کار می کنند در صورتی که من می خواستم اگه بشه به صورت ویژوال کار کرد )
    این مطلب در باره بانک اطلاعاتی و نحوه وصل شدن به اون که بیشتر مشهود بود و ...



    راستی یه سوال دیگه :
    وقتی روی یک دکه رویدادی مثلا کلیک رو براش می نویسی و خلاصه بعد منصرف می شی و می خواهی که دکه رو + کد و تابع مربوطه رو حذف کنی برنامه هی خطا می ده و ....
    چطوری می شه تابع هایی که خالی هستن هنگام کامپایل آن تابع ها رو ( مانند دلفی ) حذف کرد ( اگه روش دستی هم بهم بگید ممنون می شم )

    پیشاپیش از جوابی که ندادید و خواهید داد تشکر می کنم .

  4. #4
    اگه نباشه جاش خالی می مونه Macdiano's Avatar
    تاريخ عضويت
    Oct 2006
    محل سكونت
    Tehran
    پست ها
    268

    پيش فرض

    سلام

    شما یه پروژه دارید با N تا فرم

    اگر درست متوجه شده باشم شما میخواهید در همه جای پروژه بتونید به یک فرم خاص دسترسی داشته باشید و فقط هم میخواهید یک Object از اون فرم ایجاد کنید.

    راهی که به نظرم میاد اینه:

    شما یک Class Library به پروژه Add کنید و کد زیر را در این فایل بنویسید.

    Public_Form = نام کلاس فرم عمومی (همون فرمی که میخواهید در کل پروژه به هش دسترسی داشته باشید)
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا میتونید در متد مربوط به (Event (Form_Load فرمی که موقع اجرای پروژه نشان داده میشود کد زیر را بنویسید

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا در هر کجای پروژه که میخواهید از این فرم استفاده کنید بنویسید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    بعد از این دستور وقتی دات (.) رو بزنید به تمام اجزای (public) این فرم دسترسی دارید

    امیدوارم تونسته باشم کمکت کرده باشم.

    هر کجای این کد نا مفهوم بود بفرمایید بیشتر توضیح بدم.

    راستی یه سوال دیگه :
    وقتی روی یک دکه رویدادی مثلا کلیک رو براش می نویسی و خلاصه بعد منصرف می شی و می خواهی که دکه رو + کد و تابع مربوطه رو حذف کنی برنامه هی خطا می ده و ....
    چطوری می شه تابع هایی که خالی هستن هنگام کامپایل آن تابع ها رو ( مانند دلفی ) حذف کرد ( اگه روش دستی هم بهم بگید ممنون می شم )

    پیشاپیش از جوابی که ندادید و خواهید داد تشکر می کنم .
    شما تابعی که برای اون event ساخته شده را دستی پاک کن بعد وقتی پروژه رو Rebuild میکنید روی همون ارور درون Error List دوبار کلیک کن, صفحه و خط مربوط به اون خطا نشان داده میشود دستی همون خط رو هم پاک کن.
    Last edited by Macdiano; 21-01-2011 at 15:40.

  5. این کاربر از Macdiano بخاطر این مطلب مفید تشکر کرده است


  6. #5
    پروفشنال as13851365's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    لیبدرا
    پست ها
    914

    پيش فرض

    ممنون دوست عزیز که جواب دادید .

    من کارهایی که شما گفتید رو انجام دادم ولی با مشکلی مواجه شدم ( گفته های شما کاملا درست بودن )

    من کدهای خودم رو می زارم تا گویایی بیشتری داشته باشه

    کد مربوط به کلاس
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد های مربوط هب فرم یک :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    فرم 2 رو می تونم با دستور
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نشان بدم
    بعد از این دستور وقتی دات (.) رو بزنید به تمام اجزای (public) این فرم دسترسی دارید
    به پروپرتیهای خود فرم می شه دسترسی داشت
    ولی وقتی می خوام به المنتهای فرم 2 دسترسی داشته باشم همانطوری که در کد به رنگ قرمز مشخص کردم با خطای ذیل مواجه می شم

    'WindowsFormsApplication1.Form2.textBox1'is inaccessible due to its protection level

    پیشاپیش از این که جواب می دید کمال تشکر رو دارم

  7. #6
    اگه نباشه جاش خالی می مونه Macdiano's Avatar
    تاريخ عضويت
    Oct 2006
    محل سكونت
    Tehran
    پست ها
    268

    پيش فرض

    ولی وقتی می خوام به المنتهای فرم 2 دسترسی داشته باشم همانطوری که در کد به رنگ قرمز مشخص کردم با خطای ذیل مواجه می شم

    'WindowsFormsApplication1.Form2.textBox1'is inaccessible due to its protection level

    خوب گفتم دیگه شما فقط به اجزای public دسترسی دارید.

    شما از طریق محیط Design فرم 2 روی Control مورد نظر کلیک کنید و در پنجره Properties مقدار Modifiers آن Public کنید.

  8. این کاربر از Macdiano بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •