using System;
using System.Drawing;
using System.Windows.Forms;namespace SeachComboBox
{
/// <summary>
/// UserControl1 的摘要说明。
/// </summary>
public class sComboBox : System.Windows.Forms.ComboBox
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
// private System.ComponentModel.Container components = null; public sComboBox()
{
// 该调用是 Windows.Forms 窗体设计器所必需的。
// InitializeComponent();
DrawMode=DrawMode.OwnerDrawFixed;
            
// TODO: 在 InitComponent 调用后添加任何初始化 } /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void OnLostFocus(EventArgs e)
{
getText(false);
base.OnLostFocus (e);
} protected override void OnGotFocus(EventArgs e)
{
getText(true);
base.OnGotFocus (e);
} protected override void OnSelectedIndexChanged(EventArgs e)
{
getText(true);
base.OnSelectedIndexChanged (e);
} protected override void OnDrawItem(DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle(); if(e.Index<0)
{
e.Graphics.DrawString("",e.Font,new SolidBrush(e.ForeColor),e.Bounds.X,e.Bounds.Y);
}
else
{
if(Items[e.Index].GetType()==typeof(ItemName))
{
ItemName item=(ItemName)Items[e.Index];
e.Graphics.DrawString(item.Text,e.Font,new SolidBrush(e.ForeColor),e.Bounds.X,e.Bounds.Y);
}
else
{
e.Graphics.DrawString("",e.Font,new SolidBrush(e.ForeColor),e.Bounds.X,e.Bounds.Y);
}
} base.OnDrawItem (e);
} public string SelectedCode
{
get
{
if(SelectedItem!=null)
{
ItemName item=(ItemName)SelectedItem;
return item.Code;
}
else
{
return "";
}
}
set
{
int i=0;
foreach(object obj in Items)
{
ItemName item=(ItemName)obj;
if(item.Code.Trim()==value.Trim())
{
SelectedItem=item;
Text=item.Code+"    "+item.Name;
break;
}
if(i==Items.Count-1)
{
SelectedItem=null;
}
i++;
}
}
} public string SelectedName
{
get
{
if(SelectedItem!=null)
{
ItemName item=(ItemName)SelectedItem;
return item.Name;
}
else
{
return "";
}
}
set
{
int i=0;
foreach(object obj in Items)
{
ItemName item=(ItemName)obj;
if(item.Name.Trim()==value.Trim())
{
SelectedItem=item;
Text=item.Code+"    "+item.Name;
break;
}
if(i==Items.Count-1)
{
SelectedItem=null;
}
i++;
}
}
}

protected override void OnKeyPress(KeyPressEventArgs e)
{
if(e.KeyChar==(char)13)
{
foreach(object obj in Items)
{
ItemName item=(ItemName)obj;
if(item.Code.Trim()==Text.Trim())
{
SelectedItem=item;
Text=item.Code +"    " + item.Name;
break;
}
}
} base.OnKeyPress (e);
} private string getText(bool Focused)
{
if(SelectedItem!=null)
{
ItemName item=(ItemName)SelectedItem;
if(Focused)
{
Text=item.Code+"    "+item.Name;
SelectAll();
}
else
{
Text=item.Name;
}
}
else
{
Text="";
}
return Text;
}
}
}自己从网上得到一个我需要的comboBox控件,但现在有一个问题,它在数据绑定后,它焦点不会失去,
我如何让它失去焦点,用其它控件.Focus()方法,它也不能实现这个功能!为什么?如何改?