PDA

View Full Version : مخفی کردن فرم فراخوانی شده



programmermp
شنبه 30 دی 1385, 19:23 عصر
با سلام

خیلی سعی کردم این تاپیک رو ایجاد نکنم و لی نشد

من دو تا فرم دارم فرم دومی رو از رویداد load فرم دوم فراخوانی می کنم بعد می خواهم

توی همون فراخوانی فرم دومی مخفی بشه یعنی مثل کد زیر



dim f as new form2
f.hide


اما همانطور که می دونید متد new باعث ایجاد فرم شده و فرم رو نشون می ده و دیگه

کد hide عمل نمی کنه نمی دونم چکار کنم

لطفا کمک کنید

با تشکر

vahidiran
شنبه 30 دی 1385, 20:23 عصر
فرمت رو ایجاد نکن یعنی New نکن
بعد برای نمایش از
f.show استفاده کن
وبرای مخفی کردن از
f.hide

Ner'zhul Arthas
شنبه 30 دی 1385, 20:33 عصر
dim f as new form2

این که فرم جدید رو نشون نمیده.

programmermp
شنبه 30 دی 1385, 22:13 عصر
با سلام

من وقتی از new استفاده نمی کنم پیغام زیر رو میده و میگه باید از new استفاده کنم

Object reference not set to an instance of an object.

چی کار کنم حالا

Sub Zero
شنبه 30 دی 1385, 22:43 عصر
سلام صالحی جان ببخشید پیغامت رو دیر خوندم درگیر امتحانات پایان ترم بودم .
فکر کنم چیزی که میخوای اینه اگه خودش نبود بیشتر توضیح بده که میخوای چی کار کنی .

Private Sub Form1_Load(...) Handles Me.Load
Dim f As New Form2
f.Show()
f.Hide()
End Sub

programmermp
شنبه 30 دی 1385, 22:58 عصر
سلام مصطفی جان

خواهش می کنم

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

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

حتی با متد show هم ظاهر نمی شه

توضیح بیشتر هم این که من دوتا فرم دارم می خواهم توی متد load فرم اولی یه کد بنویسم

که وقتی فرم اولی باز شد فرم دومی مخفی بشه

همین

لطفا یه راهنمایی بکن

programmermp
شنبه 30 دی 1385, 23:48 عصر
شرمنده مصطفی جان اگه منظورم رو خوب نرسوندم

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

و بعد وقتی فرم دوم لود شد برای اینکه به صورت مقیم تو حافظه باشه و بسته نشه

چون توش یک تایمر هست که در یک زمان خاصی باید یک کاری انجام بده مثلا نشان دادن

همین فرم دوم که مقیم در حافظه هست

خوب تا اینجا رو داشته باش

تا الان فرم اولی فرم دومی رو لود کرده حالا می خوام فرم دومی که ظاهر شده مخفی
بشه

یعنی فرم اولی فرم دومی رو لود بکنه ولی من نبینمش

و مخفی باشه (بسته نشه) :عصبانی++: :عصبانی++: :عصبانی++:

در ضمن فرم اول نباید بسته باشه باید باز بمونه

امیدوارم که متوجه شده باشی:خجالت: :خجالت: :خجالت:

با تشکر خیلی ازیتت کردم امشب:خجالت: :خجالت:

Ner'zhul Arthas
یک شنبه 01 بهمن 1385, 00:09 صبح
اگر نمیخواید از فرم متغیری تعریف کنید:


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Form2.Show()
Form2.Hide()
End Sub


اگر میخواید متغیری تعریف کنید:



Dim frm2 As New Form2

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
frm2.Show()
frm2.Hide()
End Sub

Sub Zero
یک شنبه 01 بهمن 1385, 00:44 صبح
سورس زیر رو دانلود کن و بعد از اجرا کردنش 10 ثانیه صبر کن .
اگه دوست داشتی برای قشنگتر شدن کار توی فرم 1 تمام خطهای غیر فعال رو فعال کن
خدا کنه این دیگه خودش باشه .

programmermp
یک شنبه 01 بهمن 1385, 09:36 صبح
سلام و متشکرم مصطفی جان

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

ببین

اولا که کد برنامت کار نکرد موقع

اجرا پیغام می داد فایلهای یکسری از فایلهاش نیست

حالا ولش کن من توی

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

فرم دو نشون داده می شه درسته و لی بعد از نشون دادنفرم 2 باید فرم 2

مخفی بشه بنابراین فرم 1 می یاد فرم 2 رو باز می کنه و بلافاصله کد hide رو

فعال می کنه یعنی نمی زاره ظاهر بشه (نمی بنده فقط مخفی می کنه) در

ضمن فرم 1 که همه این کار ها رو تا الان انجامداده همچنان باز باقی می مونه

دیگه نمی دونم چطوری توضیح بدمولی تا همین جاشم خیلی خیلی ممنونم

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

نرسیدم

با تشکر

Sub Zero
یک شنبه 01 بهمن 1385, 09:48 صبح
چیزی که برات گذاشتم همونیه که توضیح دادی اما چون اجرا نشد فکر کردی خودش نیست این دفعه کاملش رو برات گذاشتم دوباره دانلودش کن .

programmermp
یک شنبه 01 بهمن 1385, 10:32 صبح
سلام مصطفی جان

از کدت استفاده کردم با یکم تغییرات مشکلم حل شد

به برنامه نگاه کن من یه همچین چیزی می خواستم

بازم یک دنیا ممنون که کمکم کردی:تشویق: :تشویق: :لبخند: :لبخند:

problem
یک شنبه 01 بهمن 1385, 22:04 عصر
حالا که حل شد. اما در کل، به جای این که فرم دوم رو توی برنامه ایجاد کنید، باید اون رو در خود محیط ویژوال استودیو طراحی می‌کردید، اسمش رو هم می‌گذاشتید Form2 (که البته خود به خود وقتی Add Form رو انجام بدید اسم دومی رو می‌گذاره Form2. اون وقت کافی بود که دستور ()Show. رو برای اون فرم از توی اولی بدید!

Sub Zero
یک شنبه 01 بهمن 1385, 22:53 عصر
حالا که حل شد. اما در کل، به جای این که فرم دوم رو توی برنامه ایجاد کنید، باید اون رو در خود محیط ویژوال استودیو طراحی می‌کردید، اسمش رو هم می‌گذاشتید Form2 (که البته خود به خود وقتی Add Form رو انجام بدید اسم دومی رو می‌گذاره Form2. اون وقت کافی بود که دستور ()Show. رو برای اون فرم از توی اولی بدید!



Dim Frm As New Form2
این کد فقط یک نمونه از Form2 رو درست میکنه که بشه باهاش کار کرد ( این فرم قبلا با روشی که شما گفتید درست شده) نه اینکه به صورت RunTime فرم 2 رو درست کنه .

problem
یک شنبه 01 بهمن 1385, 23:44 عصر
بله متوجه هستم. اما شاید منظورم رو خوب نرسوندم. منظورم این بود که به جای ساختن یک نمونه فرم ۲، از نمونه موجود که توسط خود VS ساخته شده استفاده کنیم. هر بار که نشون می‌دیمش هم کافیه فیلدها رو پاک کنیم. احتمالاً استفاده از حافظه و CPU اندکی کم می‌شه.

programmermp
دوشنبه 02 بهمن 1385, 08:08 صبح
سلام

من عذر می خواهم اقای problem منظور شما رو از اینکه یک فرم نسازم و از مال خود

vb استفاده کنم نفهمیدم

نکنه منظورتون همو ن کد زیر هست

dim f as new form2

اگه امکانش هست بیشتر توضیح دهید

با تشکر

problem
دوشنبه 02 بهمن 1385, 20:04 عصر
علیک سلام. منظورم رو در یک فایل که ضمیمه کردم نشون دادم. آزمایش بفرمایید متوجه خواهید شد.
قربان شما