PDA

View Full Version : دستوری برای لود کردن فرم در وی بی دات نت 2005



amirsajjadi
سه شنبه 03 مهر 1386, 00:17 صبح
باسلام
توی ویژوال بیسیک 6 دستوری بود که فرم رو لود می کرد (Load (FormName))
حالا میخواستم بدونم توی وی بی دات نت 2005 هم دستوری برای لود فرم داره یا نه
با تشکر

PC2st
سه شنبه 03 مهر 1386, 00:39 صبح
Dim ff As FormName
ff = new FormName()
ff.Show()

این برای نمایش فرم هست.

amirsajjadi
سه شنبه 03 مهر 1386, 09:13 صبح
دستت درد نکنه ولی من دستوری میخوام برای لود کردن فرم
>> توی دات نت 2005 هم دیگه برای نمایش فرم نیازی به تعریف متغیر نداری <<

hamed_bostan
سه شنبه 03 مهر 1386, 12:04 عصر
دستت درد نکنه ولی من دستوری میخوام برای لود کردن فرم


منظورتون رو از load کردن فرم واضح تر بیان کنین لطفا

amirsajjadi
سه شنبه 03 مهر 1386, 12:37 عصر
من میخوام فقط فرمم لود بشه تو حافظه مثل دستور (نام فرم) Load توی vb 6 ، نمایش داده نشه

hamed_bostan
سه شنبه 03 مهر 1386, 14:13 عصر
ببین دوست عزیز من این که گفتی رو نمیدونم چطور ممکنه اما اگه می خوای به کنترل ها و .. فرمت دسترسی داشته باشی بدون این که فرم دیده بشه همون طوری که دوستمون هم کدش رو نوشتن میتونی یه متغیر از فرم بگیری با این کار فرم در حافظه بار میشه . حالا میخوای نمایشش بده نمی خوای نده

amirsajjadi
چهارشنبه 04 مهر 1386, 13:01 عصر
اون کدی که PC2st داده یک متغیر از نوع فرممون تعریف میکنه ولی فرمو لود نمیکنه

hamed_bostan
چهارشنبه 04 مهر 1386, 13:13 عصر
دوست من شما از لود فرم چه منظوری داری؟ غیر از اینکه احتمالا میخوای به بعضی کنترل ها یا متغیر های public آون مقداری چیزی بدی؟؟؟ خوب این کد رو نگاه کن:



dim frm as new form1
frm.uid=123
...
...
...
...

dim k as integer=frm.uid
در اینجا uid یه متغیر public در form1 هستش .
ایا شما از Load فرم منظور دیگه ای داری؟ وقتی یه متغیر ازش میگیری هم به همه کنترل ها و هم به همه اجزا public فرم دسترسی داری و می تونی مقدار دهی کنی تا زمانی که حافطه متغیر رو Free نکنی پس مشکل چیه؟

amirsajjadi
چهارشنبه 04 مهر 1386, 14:13 عصر
متغیرها رو بلدم تغییر بدم ولی مثلا توی فرمم چند تا تصویر با حجم بالا دارم اول برنامم میخوام (بدون فرم Splash) اون فرم رو با تمام اشیای توش بار گذاری کنم توی حافظه که وقتی اون فرم رو توی برنامم Show کردم سریعتر باز بشه

hamed_bostan
چهارشنبه 04 مهر 1386, 15:05 عصر
فکر میکنی دوست من این کار منطقی ای باشه که شما یه فرم به قول خودت با مصرف حافظه بالا رو توی تمام مدت اجرای برنامه تو حافظه بار کنی تا حالا اگه یه زمانی خواستی نشونش بدی طول نکشه؟ ضمنا فکر نمی کنم بابت این موضوع هم مشکلی باشه .
شما اگه مشکلت نشون دادن و ندادن فرمه capasity اون رو 0 کن و موقع نشون دادن 1 کن و بیارش روی همه فرم ها یا ترفندای دیگه ای که می شه

amirsajjadi
چهارشنبه 04 مهر 1386, 23:28 عصر
ولی من فکر میکنم عاقلانه باشه چون نرم افزاری که درست میکنی سرعتش باید بالا باشه تا کاربر از اون نرم افزار راضی باشه بعدشم مگه چندتا عکس یا اشیاء رو فرم چقدر از حافظه رو اشغال میکنه ؟

saeed_rezaei
چهارشنبه 04 مهر 1386, 23:56 عصر
سلام.
همانطور که دوستان هم گفتند، هنگامی که شما یک نمونه جدید از یه فرم می سازید به طور اتوماتیک اون روی توی حافظه بار کرده اید. اما با متد show اون رو به کاربر نشون می دید.
مشکلی که اینجا پیش مییاد و باعث ناراحتی شما شده اینه که خیلی از رخدادهای مربوط به این فرمتون هنگام show شدن توسط سیستم اجرا می شن. درست مثل تابع load که فقط یک بار هنگام اجرای متد show اجرا می شه. حالا یه سری از کاراهای خود سیستم هم ، به همین صورت هست. باید ابتدا show اجرا بشه و بعد عملیات سنگین انجام بشه.
پس مشکل، مشکل لود شدن توی حافظه نیست. بلکه ترتیب عملیات هست. عملیات سنگین فرم درست زمان show انجام می شه.
به نظر من شما باید با یه روشهایی این ترتیب رو به هم بزنید. درست مثل همین کاری که آقا حامد گفتند.
یعنی اینکه فرم رو قبل از show کردن کم رنگ کنیم. سپس فرم رو show کنیم و وقتی اطمینان حاصل کردیم که عملیات سنگین تمام شده، دوباره نور فرم رو به حالت عادی برگردونیم.
حالا می تونید به جای تغییر در opcity بیایید و سایز رو تغییر بدید.
شاید هم اگه قبلش windowstate رو minimize بزنیم و در انتها maximaze بهتره باشه.
این که از چه روشی استفاده کنید رابطه مستقم با کدهای خودتون هم داره. مثلا اگه شما کد نوشتید که با تغییرسایز فرم اجرا می شه پس استفاده از گزینه دوم فکر خوبی نیست. چون خودش یه سربار اضافی واسه فرم می یاره.
و البته هم شاید مجبور بشید که هر دو عملیات مخفی سازی و نمایش رو بعد از متد show بنویسید که در این صورت یحتمل بایستی از thread استفاده کنید.

amirsajjadi
پنج شنبه 05 مهر 1386, 13:36 عصر
با سلام
آقای رضایی
اول اینکه روشی که شما میگید توی برنامه نویسی اصلا درست نیست شاید درست جواب بده ولی منطقی نیست
دوم اینکه من منظورم از لود فرم تنها لود اشیاء اون تو حافظه نیست بلکه اجرا شدن رویداد Form_Load هم است
سوم اینکه وقتی یک متغیر از نوع فرم تعریف میکنیم اون متغیر یک اشاره گر است به فرم و وقتی که تا new یک شی جدید ایجاد میکنیم مثل اینه که یک فرم جدید ایجاد کردیم و اون فرم جدید رو باز باید تو حافظه لود کنیم بنابراین با تعریف متغیر فرممون لود نمیشه
با تشکر

Chabok
جمعه 06 مهر 1386, 07:54 صبح
با سلام
خوب چرا گیر دادین به فرم لود . یعنی چون Form_Load هنگام نمایش اجرا میشه باید از رویداد دیگری استفاده کنید

شما میتونید از رویدادهایی برای کارهای سنگین (به قول خودتون) استفاده کنید
که با تعریف متغیر Fire می شوند
مثلا انگار یادمه Form_HandleCreated با تعریف متغیر از کلاس ران میشد
یعنی احتمال زیاد میدم رویداد مناسب برای اینکار وجود داشته باشه
در کل منظورم اینه که راههایی بهتر از کم رنگ کردن فرم هم وجود داره
و میشه تقریبا همون روال عادی رو طی کرد

موفق و پیروز باشید