อยากถาม วิธี เก็บปุ่มที่กดไว้หลายๆปุ่ม เพื่อเอามาสั่่งในภายหลังครับ
สวัสดิ์ครับ ผมโปรแกรมเมอร์มือสมัครเล่นนะครับ
มีเรื่องอยากถามครับ
คือตอนนี่ผมทำโปรเจ็คตัวนึง เป็นโปรแกรมขายตั๋วหนังครับ
หน้าตาโปรแกรมคือปุ่มเอามาเรียงเป็นเก้าอี้แล้วให้กดเลือกว่าจะซื้อตั๋วเก้าอี้ตำแหน่งไหนครับ(เหมือนโปรแกรมที่เค้าเตอร์เวลาไปซื้อตั๋วอะครับ)
โดยกดเลือกเก้าอี้ที่ต้องการซื้อแล้ว เมื่อกด ปุ่ม confirm ปุ่มเหล่านั้นที่เลือกไว้ ก็จะ Enable = false
ปัญหา คือ ผมต้องการเก็บปุ่มที่กดไว้เพื่อจะเอามาสั่งให้มัน Enable = false ผม ควรเก็บปุ่มไว้ในไหนอะครับ
ผมเอาปุ่มไปเก็บไว้ใน datatable แต่มันดันกลายเป็น String
แม้ว่าตอนผมดึงออกมาใช้ผมสร้าง ตัวแปรประเภท button เผื่อเอาปุ่มที่เก็บมาใส่เผื่อจะสั่งก็ไม่ได้
ขอบคุณมากครับ
โค้ดตอนนี้มีแค่นี้ครับ
Code (VB.NET)
Public Class frmTheater
Dim dt As New DataTable
Private Sub frmTheater_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dtAddRowSeat()
End Sub
Private Sub Seat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
A1.Click, A2.Click, A3.Click, A4.Click, A5.Click, A6.Click, A7.Click, A8.Click, A9.Click, A10.Click, A11.Click, A12.Click, A13.Click, _
B1.Click, B2.Click, B3.Click, B4.Click, B5.Click, B6.Click, B7.Click, B8.Click, B9.Click, B10.Click, B11.Click, B12.Click, B13.Click, B14.Click
Dim btn As New Button
btn = sender
If btn.BackColor = Color.White Then
btn.BackColor = Color.Aqua
dt.Rows.Add(btn)
ElseIf btn.BackColor = Color.Aqua Then
btn.BackColor = Color.White
Dim idx As DataRow
idx = dt.Rows.Find(btn)
dt.Rows.Remove(idx)
End If
dgv.DataSource = dt
End Sub
Private Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConfirm.Click
End Sub
Private Sub dtAddRowSeat()
dt.Columns.Add("Seat")
dt.PrimaryKey = New DataColumn() {dt.Columns("Seat")}
End Sub
End Class
Tag : .NET, VB.NET
Date :
2010-11-25 14:49:28
By :
Stricken Seraph
View :
1107
Reply :
5
ทำไมไม่ใช้เป็น label ละครับ ง่ายกว่าด้วยครับ โดยใช้ label เป็น เก้าอี้ แล้วก็ไปเขียนใน event ของ label ที่ชื่อ click ผมว่าน่าจะง่ายกว่าแบบที่คุณทำอยู่น่ะครับ ที่คุณทำมันอาจจะเกิดปัญหา ถ้าลูกค้าเข้าเปลียนที่นั้งจะทำให้่ button กด ไม่ได้แล้วจะเปลียนยัง ?
Date :
2010-11-25 15:42:42
By :
kanchen
"ทำไมไม่ใช้เป็น label ละครับ ง่ายกว่าด้วยครับ โดยใช้ label เป็น เก้าอี้ แล้วก็ไปเขียนใน event ของ label ที่ชื่อ click "
เห็นด้วย
Date :
2010-11-25 15:58:05
By :
watcharop
ขอบคุณครับ ...
งั้นขอถามต่อนะครับ ถ้าผมเปลี่ยนเป็น label แล้วผมจะมีวิธีเก็บ ตัว label ที่กดยังไงครับ
เพื่อที่จะเอา label ที่กดไว้มาสั่งให้เปลี่ยนเป็นสีเทาเมื่อกด confirm ครับ
Date :
2010-11-26 09:18:56
By :
Stricken Seraph
เขียนใน event ของ label ครับ ที่ชื่อว่า click สีก็เหมือนน่ะครับ ส่วนที่ถามว่าจะเก็บยังไงนั้น มันต้องดู table ที่จะเก็บด้วยว่าคุณจะเก็บ
แบบไหน ถึงนะเขียนแบบนั้น เอาเป็นว่าคุณบอกมาแล้วกันว่าคุณจะเก็บข้อมูลที่ทำการจองที่นั้งแบบไหน เพราะการเก็บมันทำได้หลายแบบครับขึ้นอยู่กับการ design มากกว่า
ประวัติการแก้ไข 2010-11-26 10:15:35
Date :
2010-11-26 10:14:40
By :
kanchen
ได้แล้วครับ ผมเก็บชื่อปุ่มไว้ใน datatable แล้วเอาชื่อมาเรียกผ่าน Directcast ครับ
เพื่อควบคุม control นั้นครับ ดูที่ event btn_Confirm อะครับ(อยู๋ล้างสุด)
Code (VB.NET)
Public Class frmTheater120Seat
Dim dt As New DataTable
Private Sub frmTheater_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.BackgroundImage = Cinema.My.Resources.Resources.Theater
dtAddRowSeat()
End Sub
Private Sub Seat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
A1.Click, A2.Click, A3.Click, A4.Click, A5.Click, A6.Click, A7.Click, A8.Click, A9.Click, A10.Click, A11.Click, A12.Click, A13.Click, _
B1.Click, B2.Click, B3.Click, B4.Click, B5.Click, B6.Click, B7.Click, B8.Click, B9.Click, B10.Click, B11.Click, B12.Click, B13.Click, B14.Click, _
C1.Click, C2.Click, C3.Click, C4.Click, C5.Click, C6.Click, C7.Click, C8.Click, C9.Click, C10.Click, C11.Click, C12.Click, C13.Click, _
D1.Click, D2.Click, D3.Click, D4.Click, D5.Click, D6.Click, D7.Click, D8.Click, D9.Click, D10.Click, D11.Click, D12.Click, D13.Click, D14.Click, _
E1.Click, E2.Click, E3.Click, E4.Click, E5.Click, E6.Click, E7.Click, E8.Click, E9.Click, E10.Click, E11.Click, E12.Click, E13.Click, _
F1.Click, F2.Click, F3.Click, F4.Click, F5.Click, F6.Click, F7.Click, F8.Click, F9.Click, F10.Click, F11.Click, F12.Click, F13.Click, F14.Click, F15.Click, F16.Click, F17.Click, F18.Click, _
G1.Click, G2.Click, G3.Click, G4.Click, G5.Click, G6.Click, G7.Click, G8.Click, G9.Click, G10.Click, G11.Click, G12.Click, G13.Click, G14.Click, G15.Click, G16.Click, G17.Click, _
H1.Click, H2.Click, H3.Click, H4.Click, H5.Click, H6.Click, H7.Click, H8.Click, H9.Click, H10.Click, H11.Click, H12.Click, H13.Click, H14.Click, H15.Click, H16.Click, H17.Click, H18.Click
Dim btn As New Button
btn = sender
If btn.BackColor = Color.White Then
btn.BackColor = Color.Aqua
dt.Rows.Add(btn.Name)
ElseIf btn.BackColor = Color.Aqua Then
btn.BackColor = Color.White
Dim idx As DataRow
idx = dt.Rows.Find(btn.Name)
dt.Rows.Remove(idx)
End If
End Sub
Private Sub dtAddRowSeat()
dt.Columns.Add("Seat")
dt.PrimaryKey = New DataColumn() {dt.Columns("Seat")}
End Sub
Private Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConfirm.Click
For i = 0 To dt.Rows.Count - 1
Dim str As String = Trim(dt.Rows(i).Item(0).ToString)
Dim matchingControls As Control() = Controls.Find(str, True)
If matchingControls.Length = 1 Then
DirectCast(matchingControls(0), Button).Enabled = False
DirectCast(matchingControls(0), Button).BackColor = Color.Gray
End If
Next
dt.Rows.Clear()
End Sub
End Class
Date :
2010-12-06 19:53:35
By :
stricken
Load balance : Server 03