我正在構建一個有許多按鈕的表單,所有按鈕都做同樣的事情:每次點擊它們時加 1。每個按下的按鈕都會連同它們被按下的時間一起發送到 datagridview。資料網格值如下所示:
a_1_serv (button name), 18:05:00(time).
有時我想洗掉最后一行。到目前為止一切正常。
當我洗掉最后一行時,我想更改按鈕 (a_1_serv) 的文本。
我可以將 dgv 值 (a_1_serv) 決議為一個變數,但我無法將它系結到適當的按鈕名稱,因此我可以控制它。
有沒有辦法做到這一點?
uj5u.com熱心網友回復:
不要將程式狀態存盤在 UI 中
創建一個資料結構來保存資訊,并讓 DataGridView 成為“視圖”,而不是將其視為變數。與使用 UI 作為變數相比,您將省去自己的麻煩。
也就是說,創建一個類來表示您的資訊
Public Class Data
Public Sub New(button As Button, time As DateTime)
Me.Button = button
Me.Time = time
End Sub
<System.ComponentModel.Browsable(False)>
Public Property Button As Button
Public ReadOnly Property Text As String
Get
Return Button.Name
End Get
End Property
Public Property Time As DateTime
End Class
您的代碼可以在 UI 之外的變數中操作資料。將資料系結到 DataGridView 進行顯示。
Private datas As New List(Of Data)()
Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click
addButton(DirectCast(sender, Button))
End Sub
Private Sub RemoveLastButton_Click(sender As Object, e As EventArgs) Handles RemoveLastButton.Click
removeLast()
End Sub
Private Sub addButton(b As Button)
datas.Add(New Data(b, DateTime.Now))
bindData()
End Sub
Private Sub removeLast()
Dim b = datas.Last.Button
b.Text = "new text" ' change to whatever
datas.RemoveAt(datas.Count - 1)
bindData()
End Sub
Private Sub bindData()
DataGridView1.DataSource = Nothing
DataGridView1.DataSource = datas
End Sub
這正是您所說的,但是您提供的這兩個資訊可能不一致:a_1_serv(按鈕名稱)并且我想更改按鈕的文本...。這會更改按鈕文本,但不會更改名稱。名稱顯示在網格中。您可以更改資料類以顯示文本或其他內容。但關鍵是這種方法將使您的資料遠離 UI,并且您不再需要按名稱查找控制元件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/473610.html
標籤:VB.net
下一篇:在vb.net中使用類的問題
