PDA

View Full Version : استفاده از ابزارهای یک فرم دیگر



نسرین2000
چهارشنبه 04 دی 1392, 08:23 صبح
تو پروژم دو تا فرم دارم فرم1 و فرم5
تو فرم 1 یک combobox گذاشتم و تو فرم 5 چند تا checkbox به نامهای check101,check102,check103,check104,check105
حالا می خوام وقتی برنامه اجرا میشه هر کدوم از چک باکسهای فرم5 که تیک خورده بودن در لیست combobox فرم 1بیاد.
یعنی اگر 101و102و105 تیک خورده باشند در کمبوباکس این سه تا آیتم بیاد .
کد زیر رو مینویسم

If form5.check101 = True Then
cbo.Items.Add(101)
End If

ولی پیغام میده check101 is not member pf system.windows.forms.form


<
ကျွန်ုပ်ဇော်ဂျီဖ င့်ယူနီကုတ်ဖြင့် ော်ဂျီကီးဘုတ်ဖြင ့် ယူနီကုတ် ရေးမدو تا فرم دارم فرم1 و فرم5

sagggad
چهارشنبه 04 دی 1392, 08:31 صبح
دوست من شما باید از کدهای زیر استفاده کنی:

If Form5.Check101.Checked Then
ComboBox1.Items.Add(Form5.Check101.Name)
End If
If Form5.Check102.Checked Then
ComboBox1.Items.Add(Form5.Check102.Name)
End If
If Form5.Check103.Checked Then
ComboBox1.Items.Add(Form5.Check103.Name)
End If
If Form5.Check104.Checked Then
ComboBox1.Items.Add(Form5.Check104.Name)
End If
If Form5.Check105.Checked Then
ComboBox1.Items.Add(Form5.Check105.Name)
End If

sagggad
چهارشنبه 04 دی 1392, 08:37 صبح
این هم سورسش:
لینک دانلود:114385
موفق باشید:لبخندساده:

نسرین2000
چهارشنبه 04 دی 1392, 09:51 صبح
آقا سجاد چه طوری باید این لینک رو باز کنم ؟:خجالت:ببخشید من تازه کارم خیلی چیزهای ساده رو بلد نیستم
کد بالا رو هم می نویسم ولی باز هم ارور میده که check101 is not member pf system.windows.forms.form
چه طوری باید check101 رو براش تعریف کنم ؟

نسرین2000
چهارشنبه 04 دی 1392, 09:54 صبح
چون وقتی دانلودش می کنم و بازش میکنم پیغام میده که نمی تونه بازش کنه .
من با 2012 کار می کنم

sagggad
چهارشنبه 04 دی 1392, 10:19 صبح
برنامه ای که من دادم هم با2012 نوشته شده دیگه!!!شما وقتی دانلود کردید اون پوشه CheckBox رو بیارید رو دسکتاپ و بعد ازداخل اون اجراش کنید.یعنی نباید از داخل خود فایل زیپ بازش کنید. اگه میتونین همون قسمت برنامه رو بذارید ببینم چه شه؟؟

xxnagin
چهارشنبه 04 دی 1392, 19:28 عصر
سلام
از این کد استفاده کن نسبت به کد بالا هم جای کمتر و هم بهتر

ComboBox1.Items.Clear()
For Each Chk As CheckBox In Form2.Controls
If TypeOf (Chk) Is CheckBox Then
If Chk.Checked Then
ComboBox1.Items.Add(Chk.Name)
End If
End If
Next

sagggad
چهارشنبه 04 دی 1392, 20:56 عصر
سلام
از این کد استفاده کن نسبت به کد بالا هم جای کمتر و هم بهتر

ComboBox1.Items.Clear()
For Each Chk As CheckBox In Form2.Controls
If TypeOf (Chk) Is CheckBox Then
If Chk.Checked Then
ComboBox1.Items.Add(Chk.Name)
End If
End If
Next



ولی اون طوری بهتر به خصوصیات و...دسترسی داریم!!:لبخندساده:

xxnagin
چهارشنبه 04 دی 1392, 21:38 عصر
جواب شما درسته منم نگفتم اشتباهه
کلا ما در اینجا به خصوصیت و چیزهای دیگه کاری نداریم و بلکه باید ببینم سوال چی میگه بعد جواب منطقی به سوال میدیم
سوال اینه


حالا می خوام وقتی برنامه اجرا میشه هر کدوم از چک باکسهای فرم5 که تیک خورده بودن در لیست combobox فرم 1بیاد.
یعنی اگر 101و102و105 تیک خورده باشند در کمبوباکس این سه تا آیتم بیاد .
یعنی شما اگر 50 یا 100 تا چکباکس بود باز هم همین کد رو مینوشتی
در ضمن این کد رو هم اول کدت بذار
ComboBox1.Items.Clear()
وگرنه بعد از هر بار تغییر ایتم های combobox زیاد میشن

sagggad
چهارشنبه 04 دی 1392, 21:45 عصر
درست میگی این قطعه کد رو یادم رفت.

نسرین2000
شنبه 07 دی 1392, 09:13 صبح
سلام دوستان
با عرض معذرت من دو روز به نت دسترسی نداشتم
ممنون از پاسخها و راهنماییهاتون ولی هر دو راه رو امتحان کردم و با هیچ کدوم موفق نشدم :عصبانی++:
راه حل آقا سجاد همون ارور رو می ده که در بالا گفتم و راه حل دوم که ارور نمی ده ولی اصلا کامبو باکسم پر نمی شه:گریه:

sagggad
شنبه 07 دی 1392, 09:27 صبح
سلام دوستان
با عرض معذرت من دو روز به نت دسترسی نداشتم
ممنون از پاسخها و راهنماییهاتون ولی هر دو راه رو امتحان کردم و با هیچ کدوم موفق نشدم :عصبانی++:
راه حل آقا سجاد همون ارور رو می ده که در بالا گفتم و راه حل دوم که ارور نمی ده ولی اصلا کامبو باکسم پر نمی شه:گریه:

شما سورس رو دانلود کردید؟؟شما باید با کدهایی که من دادم توسط متد Checked تست کنید که آیا چک شده یا نه.اگه مشکلی در سورس بود بگو

sagggad
شنبه 07 دی 1392, 09:34 صبح
ببین دوست من این کد شرطی هست که شما گذاشتی:


If form5.check101 = True Then
cbo.Items.Add(101)
End If


ایرادات:
1- خط اول کد یعنی : If form5.check101 = True Then یک دستور و شرط کاملا اشتباه است.چون خود Check101 به تنهایی نمیتواند True یا False باشد و برای اینکه متوجه شویم آیا در حالت انتخاب قرار دارد یا خیر باید از خصوصیت Checked استفاده کنیم که در اصل کد صحیح کد زیر است:

If Form5.Check101.Checked = True Then

2-خط دوم کد یعنی:(cbo.Items.Add(101 باز هم یک کد کاملا اشتباه است.زیرا آیتم کامبوباکس یک متن String است.اما 101 چیست؟؟آیا یک متن است؟؟حتی اگر به جای 101 مینوشتید:Check101 یعنی همون کنترل بازهم اشتباه بود زیرا آیتم کامبوباکس باید از نوع String باشد اما Check101 از نوع Control است.
پس برای اینکه آیتم کامبوباکس به یکی از خصوصیت های String مرتبط شود میتوانیم آن را به خصوصیت Text یا Name چک باکس مربوط کنیم به صورت زیر:


cbo.Items.Add(Form5.Check101.Text)
یعنی دستور کلی به صورت زیر است:

If Form5.Check102.Checked = True Then
cob.Items.Add(Form5.Check102.Text)
End If

ضمنا دقت داشته باشید که هرجا اسم از چک باکس ها میاید باید قبل از آن کلمه ی Form5 را تایپ کنید.
موفق باشید

boveiryghasem
شنبه 07 دی 1392, 10:49 صبح
سلام

آقا اینو امتحان کن حتما جواب میگیری :

ComboBox1.Items.Clear()
For Each chk As CheckBox In Form1.Controls.OfType(Of CheckBox)()
If chk.Checked = True Then
ComboBox1.Items.Add(chk.Name.ToString())
End If
MsgBox(chk.Name.ToString())
Next

بجای Form1 میتونی اون فرمی رو که کنترل های مورد نظرت توش هست بزاری.

نسرین2000
شنبه 07 دی 1392, 11:48 صبح
دوستان من پروژم رو اتچ می کنم لطفا اگه می تونید ایرادش رو بهم بگید .
دستورات آقا سجاد تو قسمت لود شدن فرم 1 نوشته شده و دستورات آقا قاسم هم تو کدهای مربوط به button1114528

sagggad
شنبه 07 دی 1392, 12:12 عصر
دوست عزیز شما اشتباهی اسم فرم5 رو گذاشتی:ch104!!!اسم فرم رو بذار Form5 و اون متغیری هم که در FormLoad فرم1 به نام Form5 تعریف کردی رو پاک کن.
موفق باشید:لبخندساده:

sagggad
شنبه 07 دی 1392, 12:38 عصر
یه اشتباه دیگه شما اینه که یه متغیر سراسری به اسم Form5 تعریف کردین!!درحالی که این متغیر با خود فرم5 قاطی میشه وبرنامه اون متغیر رو در اولویت قرار میده.در نتیجه شما نمیتونین به اشیاء اون فرم دسترسی پیدا کنین.یعنی نیازی به تعریف اون متغیر برای دسترسی به اشیاء اون فرم نیست.این موضوع در سی شارپ هست که باید برای دسترسی متغیر تعریف کرد اما در وی بی فقط کافیه قبل از اسم شی نام فرم مورد نظر رو بویسید.
پس هرجایی که به این اسم متغیر تعریف کردین اون رو پاک کنین.
خلاصه تو این برنامه چند مشکل متوالی پیش اومده بود!!!
این هم اصلاح شده برنامه:
114533
موفق باشید:لبخندساده:

نسرین2000
شنبه 07 دی 1392, 12:49 عصر
بی نهایت ممنون:تشویق:
عجب اشتباهی :خجالت:
کد درسته ولی باز هم اطلاعات توی کمبوباکس لود نمیشه ؟؟؟؟؟؟؟؟؟؟؟؟
فکر کنم دیگه از دستم خسته شدی ؟

نسرین2000
شنبه 07 دی 1392, 12:51 عصر
یه لحظه صبر کن فکر کنم داره درست میشه

sagggad
شنبه 07 دی 1392, 13:09 عصر
شما باید تو رویداد CheckedChanged چک باکس کدهات رو بنویسی.به صورت زیر:

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked = True Then
Form1.ComboBox1.Items.Add(CheckBox1.Text)
End If
End Sub
بعد تو همین رویداد هر کدوم از چک باکس هات این کد رو تکرار کن.فقط به اسم خودشون.یعنی هر جا CheckBox1 هست به اسم اون چک باکس تغییر بده.
موفق باشید