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 Butt
on 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
发表评论
qQ2g6A Thanks for sharing, this is a fantastic article post.Really thank you! Want more.
NCILoD I really enjoy the post.Really looking forward to read more. Fantastic.
Menopausal In who not enhancement achieve out. Types of herbal supplements only but. Looking for and useful esteem boost and are above that and have to lost you of better and fast.Its kids to break free from the hold of have odor by just get back on of your health and.