我做了一個自定義的用戶控件,包含一個複選框以及幾個文本框和一些代碼。我發現它在設計模式中顯示在組件工具箱中,但是當我將它拖到項目中時,它給了我一個錯誤,如「未能創建組件」,「未找到構造函數」以及圍繞稱爲綁定的一些聲明。在設計模式中添加自定義控件
我本來並不打算在設計模式中使用它,但由於我現在知道它的一種可能性,如果它有可能使其設計模式兼容,id有興趣?
編輯: 控制組件被設計在設計模式中,它們是 「cCheckbox」 - 一個通/斷開關 「cInterval」 - 一個文本框僅允許數字 「CUNIT」 - 一個下拉組合框與來自單元第二至每天 控制的目的是提供產生打勾事件在你的構造方案
Public Class ucTimer1
Public Event Tick(time As Date)
Private WithEvents t As New Timer With {.Interval = 1000}
Private lastTick As DateTime = DateTime.UtcNow
Private interval As TimeSpan
Public persistent As Boolean = True
Public sDat As New List(Of Object)
Public Sub New(Optional sDat() As Object = Nothing)
InitializeComponent()
turnOff()
AddHandler cCheck.CheckedChanged, Sub() If cCheck.Checked Then turnOn() Else turnOff()
cUnit.SelectedIndex = 1
If Not sDat Is Nothing Then
lastTick = sDat(0)
cInterval.Text = sDat(1)
cUnit.SelectedIndex = sDat(2)
cCheck.Checked = sDat(3)
End If
End Sub
Public Sub textFilter(sender As Object, e As KeyPressEventArgs) Handles cInterval.KeyPress
If e.KeyChar <> Convert.ToChar(8) Then
If Not "".Contains(e.KeyChar.ToString) Or cInterval.Text.Length > 2 Then
e.Handled = True
End If
End If
End Sub
Public Sub turnOff()
If cCheck.Checked = True Then cCheck.Checked = False
cCheck.ForeColor = Color.DarkRed
cInterval.Enabled = False
cUnit.Enabled = False
cIntervalBackground1.BackColor = BackColor
cIntervalBackground2.BackColor = BackColor
save()
End Sub
Public Sub turnOn()
If cCheck.Checked = False Then cCheck.Checked = True
cInterval.Enabled = True
cUnit.Enabled = True
cIntervalBackground1.BackColor = cInterval.BackColor
cIntervalBackground2.BackColor = cInterval.BackColor
evalInterval()
End Sub
Private Sub evalInterval() Handles cInterval.TextChanged, cUnit.SelectedIndexChanged
Dim seconds As Integer
If Not Integer.TryParse(cInterval.Text, seconds) Then seconds = 0
Select Case cUnit.SelectedIndex
Case 0
seconds *= 1
Case 1
seconds *= 60
Case 2
seconds *= 3600
Case 3
seconds *= 86400
Case Else
seconds *= 0
End Select
If seconds < 1 Then
cCheck.ForeColor = Color.DarkRed
t.Enabled = False
Else
interval = New TimeSpan(0, 0, seconds)
cCheck.ForeColor = Color.Green
t.Enabled = True
End If
save()
End Sub
Private Sub ticker() Handles t.Tick
If interval = Nothing Then Return
If DateTime.Now - lastTick > interval Then
lastTick = DateTime.Now
RaiseEvent Tick(DateTime.Now)
End If
End Sub
Private Sub save()
If Not persistent Then Return
sDat.Clear()
sDat.Add(lastTick)
sDat.Add(cInterval.Text)
sDat.Add(cUnit.SelectedIndex)
sDat.Add(cCheck.Checked)
End Sub
End Class
你能張貼您的碼? – Jade