개발자/C#

c# 콤보박스 자동 완성 기능을 구현하는 다른 방법

지구빵집 2012. 10. 1. 13:15
반응형




이전 방법으로 구현 했더니 콤보박스의 맨 앞 글자가 일치된 항목이 나오고, 동작이 좀 굼뜨고, 일관성이 좀 없는 듯해서 단어를 찿아서 매핑하여 보여주는 방식으로 변경을 할까 생각중~


일단 MSDN 소스부터 살펴보면


ComboBox 컨트롤에서 Visual C#에 대 한 텍스트 자동 완성 기능을 제공 하는 방법

  

값을 입력 하거나 목록에서 값을 클릭 하 여 ComboBox 컨트롤에 데이터를 입력할 수 있습니다. 값을 입력 하면 그 값의 처음 몇 자만 입력 하 고 값 목록에서 가장 가까운 일치 하는 항목을 자동으로 표시 하는 ComboBox 컨트롤 빠릅니다. 많은 Microsoft 제품은이 기능을 사용 합니다. 예를 들어, Microsoft Money이이 기능을 사용 하 여 검사를 작성 하는 경우 수취인 값을 선택 합니다. Microsoft Internet Explorer 웹 주소를 입력 하는 경우이 기능을 사용 합니다. Visual Studio.NET IntelliSense에 대해이 기능을 사용합니다. 코드의 다음 줄을 입력 하는 경우이 기능을 사용을 볼 수 있습니다.

System.cons

이 줄이 자동으로 입력 "System.Console" 표시 됩니다. 이 자동 텍스트 완성 기능은 시간 저장 하 고 데이터 입력 오류를 방지 하는 데 도움이 있습니다. 이 문서에서는 Visual C#.NET 응용 프로그램에서이 기능을 구현 하는 방법을 보여 줍니다.


샘플 코드를 사용 하는 방법

  1. Visual C#에서 새 Windows 응용 프로그램 프로젝트를 만듭니다. Form1 자동으로 만들어집니다.
  2. ComboBox 컨트롤을 Form1에 추가하십시오.
  3. ComboBox 컨트롤을 form1에 추가 합니다.
    // Add some items to the ComboBox list.
    this.comboBox1.Text = "";
    this.comboBox1.Items.Add("a");
    this.comboBox1.Items.Add("aaa");
    this.comboBox1.Items.Add("combo");
    this.comboBox1.Items.Add("combobox");
    this.comboBox1.Items.Add("combobox test");
    this.comboBox1.Items.Add("common");
    this.comboBox1.Items.Add("common dialog");
    					
  4. ComboBox 컨트롤 KeyUp 이벤트에 다음 코드를 추가합니다:
    int index;
    string actual;
    string found;
    	
    // Do nothing for certain keys, such as navigation keys.
    if ((e.KeyCode == Keys.Back) ||
    	(e.KeyCode == Keys.Left) ||
    	(e.KeyCode == Keys.Right) ||
    	(e.KeyCode == Keys.Up) ||
    	(e.KeyCode == Keys.Down) ||
    	(e.KeyCode == Keys.Delete) ||
    	(e.KeyCode == Keys.PageUp) ||
    	(e.KeyCode == Keys.PageDown) ||
    	(e.KeyCode == Keys.Home) ||
    	(e.KeyCode == Keys.End))
    {
    	return;
    }
    
    // Store the actual text that has been typed.
    actual = this.comboBox1.Text;
    
    // Find the first match for the typed value.
    index = this.comboBox1.FindString(actual);
    
    // Get the text of the first match.
    if (index > -1)
    {
    	found = this.comboBox1.Items[index].ToString();
    			
    	// Select this item from the list.
    	this.comboBox1.SelectedIndex = index;
    				
    	// Select the portion of the text that was automatically
    	// added so that additional typing replaces it.
    	this.comboBox1.SelectionStart = actual.Length;
    	this.comboBox1.SelectionLength = found.Length;
    }
    					
    노트 해당 코드는 Visual Studio 2005에서 변경해야 합니다. Windows Forms 프로젝트를 만들 때 Visual C# 한 폼을 프로젝트에 기본적으로 추가됩니다. 이 폼은 Form1을 이라고 합니다. 폼을 나타내는 두 파일의 Form1.cs 및 Form1.designer.cs가 지정됩니다. Form1.cs 있는 코드를 작성할 수 있습니다. Designer.cs 파일은 Windows Forms 디자이너에 컨트롤을 추가하여 수행된 모든 작업을 구현하는 코드를 기록하는 위치 있습니다. Windows Forms 디자이너를 Visual C# 2005에 [NULL]에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오.


머 요정도로 하고 이걸 속담 풀이 프로그램에 적용해보자. 



반응형