PDA

View Full Version : چطوری فرم پدر و فرزند بسازم ؟



khz-web1
شنبه 15 تیر 1387, 16:11 عصر
سلام :لبخندساده:

می خواستم بدونم چطوری می تونم فرم پدر و فرزند بسازم ؟

با تشکر فراوان از شما :قلب:

khz-web1
شنبه 15 تیر 1387, 16:47 عصر
مشکلمو خودم پیدا کردم ....
باید یه فرم رو پدر در نظر گرفت و خصوصیت Is MdiContainet اون رو برابر با True قرار بدیم و فرمی که می خوایم فرزند این فرم باشه رو باید در فرم پدر صدا بزنیم ..... به این صورت


Dim obj As New Form2
obj.MdiParent = Me
obj.Show()

khz-web1
شنبه 15 تیر 1387, 16:52 عصر
فرض کنید من این کد رو در رویداد کلیک یه دکمه نوشتم .....


Dim obj As New Form2
obj.MdiParent = Me
obj.Show()

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

miladr
شنبه 15 تیر 1387, 18:25 عصر
یه متغیر با وسعت دید کلی بساز به نام havechild از نوع boolean .


if havechild=false then
Dim obj AsNew Form2
obj.MdiParent = Me
obj.Show()
havechild=true
end if

تو روال unload فرزند هم این رو false کن

khz-web1
شنبه 15 تیر 1387, 22:05 عصر
میلاد جان من رویداد unload ندیدم.....
دوستان اگه راه حلی دارید حتمی ارائه بدید(کارم لنگه همین مونده)

miladr
یک شنبه 16 تیر 1387, 02:40 صبح
http://bytes.com/forum/thread614923.html

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

khz-web1
دوشنبه 17 تیر 1387, 08:38 صبح
میلاد جان این لینک راه حل هاش کارم منو راه نمیدازه ....(مرسی از تلاشت )

دوستان اگه راه حلی دارید به ما بدهید.....

با تشکر

naeeme
دوشنبه 17 تیر 1387, 09:15 صبح
if (Application.OpenForms("Form2") = nothing) then
dim obj as new Form2()
obj.Show()
end if



در مورد design pattern ها هم مطالعه کنی، بد نیست. روشهای بهتری پیدا می کنی

khz-web1
دوشنبه 17 تیر 1387, 11:24 صبح
از این کد ایراد می گیره ....
Error 1 Operator '=' is not defined for types 'System.Windows.Forms.Form' and 'System.Windows.Forms.Form'. D:\VB.Net\mdi\WindowsApplication5\Form1.vb 14 13 WindowsApplication5

naeeme
دوشنبه 17 تیر 1387, 15:24 عصر
چون VS دم دستم نبود، این خطا اتفاق افتاد. با کد زیر جایگزین کنید


If (IsNothing(Application.OpenForms("Form2"))) Then
Dim obj As New Form2()
obj.Name = "Form2"
obj.Show()
End If

khz-web1
دوشنبه 17 تیر 1387, 21:57 عصر
این روشی که شما می فرمایید فرم فرزند رو از حال فرزندی خارج می کنه ..... یعنی در حال اجرا دیگه فرزند فرم اصلی نیست و می تونه از محدوده ی فرم پدر خارج بشه ......

اگه دوستان روشی دارن لطفا ارائه بدن ....

با تشکر فراوان

kablayi
سه شنبه 18 تیر 1387, 00:50 صبح
سلام ...

اینو سریع برات نوشتم یه نگاه بنداز امیدوارم کارت راه بیفته ... فرم فرزند یه بار بیشتر باز نمیشه ...

موفق باشید ...

khz-web1
سه شنبه 18 تیر 1387, 01:58 صبح
آقا مرسی ..... ولی نمی دونم چرا فایل پروژه ای که به من دادی باز نمیشه ... شما از چه ورژن VS استفاده می کنی

این ارور رو به من میده
http://i29.tinypic.com/2rcap29.jpg

naeeme
سه شنبه 18 تیر 1387, 09:24 صبح
من فکر نمی کردم که نیازی باشه این سطر رو هم بنویسم!

obj.MdiParent = Me

کد نهایی به شکل زیر میشه!



If (IsNothing(Application.OpenForms("Form2"))) Then
Dim obj As New Form2()
obj.Name = "Form2"
obj.MdiParent = Me
obj.Show()
End If

mostafaaa
سه شنبه 18 تیر 1387, 09:53 صبح
سلام فکر کنم راه حل شما از اول اشتباه بوده دوست عزیز برای ایجاد فرم فرزند کافیه یه فرم به پروژه خودتون اضافه کنید و در رویداد Load فرمتون کد زیر رو قرار بدین.

Me.MdiParent = Form1من الان دارم یه نرم افزار حسابداری مینویسم و همینطوری فرمهای فرزندم رو ایجاد کردم و فقط هم یه بار باز میشن.

mostafaaa
سه شنبه 18 تیر 1387, 10:02 صبح
یه راه حله دیگه هم اینه.

Dim obj As New Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
obj.MdiParent = Me
obj.Show()
End Subاینجوری هر بار که روی button کلیک میکنی دیگه یه فرم جدید درست نمیشه .

kablayi
چهارشنبه 19 تیر 1387, 00:54 صبح
آقا مرسی ..... ولی نمی دونم چرا فایل پروژه ای که به من دادی باز نمیشه ... شما از چه ورژن VS استفاده می کنی

این ارور رو به من میده
http://i29.tinypic.com/2rcap29.jpg

سلام ...
VS 2008

khz-web1
چهارشنبه 19 تیر 1387, 07:02 صبح
یه راه حله دیگه هم اینه.

Dim obj As New Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
obj.MdiParent = Me
obj.Show()
End Subاینجوری هر بار که روی button کلیک میکنی دیگه یه فرم جدید درست نمیشه .

دوست عزیز سعی کن همیشه یه چیزی رو کامل بخونی.... من مشکلم این نیست....

khz-web1
چهارشنبه 19 تیر 1387, 07:20 صبح
سلام ...
VS 2008

آقا واقعا از شما تشکر می کنم .... خیلی افتادی تو زحمت (روی دکمه ی تشکر هم زدم)

kablayi
چهارشنبه 19 تیر 1387, 14:53 عصر
آقا واقعا از شما تشکر می کنم .... خیلی افتادی تو زحمت (روی دکمه ی تشکر هم زدم)

خواهش میکنم چه قابلی داشت .. وظیفه بود ... :خجالت:

:چشمک: موفق باشید ...