المشاركات : 58
المواضيع 15
الإنتساب : Oct 2016
السمعة :
0
الشكر: 51
تم شكره 24 مرات في 18 مشاركات
السلام عليكم ورحمة الله وبركاته
اخوتي عندي سؤال
كيف يمكنني ان اتعامل مع الاحداث للادوات التي يتم انشاءها بالكود؟؟
يعني مثال مبسط حتى تصل الفكرة
لو انشأت زر Button في وضع اللود للفورم
كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim btn As New Button
Me.Controls.Add(btn)
End Sub
الان ابي اتعامل مع البوتن اللي انشأته كيف؟؟؟
يعني ابي اوصل للاحداث Events - ابي اغير خصائصه properties
ولكم شكري مقدما
المشاركات : 595
المواضيع 1
الإنتساب : Dec 2016
السمعة :
45
الشكر: 0
تم شكره 544 مرات في 355 مشاركات
السلام عليكم
اولا قومي بتعريف ال Button في الكلاس وليس داخل حدث ومنها تستطيعي التحكم به بشكل حامل وهذا مثال
كود :
Dim btn As Button
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
btn = New Button
btn.Text = "الزر الأول"
btn.Location = New Point(10, 10)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)
btn = New Button
btn.Text = "الزر الثاني"
btn.Location = New Point(10, 40)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)
End Sub
Private Sub btn_Click(sender As System.Object, e As System.EventArgs)
' حدث النقر
MsgBox(sender.Text)
End Sub
المشاركات : 58
المواضيع 15
الإنتساب : Oct 2016
السمعة :
0
الشكر: 51
تم شكره 24 مرات في 18 مشاركات
جميل جداً
لكن واجهتني مشكلة وهي ان الاداة button يتم توليدها أثناء تشغيل البرنامج بواسطة جملة for فكيف أكتب الأوامر داخل الحدث click للاداة؟؟
المشاركات : 1,486
المواضيع 101
الإنتساب : Sep 2012
السمعة :
127
الشكر: 71
تم شكره 6155 مرات في 1035 مشاركات
31-01-17, 12:18 AM
(آخر تعديل لهذه المشاركة : 31-01-17, 12:24 AM {2} بواسطة silverlight.)
في الحدث الخاص بالباتون عليك أن تحدد الباتون الذي سيؤدي الوظيفة
PHP كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim btn As Button = New Button With btn .Text = "Any Text" .Location = New Point(10, 10) End With AddHandler btn.Click, AddressOf Btn_Click Me.Controls.Add(btn) End Sub
Private Sub Btn_Click(sender As Object, e As EventArgs) ' اكتب ما تريده في الحدث
Dim b As Button = CType(sender, Button) Select Case b.Text Case "Any Text" Me.Close()
End Select
End Sub
المشاركات : 58
المواضيع 15
الإنتساب : Oct 2016
السمعة :
0
الشكر: 51
تم شكره 24 مرات في 18 مشاركات
31-01-17, 12:51 AM
(آخر تعديل لهذه المشاركة : 31-01-17, 12:51 AM {2} بواسطة اليوم مبتدئة وغداً محترفة.)
(31-01-17, 12:18 AM)silverlight كتب : في الحدث الخاص بالباتون عليك أن تحدد الباتون الذي سيؤدي الوظيفة
PHP كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim btn As Button = New Button With btn .Text = "Any Text" .Location = New Point(10, 10) End With AddHandler btn.Click, AddressOf Btn_Click Me.Controls.Add(btn) End Sub
Private Sub Btn_Click(sender As Object, e As EventArgs) ' اكتب ما تريده في الحدث
Dim b As Button = CType(sender, Button) Select Case b.Text Case "Any Text" Me.Close()
End Select
End Sub
انا اقصد لما يكون توليد البوتون بجملة فور
يعني لو عملت جملة فور تولد 5 بوتون
كيف اكتب الاوامر حق الحدث لكل بوتون؟؟
المشاركات : 576
المواضيع 116
الإنتساب : Feb 2014
السمعة :
28
الشكر: 388
تم شكره 438 مرات في 204 مشاركات
31-01-17, 01:26 AM
(آخر تعديل لهذه المشاركة : 31-01-17, 01:27 AM {2} بواسطة bidaya.)
(31-01-17, 12:51 AM)اليوم مبتدئة وغداً محترفة كتب : انا اقصد لما يكون توليد البوتون بجملة فور
يعني لو عملت جملة فور تولد 5 بوتون
كيف اكتب الاوامر حق الحدث لكل بوتون؟؟
معذرتا للتدخل
كود :
Dim b As Button = CType(sender, Button)
Select Case b.Text
Case "Any Text"
Me.Hide()
End Select
Select Case b.Text
Case "Any Text1"
Me.Close()
End Select
اظن هكذا يتم التمييز بين الازرار
المشاركات : 1,486
المواضيع 101
الإنتساب : Sep 2012
السمعة :
127
الشكر: 71
تم شكره 6155 مرات في 1035 مشاركات
PHP كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim pt As Point = New Point(10, 10) For i As Integer = 0 To 5 Dim btn As Button = New Button With btn btn.Location = pt btn.Text = "button" & (i + 1).ToString ' إضبط خصائص الباتون كيفما شئت End With ' هنا يتم ضبط مكان كل باتون pt.Y += btn.Height + 1 Me.Controls.Add(btn) Next
' هنا نضيف الحدث لكل باتون For Each b As Button In Me.Controls AddHandler b.Click, AddressOf Btn_Click Next
End Sub
Private Sub Btn_Click(sender As Object, e As EventArgs) ' اكتب ما تريده في الحدث
' هنا نختار الباتون بناء علي التكست الخاص به ' ثم نحدد ما يجب أن يحدث عند الضغط علي الباتون Dim b As Button = CType(sender, Button) Select Case b.Text Case "button1" Me.Close() Case "button2" Me.BackColor = Color.Blue Case "button3" Me.Text = "any text" Case "button4"
Case "button5"
Case "button6"
End Select
End Sub
المشاركات : 58
المواضيع 15
الإنتساب : Oct 2016
السمعة :
0
الشكر: 51
تم شكره 24 مرات في 18 مشاركات
جدا جدا جميل
بس باقي مشكلة وهي اني اريد في جملة select case يتم توليد الحالات بعدد البوتونات اللي تم توليدها بجملة for وبنفس الاسماء لان جملة فور عندي ليست من 1 الى 5 بل تقوم بجلب سجلات من قاعدة بيانات
انا الشغل مضبوط معاي بس باقي توليد الكيسات بعدد البوتونات التي تم توليدها في جملة for وبنفس الاسماء
المشاركات : 595
المواضيع 1
الإنتساب : Dec 2016
السمعة :
45
الشكر: 0
تم شكره 544 مرات في 355 مشاركات
المشاركات : 58
المواضيع 15
الإنتساب : Oct 2016
السمعة :
0
الشكر: 51
تم شكره 24 مرات في 18 مشاركات
هذا البرنامج بعد التعديل حسب تعليمات الاخوة اللي ردو
أول شي جملة الفور
كود :
For a As Integer = 0 To ds.Tables("ccc").Rows.Count - 1
Dim flp As New FlowLayoutPanel
flp.Name = "flpHead" + ds.Tables("ccc").Rows(a).Item("Type_Info_id").ToString
flp.FlowDirection = FlowDirection.LeftToRight
flp.AutoSize = True
flp.AutoSizeMode = Windows.Forms.AutoSizeMode.GrowAndShrink
flph.Controls.Add(flp)
Dim lbl As New Label
lbl.Name = "lbl" + ds.Tables("ccc").Rows(a).Item("Type_Info_id").ToString
lbl.Text = ds.Tables("ccc").Rows(a).Item("Type_Info_name").ToString
flp.Controls.Add(lbl)
Dim pic As New PictureBox
pic.Name = "pic" + ds.Tables("ccc").Rows(a).Item("Type_Info_id").ToString
pic.Size = New Size(20, 20)
pic.SizeMode = PictureBoxSizeMode.StretchImage
pic.Image = Image.FromFile("D:\Users\dell\pic\reals.jpg")
AddHandler pic.Click, AddressOf pic_click
flp.Controls.Add(pic)
Next
طبعا الاداة المعنية في سؤالي هي picturebox
ثانيا الحدث Click للأداة picturebox
كود :
Private Sub pic_click(sender As Object, e As EventArgs)
Dim b As PictureBox = CType(sender, PictureBox)
Select Case b.Name
Case "pic" + ds.Tables("ccc").Rows(0).Item("Type_Info_id").ToString
MsgBox("010")
Case "pic" + ds.Tables("ccc").Rows(1).Item("Type_Info_id").ToString
MsgBox("020")
Case "pic" + ds.Tables("ccc").Rows(2).Item("Type_Info_id").ToString
MsgBox("030")
Case "pic" + ds.Tables("ccc").Rows(3).Item("Type_Info_id").ToString
MsgBox("040")
Case "pic" + ds.Tables("ccc").Rows(4).Item("Type_Info_id").ToString
MsgBox("050")
End Select
End Sub
هنا عملت الكيسات يدوي بس انا ابغاه يعملها تلقائي لأن عددها مو معروف
|