PDA

View Full Version : ببخشید!!! چگونگی بستن یک فرم و باز کردن فرم دیگر



روح اله معینی زاده
پنج شنبه 28 آبان 1383, 15:34 عصر
با سلام خدمت تمامی دوستان

خیلی ساده به نظر می رسه :sorry:

در وی بی با دستور form1.hide یک پنجره رو مخفی و با form2.show فرم دیگر برنامه را باز کرده و نمایش می دادیم.

در دات نت چه جوریه؟ :cry:

تازه کاری و هزار عیب و علت :sorry:

با احترام- خدانگهدار

علیرضا مداح
جمعه 29 آبان 1383, 19:48 عصر
سلام .
در وی بی دات نت برای نمایش یک فرم ابتدا باید یک کپی از آن در حافظه ایجاد کرده و سپس توسط متد Show آن را نمایش دهید :


Dim MyForm as New Form1
MyForm.Show

و برای مخفی کردن :


MyForm.Hide

ساران سافت
شنبه 07 آذر 1383, 14:09 عصر
با سلام :
اگر روی فرم 1 یک باتون باشد که درون آن کد فوق نوشته شده باشد که با زدن آن مثلا فرم 2 باز شود
هر بار که روی این باتون کلیک می شود یک نسخه جدید از فرم 2 نمایش میدهد؟
چکار کنیم که فقط یک بار نمایش دهد!؟ :گیج:

kochol
شنبه 07 آذر 1383, 16:35 عصر
سلام

خوب می تونید یک متغییر تعریف کنید (به حوزه دید آن دقت کنید) بعد در روالی که مربوط به دکمه است با یک دستور شرطی مقدار آن را عوض کنید مثل این مثال

inherits...
dim c as integer = 0
private sub button1_click(...) handels button1.click
if c=0 then
dim frmNew as new form2
frmnew.show()
c=1
end if

به همین راحتی

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

متغییرتان را در یک ماژول تعریف کنید و در روال form_unload آن دوباره متغییر را به 0 ست کنید

در ماژول آن را بصورت زیر تعریف کنید


public c as integer

نحوه ایجاد ماژول هم به این صورت است که در منوی project/add/add item کلیک کنی و یک ماژول اظافه کنی
یا در کد فرمت زیر آخرین خط اونجایی که نوشته end class
این کد را وارد کنی


public module mod1
public c as integer
end module

شاید کلمه module را اشتباه نوشته باشم

ساران سافت
یک شنبه 08 آذر 1383, 14:02 عصر
با سلام و تشکر :
این راه خوبه و فرض کنید در پروژه ام بالای 100 فرم داشته باشم تعریف کردن و کنترل 100 متغیر برای آنها قدری مشکل است!
آیا راه حل دیگری ندارد؟
مثلا نمی شود فهمید که آیا این در حال نمایش است یا خیر؟
:گیج:

bashir_nashi
یک شنبه 08 آذر 1383, 22:59 عصر
مثلا نمی شود فهمید که آیا این در حال نمایش است یا خیر؟

چرا نمی شه ؟ می شه.

ساران سافت
دوشنبه 09 آذر 1383, 12:00 عصر
چجوری ؟ :گیج:

kochol
دوشنبه 09 آذر 1383, 17:10 عصر
سلام

مگه یکی با صدتاش فرق میکنه


dim c(100) as integer

خوب حتما یه شماره ای چیزی داری که بفرستی به روال یا برای هر فرم یک دکمه گذاشتی
فرض کنیم شماره فرم در یک متغییر ضبط شده به نام d

if c(d)=0 then
frmNew.show()
c(d)=1
end if

ساران سافت
چهارشنبه 11 آذر 1383, 19:50 عصر
حتما باید راه دیگری غیر این همه متغییر و مدریت آنها وجود داشته باشد. :گیج:

kochol
پنج شنبه 12 آذر 1383, 10:22 صبح
سلام

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

ابتدا می تونی فوکوس را به پنجره مورد نظر بدی و برگردونی به پنجره خودت و اگر error داد می فهمی این پنجره باز نیست فرض می کنیم دو تا فرم داریم form1 و formtest


try
appactivate("formtest")
catch ex as
همون کاری که اگر باز نبود می خواهی انجام بدی
exit sub
end try
همون کاری که اگر باز بود میخواهی انجام بدی
appactivate("form1")


دقت کن در دستور appactivate باید تیتر بالای فرم را بنویسی

ساران سافت
پنج شنبه 12 آذر 1383, 11:56 صبح
این خیلی عالیه :mrgreen: :wink:

kochol
پنج شنبه 12 آذر 1383, 12:19 عصر
خوشحالم از اینکه به دردت خورد

ساران سافت
پنج شنبه 12 آذر 1383, 12:26 عصر
مرسی! :wink:

bashir_nashi
جمعه 20 آذر 1383, 12:01 عصر
راه دیگری هم هست .
کافی است متغیر form2 رو private معرفی کنی. دیگه خود به خود وقتی فرم دوم باز است دیگه باز نمی شه.
ولی دقت کن که فرم دوم نباید close بشه و از دستور hide استفاده کن .

Private f2 As New Form2()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles_ Button1.Click
f2.Show()
End Sub