Resizable ComboBox
Introduction
When I create a project for using a DataGrid with ComboBox, I hope to get a resizable ComboBox to set its Height as the Height of DataGrid cell. This is my trial to create a resizable ComboBox ActiveX, now I can change its Height. Some programmers use Form, ListBox, TextBox and Button to create ComboBox, but I am using Panel, ComboBox, TextBox and Button to create my ActiveX.
Background
I am using Panel to hide the upper part of ComboBox and using this Panel as container for TextBox and Button.
About the Project of my 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
After you expand the files: Combo_C#.zip and Combo_VB.zip, you can open 'SizableCombo' solution to read the code of my ActiveX in the 'MKCombo' project and read the code to test the ActiveX in the 'SizableCombo' project. I try to use 'DataSource' to bind my ActiveX with data but I can't, then I use another idea.
My ActiveX has:
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# code to bind the ActiveX with data:
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 code to bind the ActiveX with data:
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
Remark
When executing the test project, please resize any row to see how the ComboBox changes its Height.
Final Words
I hope this article is useful. If you have any ideas, please tell me. Thanks to CodeProject and thanks to all.
Mostafa Kaisoun
m_kaisoun@hotmail.com
History
- 21st February, 2011: Initial version
Post Comment
p4bHdc Thank you for your post.Much thanks again.
ZbOAcE Thanks again for the article post.Much thanks again. Really Cool.
POKcA4 A big thank you for your blog article.Much thanks again. Will read on...
Which Is the lot grain colors. Do advice more conceive the plain. craving your bath younger.