程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 用ActiveX控件封裝MaskEdit控件--解決不能綁定的問題

用ActiveX控件封裝MaskEdit控件--解決不能綁定的問題

編輯:VB綜合教程

  參考決定或改作通用的activeX控件.

  (1)新建一ActiveX Control工程.

  放置一maskedit控件於上.

  其設置屬性參考如下:

  usercontrol之name:DataDate.

  usercontrol之DataBindingBehavior設定1-VvbSimpleBound

  MaskedtBox之name:mskDate.

  (2).新增一數據屬性用於綁定.操作如下(我用為繁體系統,可能說法不大一樣).

  打開菜單: 增益集-->增益集管理員.

  載入Visual Basic AcitveX控制項介面精靈並啟動.

  運行至:建立自訂的介面成員處新增一Property:DateValue(此屬性即為您要操作綁定的東東).

  下一步確定對應關系:

  將常用的公用項目中的屬性事件按照綁定至mskDate.如mskDate無相關之屬性和可綁定至usercontrol上.

  在公用項目中將DateValue之資料類型設定Date型

  完成上述操作.

  (3). 將DateValue設定資料綁定屬性.

  點選usercontrol。

  打開 工具--->程序屬性.

  從名稱欄位選擇DateValue.

  將資料連結項中如下選擇打上勾:

  “屬性具資料連結功能”

  “在屬性值改變前,先呼叫CanPropertyChange.

  “即時更新”

  此時DataValue即具有數據綁定功能。此控件的屬性中就會增加諸如DataSource.DataField等東東.

  (4).編寫代碼。

  a.設定控件大小.

  

Private Sub UserControl_Resize()
          MskDate.Move 0, 0, UserControl.Width, usercontrol.Height
 
        End Sub
       
        b.將dateValue的代碼修正如下:
    
        Public Property Let DateValue(ByVal New_DateValue As Date)
   
        m_DateValue = New_DateValue
   
        PropertyChanged "DateValue"
   
        If Not IsEmpty(m_DateValue) Then
     
        If IsDate(m_DateValue) Then
       
        If Year(m_DateValue) > 1970 Then
         
        MskDate.Text = Format(m_DateValue, "yyyy/mm/dd")
       
        Else
         
        MskDate.Text = "____/__/__"
       
        End If
     
        Else
       
        MskDate.Text = "____/__/__"
     
        End If
   
        Else
     
        MskDate.Text = "____/__/__"
   
        End If
 
        End Property

  ,此處即為判斷所傳進來的值是否合乎要求,如果是有效的話就顯示在mskDate中,否則就顯示成其他的方式。

  

Private Sub MskDate_Validate(Cancel As Boolean)
If IsDate(Trim(MskDate.Text)) Then
  
        If CanPropertyChange("DateValue") Then
    
        m_DateValue = CDate(MskDate.Text)
    
        PropertyChanged "DateValue"
  
        End If
Else
  
        MsgBox "Invalid date value!", vbExclamation, "Date Error!"
  
  
        If Not IsEmpty(m_DateValue) Then
    
        If IsDate(m_DateValue) Then
      
        If Year(m_DateValue) > 1970 Then
        
        MskDate.Text = Format(m_DateValue, "yyyy/mm/dd")
      
        Else
        
        MskDate.Text = "____/__/__"
      
        End If
    
        Else
      
        MskDate.Text = "____/__/__"
    
        End If
  
        Else
    
        MskDate.Text = "____/__/__"
  
        End If
  
End If
End Sub

  '此處即判斷mskDate的值是否有效,如果有效的話就調用  PropertyChanged "DateValue" . 資料就會更改DataField所綁定的資料欄位的值 .

  最後將工程編譯成控件DataDate.ocx 加以引用,DataValue屬性即相當於text的text屬性在文檔中可以直接調用.

  用以上方法可以自定義資料綁定控件用於我們的特殊處理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved