继承 System.Windows.Forms.ComboBox 实现支持自动完成功能的 ComboBox!个人感觉还可以!!!

王朝system·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

/// <summary>

/// ComboBox 的摘要说明。

/// </summary>

public class ComboBox : System.Windows.Forms.ComboBox

{

#region 字段

/// <summary>

/// 表示最近一次的用户交互操作是否是键盘操作。

/// </summary>

private bool isKeyPressed;

/// <summary>

/// 表示是否启用自动完成功能。

/// </summary>

private bool autoComplete;

#endregion

#region 属性

/// <summary>

/// 获取是否启用自动完成功能。

/// </summary>

[Bindable(true),Browsable(true),SRCategory(SR.CatBehavior),SRDescription(SR.ComboBoxAutoCompleteDescr)]

public bool AutoComplete

{

get

{

return autoComplete;

}

set

{

autoComplete = value;

}

}

#endregion

#region 构造函数

/// <summary>

///

/// </summary>

public ComboBox()

{

isKeyPressed = false;

autoComplete = false;

}

#endregion

#region 保护方法

/// <summary>

///

/// </summary>

/// <param name="e"></param>

protected override void OnTextChanged(EventArgs e)

{

bool flag = isKeyPressed;

isKeyPressed = false;

if(DropDownStyle != ComboBoxStyle.DropDown)

{

base.OnTextChanged (e);

return;

}

if(!flag)

{

base.OnTextChanged (e);

return;

}

if(!autoComplete)

{

base.OnTextChanged (e);

return;

}

BeginUpdate();

string newText = Text;

if(newText!="")

{

if(FindStringExact(newText)!=-1)

{

if(DroppedDown)

{

DroppedDown = false;

}

}

else if(FindString(newText)!=-1)

{

DroppedDown = true;

Text = newText;

Select(newText.Length,0);

}

}

else if(DroppedDown)

{

DroppedDown = false;

}

EndUpdate();

base.OnTextChanged (e);

}

/// <summary>

///

/// </summary>

/// <param name="e"></param>

protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)

{

isKeyPressed = true;

base.OnKeyPress (e);

}

/// <summary>

///

/// </summary>

/// <param name="e"></param>

protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)

{

isKeyPressed = false;

base.OnMouseDown (e);

}

#endregion

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航