第一次访问这个网站,我的时间有点短...... 所以,它可能比我找不到的东西那么容易....
我使用一个按钮来显示几个文本框和其他控件,并为它们提供一个对象的数据。
我在最后有一个ok按钮和一个事件处理程序,我想将控件中的新数据传回到对象中。
这是我使用的代码:
Dim txtTitleM As New TextBox
txtTitleM.AutoSize = True
txtTitleM.Text = task.title
pnlTask.Controls.Add(txtTitleM)
indexY = txtTitleM.Size.Height + 10
Dim txtDescriptionM As New TextBox
With txtDescriptionM
.AutoSize = True
.Location = New Point(0, indexY)
.Text = task.description
End With
pnlTask.Controls.Add(txtDescriptionM)
indexY = indexY + txtDescriptionM.Size.Height + 10
Dim cboCategoryM As New ComboBox
Dim Item As Object
For Each Item In cboCategory.Items
With cboCategoryM.Items
.Add(Item)
End With
Next
With cboCategoryM
.AutoSize = True
.Location = New Point(0, indexY)
.SelectedIndex = task.category
End With
pnlTask.Controls.Add(cboCategoryM)
indexY = indexY + cboCategoryM.Size.Height + 10
Dim chkDeadLine As New CheckBox
With chkDeadLine
.AutoSize = True
.Location = New Point(0, indexY)
.Text = "DeadLine"
.Checked = task.deadline <> Nothing
End With
pnlTask.Controls.Add(chkDeadLine)
indexY = indexY + chkDeadLine.Size.Height + 10
If chkDeadLine.Checked Then
Dim dtpDate As New DateTimePicker
With dtpDate
.AutoSize = True
.Location = New Point(0, indexY)
.Value = task.deadline.Date
End With
pnlTask.Controls.Add(dtpDate)
indexY = indexY + dtpDate.Size.Height + 10
End If
Dim pnlBtnMod As New Panel
pnlBtnMod.AutoSize = True
'pnlBtnMod.Location = New Point(0, indexY + 10)
pnlBtnMod.Dock = DockStyle.Bottom
grpTask.Controls.Add(pnlBtnMod)
Dim btnOkMod As New Button
btnOkMod.Text = "Ok"
'btnOkMod.AutoSize = True
'btnOkMod.AutoSizeMode = Windows.Forms.AutoSizeMode.GrowAndShrink
pnlBtnMod.Controls.Add(btnOkMod)
btnOkMod.Location = New Point(10, 0)
AddHandler btnOkMod.Click, AddressOf clickOkModTask
和hendler:
Private Sub clickOkModTask(sender As Object, e As EventArgs)
Dim task As Task = findTask(sender)
If Not task Is Nothing Then
With task
.title = txtTitleM.text
.description = txtDescriptionM.text
'.category =
'.deadline
End With
End If
End Sub
我知道findTask(发送者)不起作用我有txtTitleM声明或动态添加任何其他控件的麻烦。我不能把“公共Dim文本框作为新的文本框”......所以我不知道我能用什么......
感谢您的时间,感谢您的回复。
答案 0 :(得分:0)
所以:
findTask
将返回pnlBtnMod
,因为btnOkMod
不属于Controls
grpTask
Controls
pnlBtnMod
pnlBtnMod
}}
grpTask
再次调用它才能获得grpTask
,因为这是按钮和文本框之间的根现在你得到grpTask
但是Controls的任务数组不包含你的TextBox。
pnlBtnMod
包含2个面板(pnlTask
和task.Controls(1) as Panel
)Name
)现在你有了TextBox-s的面板
Tag
属性)以查找它们。添加一个难看的解决方案:
btnOkMod
中displayTask
的{{1}}属性设置为这些TextBox或TextBoxes数组