نمایش نتایج 1 تا 29 از 29

نام تاپیک: ثبت مشخصات یک فرم در فرم دیگر

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #20
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727

    نقل قول: ثبت مشخصات یک فرم در فرم دیگر

    MyTable را شما ایجاد کرده اید. نه ماکروسافت..پس حق این را دارید که هر عمل مجازی که برای آن تعریف شده است انجام دهید..
    آیا به نظر شما این کار با منطق OOP جور در میاد ؟ یعنی مشکلی نیست اگه من myTable رو dispose کنم ؟ در صورتی که ممکنه جای دیگه از اون استفاده شده باشه ؟
    در ضمن، مگه کنترلی که روی فرم میکشم رو خودم ایجاد نکردم ؟

    اما، Label ای که شما حق دسترسی کامل اون را به مصرف کننده کلاس دادید، جزء Class Creator می باشد.. یعنی Label جزئی از تعریف فرم1 شما می باشد.. پس نباید از بیرون، دسترسی های غیر مجاز به آن داشت..
    من دسترسی فقط در حیطه ی همون Assembly رو دادم (Internal)، در ضمن شما امتحان کن ببین با Public کردن دسترسی یک کنترل، در فرم دیگه میتونی مقدار Text اونو تغییر بدی یا Dispose کنی.
    در ضمن کلاس Label برای کلاس فرم، حکم همون کلاس DataTableCollection,... رو داره برای کلاس DataSet، مگه DataTableCollection خارج از جزء Class Deigner در DataSet هست ؟

    گاهی مواقع، این دسترسی ها نه تنها بر روی خود آبجکت مذکور، بلکه بر روی دیگر آبجکت ها نیز می تواند تاثیر بگذارد و عملکرد آن ها را تحت تاثیر قرار دهد..

    نمونه برنامتون را با کمی تغییر آپلود می کنم که ببینید که چه مشکلاتی ممکن است پیش آید..
    پس از فشردن دکمه ببر روی فرم2، Button ای که بر روی فرم1 قرار دارد، دیگر قابل دسترسی نخواهد بود..
    و همه این مشکلات ، از آنجایی ناشی می شود که consumer کلاس شما، دسترسی به همه خواص آبجکت label را دارد.. و از همه مهمتر این که این نوع دسترسی ها کنترل شده نیست..
    اینکه بر روی هر آبجکتی ممکنه اثر بذاره، کاملا بستگی به منطق برنامه و کدنویسی و شیوه ی طراحی نرم افزار داره، شما میتونی با چاقو هم میوه پوست بکنی و هم آدم بکشی، دلیلی نداره با تغییر دسترسی یک کنترل بدبینانه به موضوع نگاه کنیم و همه ی نیزه ها رو به سمت Class Designer بچرخونیم، من برنامه ی شما کمی تغییر دادم تا ببینید این شیوه کاملا بستگی به منطق برنامه نویسی داره، کدی که در رویداد فرم 2 اجرا میشه، در فرم1 هم همون نتیجه رو داره، ربطی به دسترسی کنترل نداره، هدف و شیوه ی کدنویسی اشتباهه.

    فرق نمیکنه، اگر قرار است که یک چیزی فقط مطعلق به یک شیئ باشد (چه کاربر و یا چه برنامه) وقتی که دسترسی بهش پابلیک باشد، یعنی اینکه دارد آگهی میده که از هر جایه برنامه بهش دسترسی کنند. اتفاقا مثال خوبی است که چرا با اینکه یک مدیر یک سیستم اگر بخواد میتواند پسورد کاربر را عوض کند ولی هنوز پسورد کاربر فقط باید برایه کاربر محفوظ بماند.
    اولا من دسترسی public ندادم، ثانیا چند خط قبل گفتم، شما ببین اگه دسترسی Textbox رو در فرم 1 public
    کنی میتونی با این کد مقدار Text اونو از فرم 2 عوض کنی :
    objForm1.textBox1.Text = "Changed! from Form2";
    فایل های ضمیمه فایل های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •