65.9K
CodeProject 正在变化。 阅读更多。
Home

可调整大小的组合框

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.75/5 (8投票s)

2011年2月22日

CPOL

1分钟阅读

viewsIcon

37976

downloadIcon

1476

可调整大小的组合框

引言

当我创建一个使用 DataGridComboBox 的项目时,我希望获得一个可调整大小的 ComboBox,以便将其 Height 设置为 DataGrid 单元格的 Height。 这是我尝试创建可调整大小的 ComboBox ActiveX 的过程,现在我可以更改它的 Height。 一些程序员使用 FormListBoxTextBoxButton 来创建 ComboBox,但我使用 PanelComboBoxTextBoxButton 来创建我的 ActiveX。

背景

我使用 Panel 来隐藏 ComboBox 的上部,并将此 Panel 作为 TextBoxButton 的容器。

关于我的 ActiveX 项目

Name of the Project is: MKCombo
Name of UserControl is: KCombo
Name of Panel is: ComboHide
Name of ComboBox is: ComboCtrl
Name of TextBox is: ComboText
Name of Button is: ComboButton

解压 Combo_C#.zipCombo_VB.zip 文件后,您可以打开 'SizableCombo' 解决方案来阅读 'MKCombo' 项目中的 ActiveX 代码,并在 'SizableCombo' 项目中阅读代码以测试 ActiveX。 我尝试使用 'DataSource' 将我的 ActiveX 与数据绑定,但没有成功,然后我使用了另一种方法。

我的 ActiveX 具有

Event: cmbSelectedChanged for SelectedIndexChanged event.
Property: cmbBorderStyle for BorderStyle property.
Property: cmbSelectedIndex for SelectedIndex property.
Property: cmbSelectedItem for SelectedItem property.
Property: cmbText for Text property.
Property: cmbItemsCount for Items.Count property.
Method: cmbAddItem for Items.Add method.
Method: cmbClear for Items.Clear method.

Using the Code

C# 代码用于将 ActiveX 与数据绑定

public void cmbBindData(string cmbSql, OleDbConnection cmbCnn, string cmbField)
{ 
    if (cmbCnn.State == ConnectionState.Open)
        cmbCnn.Close(); 
    cmbCnn.Open(); 
    OleDbCommand cmdReader = new OleDbCommand(cmbSql, cmbCnn);
    OleDbDataReader datRdr = cmdReader.ExecuteReader(); 
    ComboCtrl.Items.Clear(); 
    while (datRdr.Read())
    { 
        ComboCtrl.Items.Add(datRdr[cmbField]); 
    } 
    ComboCtrl.SelectedIndex = 0;
} 

VB 代码用于将 ActiveX 与数据绑定

Public Sub cmbBindData(ByVal cmbSql As String, _
    ByVal cmbCnn As OleDbConnection, ByVal cmbField As String)
    If (cmbCnn.State = ConnectionState.Open) Then cmbCnn.Close()
    cmbCnn.Open()
    Dim cmdReader As OleDbCommand = New OleDbCommand(cmbSql, cmbCnn)
    Dim datRdr As OleDbDataReader = cmdReader.ExecuteReader()
 
    ComboCtrl.Items.Clear()
    While (datRdr.Read())
       ComboCtrl.Items.Add(datRdr(cmbField))
    End While 
   ComboCtrl.SelectedIndex = 0
End Sub

备注

执行测试项目时,请调整任何行的大小,以查看 ComboBox 如何更改其 Height

结束语

我希望这篇文章对您有所帮助。 如果您有任何想法,请告诉我。 感谢 CodeProject,感谢大家。

Mostafa Kaisoun
m_kaisoun@hotmail.com 

历史

  • 2011 年 2 月 21 日:初始版本
© . All rights reserved.