ComboBox.FindStringExact 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
查找与指定字符串完全匹配的项。
重载
FindStringExact(String) |
查找组合框中与指定字符串匹配的第一项。 |
FindStringExact(String, Int32) |
查找指定索引后与指定字符串匹配的第一项。 |
FindStringExact(String)
查找组合框中与指定字符串匹配的第一项。
public:
int FindStringExact(System::String ^ s);
public int FindStringExact (string s);
public int FindStringExact (string? s);
member this.FindStringExact : string -> int
Public Function FindStringExact (s As String) As Integer
参数
返回
找到的第一个项的从零开始的索引;如果未找到匹配项,则返回 -1,或者,如果 s
参数指定 Empty,则返回 0。
示例
下面的代码示例演示如何通过设置 和 属性并使用 FindStringExact 方法来搜索 ComboBox来初始化ComboBox控件。MaxDropDownItemsDropDownStyle 它还演示了 SelectedIndexChanged 如何处理 事件。
#using <System.Drawing.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
using namespace System::Windows::Forms;
using namespace System;
public ref class Form1: public System::Windows::Forms::Form
{
public:
Form1() : Form()
{
InitializeComboBox();
InitializeTextBox();
this->Label1 = gcnew System::Windows::Forms::Label;
this->SuspendLayout();
this->Label1->Location = System::Drawing::Point( 8, 24 );
this->Label1->Name = "Label1";
this->Label1->Size = System::Drawing::Size( 120, 32 );
this->Label1->TabIndex = 1;
this->Label1->Text = "Use drop-down to choose a name:";
this->Label1->TextAlign = System::Drawing::ContentAlignment::MiddleRight;
this->ClientSize = System::Drawing::Size( 292, 266 );
this->Controls->Add( this->Label1 );
this->Name = "Form1";
this->Text = "Form1";
this->ResumeLayout( false );
}
internal:
System::Windows::Forms::Label ^ Label1;
// Declare and initialize the text box.
internal:
// This text box text will be update programmatically. The user is not
// allowed to update it, so the ReadOnly property is set to true.
System::Windows::Forms::TextBox^ TextBox1;
private:
void InitializeTextBox()
{
this->TextBox1 = gcnew System::Windows::Forms::TextBox;
this->TextBox1->ScrollBars = ScrollBars::Vertical;
this->TextBox1->Location = System::Drawing::Point( 64, 128 );
this->TextBox1->Multiline = true;
this->TextBox1->Name = "TextBox1";
this->TextBox1->ReadOnly = true;
this->TextBox1->Size = System::Drawing::Size( 184, 120 );
this->TextBox1->TabIndex = 4;
this->TextBox1->Text = "Employee and Number of Awards:";
this->Controls->Add( this->TextBox1 );
}
// Declare comboBox1 as a ComboBox.
internal:
System::Windows::Forms::ComboBox^ ComboBox1;
private:
// This method initializes the combo box, adding a large string array
// but limiting the drop-down size to six rows so the combo box doesn't
// cover other controls when it expands.
void InitializeComboBox()
{
this->ComboBox1 = gcnew System::Windows::Forms::ComboBox;
array<String^>^ employees = {"Hamilton, David","Hensien, Kari",
"Hammond, Maria","Harris, Keith","Henshaw, Jeff D.",
"Hanson, Mark","Harnpadoungsataya, Sariya",
"Harrington, Mark","Harris, Keith","Hartwig, Doris",
"Harui, Roger","Hassall, Mark","Hasselberg, Jonas",
"Harnpadoungsataya, Sariya","Henshaw, Jeff D.",
"Henshaw, Jeff D.","Hensien, Kari","Harris, Keith",
"Henshaw, Jeff D.","Hensien, Kari","Hasselberg, Jonas",
"Harrington, Mark","Hedlund, Magnus","Hay, Jeff",
"Heidepriem, Brandon D."};
ComboBox1->Items->AddRange( employees );
this->ComboBox1->Location = System::Drawing::Point( 136, 32 );
this->ComboBox1->IntegralHeight = false;
this->ComboBox1->MaxDropDownItems = 5;
this->ComboBox1->DropDownStyle = ComboBoxStyle::DropDownList;
this->ComboBox1->Name = "ComboBox1";
this->ComboBox1->Size = System::Drawing::Size( 136, 81 );
this->ComboBox1->TabIndex = 0;
this->Controls->Add( this->ComboBox1 );
// Associate the event-handling method with the
// SelectedIndexChanged event.
this->ComboBox1->SelectedIndexChanged +=
gcnew System::EventHandler( this, &Form1::ComboBox1_SelectedIndexChanged );
}
private:
// This method is called when the user changes his or her selection.
// It searches for all occurrences of the selected employee's
// name in the Items array and adds the employee's name and
// the number of occurrences to TextBox1.Text.
// CAUTION This code exposes a known bug: If the index passed to the
// FindStringExact(searchString, index) method is the last index
// of the array, the code throws an exception.
void ComboBox1_SelectedIndexChanged( Object^ sender,
System::EventArgs^ e )
{
ComboBox^ comboBox = (ComboBox^)(sender);
// Save the selected employee's name, because we will remove
// the employee's name from the list.
String^ selectedEmployee = (String^)(ComboBox1->SelectedItem);
int count = 0;
int resultIndex = -1;
// Call the FindStringExact method to find the first
// occurrence in the list.
resultIndex = ComboBox1->FindStringExact( selectedEmployee );
// Remove the name as it is found, and increment the found count.
// Then call the FindStringExact method again, passing in the
// index of the current found item so the search starts there
// instead of at the beginning of the list.
while ( resultIndex != -1 )
{
ComboBox1->Items->RemoveAt( resultIndex );
count += 1;
resultIndex = ComboBox1->FindStringExact( selectedEmployee,
resultIndex );
}
TextBox1->Text = TextBox1->Text + "\r\n" + selectedEmployee + ": " +
count;
}
};
int main()
{
Application::Run( gcnew Form1 );
}
using System.Windows.Forms;
public class Form1:
System.Windows.Forms.Form
{
public Form1() : base()
{
InitializeComboBox();
InitializeTextBox();
this.Label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
this.Label1.Location = new System.Drawing.Point(8, 24);
this.Label1.Name = "Label1";
this.Label1.Size = new System.Drawing.Size(120, 32);
this.Label1.TabIndex = 1;
this.Label1.Text = "Use drop-down to choose a name:";
this.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.Label1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
public static void Main()
{
Application.Run(new Form1());
}
internal System.Windows.Forms.Label Label1;
// Declare and initialize the text box.
// This text box text will be update programmatically. The user is not
// allowed to update it, so the ReadOnly property is set to true.
internal System.Windows.Forms.TextBox TextBox1;
private void InitializeTextBox()
{
this.TextBox1 = new System.Windows.Forms.TextBox();
this.TextBox1.ScrollBars = ScrollBars.Vertical;
this.TextBox1.Location = new System.Drawing.Point(64, 128);
this.TextBox1.Multiline = true;
this.TextBox1.Name = "TextBox1";
this.TextBox1.ReadOnly = true;
this.TextBox1.Size = new System.Drawing.Size(184, 120);
this.TextBox1.TabIndex = 4;
this.TextBox1.Text = "Employee and Number of Awards:";
this.Controls.Add(this.TextBox1);
}
// Declare comboBox1 as a ComboBox.
internal System.Windows.Forms.ComboBox ComboBox1;
// This method initializes the combo box, adding a large string array
// but limiting the drop-down size to six rows so the combo box doesn't
// cover other controls when it expands.
private void InitializeComboBox()
{
this.ComboBox1 = new System.Windows.Forms.ComboBox();
string[] employees = new string[]{"Hamilton, David", "Hensien, Kari",
"Hammond, Maria", "Harris, Keith", "Henshaw, Jeff D.",
"Hanson, Mark", "Harnpadoungsataya, Sariya",
"Harrington, Mark", "Harris, Keith", "Hartwig, Doris",
"Harui, Roger", "Hassall, Mark", "Hasselberg, Jonas",
"Harnpadoungsataya, Sariya", "Henshaw, Jeff D.",
"Henshaw, Jeff D.", "Hensien, Kari", "Harris, Keith",
"Henshaw, Jeff D.", "Hensien, Kari", "Hasselberg, Jonas",
"Harrington, Mark", "Hedlund, Magnus", "Hay, Jeff",
"Heidepriem, Brandon D."};
ComboBox1.Items.AddRange(employees);
this.ComboBox1.Location = new System.Drawing.Point(136, 32);
this.ComboBox1.IntegralHeight = false;
this.ComboBox1.MaxDropDownItems = 5;
this.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
this.ComboBox1.Name = "ComboBox1";
this.ComboBox1.Size = new System.Drawing.Size(136, 81);
this.ComboBox1.TabIndex = 0;
this.Controls.Add(this.ComboBox1);
// Associate the event-handling method with the
// SelectedIndexChanged event.
this.ComboBox1.SelectedIndexChanged +=
new System.EventHandler(ComboBox1_SelectedIndexChanged);
}
// This method is called when the user changes his or her selection.
// It searches for all occurrences of the selected employee's
// name in the Items array and adds the employee's name and
// the number of occurrences to TextBox1.Text.
// CAUTION This code exposes a known bug: If the index passed to the
// FindStringExact(searchString, index) method is the last index
// of the array, the code throws an exception.
private void ComboBox1_SelectedIndexChanged(object sender,
System.EventArgs e)
{
ComboBox comboBox = (ComboBox) sender;
// Save the selected employee's name, because we will remove
// the employee's name from the list.
string selectedEmployee = (string) ComboBox1.SelectedItem;
int count = 0;
int resultIndex = -1;
// Call the FindStringExact method to find the first
// occurrence in the list.
resultIndex = ComboBox1.FindStringExact(selectedEmployee);
// Remove the name as it is found, and increment the found count.
// Then call the FindStringExact method again, passing in the
// index of the current found item so the search starts there
// instead of at the beginning of the list.
while (resultIndex!=-1)
{
ComboBox1.Items.RemoveAt(resultIndex);
count += 1;
resultIndex = ComboBox1.FindStringExact(selectedEmployee,
resultIndex);
}
// Update the text in Textbox1.
TextBox1.Text = TextBox1.Text+ "\r\n" + selectedEmployee + ": "
+ count;
}
}
Imports System.Windows.Forms
Public Class Form1
Inherits System.Windows.Forms.Form
Public Sub New()
MyBase.New()
InitializeComboBox()
InitializeTextBox()
Me.Label1 = New System.Windows.Forms.Label
Me.SuspendLayout()
Me.Label1.Location = New System.Drawing.Point(8, 24)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(120, 32)
Me.Label1.TabIndex = 1
Me.Label1.Text = "Use drop-down to choose a name:"
Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(Me.Label1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
Shared Sub Main()
Application.Run(New Form1)
End Sub
Friend WithEvents Label1 As System.Windows.Forms.Label
' Declare and initialize the text box.
' This text box text will be update programmatically. The user is not
' allowed to update it, so the ReadOnly property is set to true.
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
Private Sub InitializeTextBox()
Me.TextBox1 = New System.Windows.Forms.TextBox
Me.TextBox1.ScrollBars = ScrollBars.Vertical
Me.TextBox1.Location = New System.Drawing.Point(64, 128)
Me.TextBox1.Multiline = True
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.ReadOnly = True
Me.TextBox1.Size = New System.Drawing.Size(184, 120)
Me.TextBox1.TabIndex = 4
Me.TextBox1.Text = "Employee and Number of Awards:"
Me.Controls.Add(Me.TextBox1)
End Sub
' Declare comboBox1 as a ComboBox.
Friend WithEvents ComboBox1 As System.Windows.Forms.ComboBox
' This method initializes the combo box, adding a large string
' array but limiting the drop-down size to six rows so the combo box
' doesn't cover other controls when it expands.
Private Sub InitializeComboBox()
Me.ComboBox1 = New System.Windows.Forms.ComboBox
Dim employees() As String = New String() {"Hamilton, David", _
"Hensien, Kari", "Hammond, Maria", "Harris, Keith", _
"Henshaw, Jeff D.", "Hanson, Mark", "Harnpadoungsataya, Sariya", _
"Harrington, Mark", "Harris, Keith", "Hartwig, Doris", _
"Harui, Roger", "Hassall, Mark", "Hasselberg, Jonas", _
"Harnpadoungsataya, Sariya", "Henshaw, Jeff D.", "Henshaw, Jeff D.", _
"Hensien, Kari", "Harris, Keith", "Henshaw, Jeff D.", _
"Hensien, Kari", "Hasselberg, Jonas", "Harrington, Mark", _
"Hedlund, Magnus", "Hay, Jeff", "Heidepriem, Brandon D."}
ComboBox1.Items.AddRange(employees)
Me.ComboBox1.Location = New System.Drawing.Point(136, 32)
Me.ComboBox1.IntegralHeight = False
Me.ComboBox1.MaxDropDownItems = 5
Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDown
Me.ComboBox1.Name = "ComboBox1"
Me.ComboBox1.Size = New System.Drawing.Size(136, 81)
Me.ComboBox1.TabIndex = 0
Me.Controls.Add(Me.ComboBox1)
End Sub
' This method is called when the user changes his or her selection.
' It searches for all occurrences of the selected employee's
' name in the Items array and adds the employee's name and
' the number of occurrences to TextBox1.Text.
' CAUTION This code exposes a known bug: If the index passed to the
' FindStringExact(searchString, index) method is the last index
' of the array, the code throws an exception.
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim comboBox As comboBox = CType(sender, comboBox)
' Save the selected employee's name, because we will remove
' the employee's name from the list.
Dim selectedEmployee = CType(ComboBox1.SelectedItem, String)
Dim count As Integer = 0
Dim resultIndex As Integer = -1
' Call the FindStringExact method to find the first
' occurrence in the list.
resultIndex = ComboBox1.FindStringExact(ComboBox1.SelectedItem)
' Remove the name as it is found, and increment the found count.
' Then call the FindStringExact method again, passing in the index of the
' current found item so the search starts there instead of
' at the beginning of the list.
While (resultIndex <> -1)
ComboBox1.Items.RemoveAt(resultIndex)
count += 1
resultIndex = ComboBox1.FindStringExact _
(selectedEmployee, resultIndex)
End While
' Update the text in Textbox1.
TextBox1.Text = TextBox1.Text & Microsoft.VisualBasic.vbCrLf _
& selectedEmployee & ": " & count
End Sub
End Class
注解
此方法执行的搜索不区分大小写。 参数 s
是一个字符串,用于与组合框列表中的项关联的文本进行比较。 搜索将查找从文本开头开始的匹配项,返回列表中与指定子字符串匹配的第一项。 然后,可以执行任务,例如使用 Remove 方法删除包含搜索文本的项或更改项的文本。 找到指定的文本后,如果要在 中 ComboBox搜索文本的其他实例,则必须使用 方法的版本 FindStringExact ,该方法提供参数以在 中 ComboBox指定起始索引。 如果要执行部分字词搜索而不是完全匹配字词,请使用 FindString 方法。
适用于
FindStringExact(String, Int32)
查找指定索引后与指定字符串匹配的第一项。
public:
int FindStringExact(System::String ^ s, int startIndex);
public int FindStringExact (string s, int startIndex);
public int FindStringExact (string? s, int startIndex);
member this.FindStringExact : string * int -> int
Public Function FindStringExact (s As String, startIndex As Integer) As Integer
参数
- startIndex
- Int32
项的从零开始的索引,该项在要搜索的第一个项之前。 设置为 -1,以从控件的开始处搜索。
返回
找到的第一个项的从零开始的索引;如果未找到匹配项,则返回 -1,或者,如果 s
参数指定 Empty,则返回 0。
例外
示例
下面的代码示例演示如何通过设置 和 属性并使用 FindStringExact 方法来搜索 ComboBox来初始化ComboBox控件。MaxDropDownItemsDropDownStyle 它还演示了 SelectedIndexChanged 如何处理 事件。
#using <System.Drawing.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
using namespace System::Windows::Forms;
using namespace System;
public ref class Form1: public System::Windows::Forms::Form
{
public:
Form1() : Form()
{
InitializeComboBox();
InitializeTextBox();
this->Label1 = gcnew System::Windows::Forms::Label;
this->SuspendLayout();
this->Label1->Location = System::Drawing::Point( 8, 24 );
this->Label1->Name = "Label1";
this->Label1->Size = System::Drawing::Size( 120, 32 );
this->Label1->TabIndex = 1;
this->Label1->Text = "Use drop-down to choose a name:";
this->Label1->TextAlign = System::Drawing::ContentAlignment::MiddleRight;
this->ClientSize = System::Drawing::Size( 292, 266 );
this->Controls->Add( this->Label1 );
this->Name = "Form1";
this->Text = "Form1";
this->ResumeLayout( false );
}
internal:
System::Windows::Forms::Label ^ Label1;
// Declare and initialize the text box.
internal:
// This text box text will be update programmatically. The user is not
// allowed to update it, so the ReadOnly property is set to true.
System::Windows::Forms::TextBox^ TextBox1;
private:
void InitializeTextBox()
{
this->TextBox1 = gcnew System::Windows::Forms::TextBox;
this->TextBox1->ScrollBars = ScrollBars::Vertical;
this->TextBox1->Location = System::Drawing::Point( 64, 128 );
this->TextBox1->Multiline = true;
this->TextBox1->Name = "TextBox1";
this->TextBox1->ReadOnly = true;
this->TextBox1->Size = System::Drawing::Size( 184, 120 );
this->TextBox1->TabIndex = 4;
this->TextBox1->Text = "Employee and Number of Awards:";
this->Controls->Add( this->TextBox1 );
}
// Declare comboBox1 as a ComboBox.
internal:
System::Windows::Forms::ComboBox^ ComboBox1;
private:
// This method initializes the combo box, adding a large string array
// but limiting the drop-down size to six rows so the combo box doesn't
// cover other controls when it expands.
void InitializeComboBox()
{
this->ComboBox1 = gcnew System::Windows::Forms::ComboBox;
array<String^>^ employees = {"Hamilton, David","Hensien, Kari",
"Hammond, Maria","Harris, Keith","Henshaw, Jeff D.",
"Hanson, Mark","Harnpadoungsataya, Sariya",
"Harrington, Mark","Harris, Keith","Hartwig, Doris",
"Harui, Roger","Hassall, Mark","Hasselberg, Jonas",
"Harnpadoungsataya, Sariya","Henshaw, Jeff D.",
"Henshaw, Jeff D.","Hensien, Kari","Harris, Keith",
"Henshaw, Jeff D.","Hensien, Kari","Hasselberg, Jonas",
"Harrington, Mark","Hedlund, Magnus","Hay, Jeff",
"Heidepriem, Brandon D."};
ComboBox1->Items->AddRange( employees );
this->ComboBox1->Location = System::Drawing::Point( 136, 32 );
this->ComboBox1->IntegralHeight = false;
this->ComboBox1->MaxDropDownItems = 5;
this->ComboBox1->DropDownStyle = ComboBoxStyle::DropDownList;
this->ComboBox1->Name = "ComboBox1";
this->ComboBox1->Size = System::Drawing::Size( 136, 81 );
this->ComboBox1->TabIndex = 0;
this->Controls->Add( this->ComboBox1 );
// Associate the event-handling method with the
// SelectedIndexChanged event.
this->ComboBox1->SelectedIndexChanged +=
gcnew System::EventHandler( this, &Form1::ComboBox1_SelectedIndexChanged );
}
private:
// This method is called when the user changes his or her selection.
// It searches for all occurrences of the selected employee's
// name in the Items array and adds the employee's name and
// the number of occurrences to TextBox1.Text.
// CAUTION This code exposes a known bug: If the index passed to the
// FindStringExact(searchString, index) method is the last index
// of the array, the code throws an exception.
void ComboBox1_SelectedIndexChanged( Object^ sender,
System::EventArgs^ e )
{
ComboBox^ comboBox = (ComboBox^)(sender);
// Save the selected employee's name, because we will remove
// the employee's name from the list.
String^ selectedEmployee = (String^)(ComboBox1->SelectedItem);
int count = 0;
int resultIndex = -1;
// Call the FindStringExact method to find the first
// occurrence in the list.
resultIndex = ComboBox1->FindStringExact( selectedEmployee );
// Remove the name as it is found, and increment the found count.
// Then call the FindStringExact method again, passing in the
// index of the current found item so the search starts there
// instead of at the beginning of the list.
while ( resultIndex != -1 )
{
ComboBox1->Items->RemoveAt( resultIndex );
count += 1;
resultIndex = ComboBox1->FindStringExact( selectedEmployee,
resultIndex );
}
TextBox1->Text = TextBox1->Text + "\r\n" + selectedEmployee + ": " +
count;
}
};
int main()
{
Application::Run( gcnew Form1 );
}
using System.Windows.Forms;
public class Form1:
System.Windows.Forms.Form
{
public Form1() : base()
{
InitializeComboBox();
InitializeTextBox();
this.Label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
this.Label1.Location = new System.Drawing.Point(8, 24);
this.Label1.Name = "Label1";
this.Label1.Size = new System.Drawing.Size(120, 32);
this.Label1.TabIndex = 1;
this.Label1.Text = "Use drop-down to choose a name:";
this.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.Label1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
public static void Main()
{
Application.Run(new Form1());
}
internal System.Windows.Forms.Label Label1;
// Declare and initialize the text box.
// This text box text will be update programmatically. The user is not
// allowed to update it, so the ReadOnly property is set to true.
internal System.Windows.Forms.TextBox TextBox1;
private void InitializeTextBox()
{
this.TextBox1 = new System.Windows.Forms.TextBox();
this.TextBox1.ScrollBars = ScrollBars.Vertical;
this.TextBox1.Location = new System.Drawing.Point(64, 128);
this.TextBox1.Multiline = true;
this.TextBox1.Name = "TextBox1";
this.TextBox1.ReadOnly = true;
this.TextBox1.Size = new System.Drawing.Size(184, 120);
this.TextBox1.TabIndex = 4;
this.TextBox1.Text = "Employee and Number of Awards:";
this.Controls.Add(this.TextBox1);
}
// Declare comboBox1 as a ComboBox.
internal System.Windows.Forms.ComboBox ComboBox1;
// This method initializes the combo box, adding a large string array
// but limiting the drop-down size to six rows so the combo box doesn't
// cover other controls when it expands.
private void InitializeComboBox()
{
this.ComboBox1 = new System.Windows.Forms.ComboBox();
string[] employees = new string[]{"Hamilton, David", "Hensien, Kari",
"Hammond, Maria", "Harris, Keith", "Henshaw, Jeff D.",
"Hanson, Mark", "Harnpadoungsataya, Sariya",
"Harrington, Mark", "Harris, Keith", "Hartwig, Doris",
"Harui, Roger", "Hassall, Mark", "Hasselberg, Jonas",
"Harnpadoungsataya, Sariya", "Henshaw, Jeff D.",
"Henshaw, Jeff D.", "Hensien, Kari", "Harris, Keith",
"Henshaw, Jeff D.", "Hensien, Kari", "Hasselberg, Jonas",
"Harrington, Mark", "Hedlund, Magnus", "Hay, Jeff",
"Heidepriem, Brandon D."};
ComboBox1.Items.AddRange(employees);
this.ComboBox1.Location = new System.Drawing.Point(136, 32);
this.ComboBox1.IntegralHeight = false;
this.ComboBox1.MaxDropDownItems = 5;
this.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
this.ComboBox1.Name = "ComboBox1";
this.ComboBox1.Size = new System.Drawing.Size(136, 81);
this.ComboBox1.TabIndex = 0;
this.Controls.Add(this.ComboBox1);
// Associate the event-handling method with the
// SelectedIndexChanged event.
this.ComboBox1.SelectedIndexChanged +=
new System.EventHandler(ComboBox1_SelectedIndexChanged);
}
// This method is called when the user changes his or her selection.
// It searches for all occurrences of the selected employee's
// name in the Items array and adds the employee's name and
// the number of occurrences to TextBox1.Text.
// CAUTION This code exposes a known bug: If the index passed to the
// FindStringExact(searchString, index) method is the last index
// of the array, the code throws an exception.
private void ComboBox1_SelectedIndexChanged(object sender,
System.EventArgs e)
{
ComboBox comboBox = (ComboBox) sender;
// Save the selected employee's name, because we will remove
// the employee's name from the list.
string selectedEmployee = (string) ComboBox1.SelectedItem;
int count = 0;
int resultIndex = -1;
// Call the FindStringExact method to find the first
// occurrence in the list.
resultIndex = ComboBox1.FindStringExact(selectedEmployee);
// Remove the name as it is found, and increment the found count.
// Then call the FindStringExact method again, passing in the
// index of the current found item so the search starts there
// instead of at the beginning of the list.
while (resultIndex!=-1)
{
ComboBox1.Items.RemoveAt(resultIndex);
count += 1;
resultIndex = ComboBox1.FindStringExact(selectedEmployee,
resultIndex);
}
// Update the text in Textbox1.
TextBox1.Text = TextBox1.Text+ "\r\n" + selectedEmployee + ": "
+ count;
}
}
Imports System.Windows.Forms
Public Class Form1
Inherits System.Windows.Forms.Form
Public Sub New()
MyBase.New()
InitializeComboBox()
InitializeTextBox()
Me.Label1 = New System.Windows.Forms.Label
Me.SuspendLayout()
Me.Label1.Location = New System.Drawing.Point(8, 24)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(120, 32)
Me.Label1.TabIndex = 1
Me.Label1.Text = "Use drop-down to choose a name:"
Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(Me.Label1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
Shared Sub Main()
Application.Run(New Form1)
End Sub
Friend WithEvents Label1 As System.Windows.Forms.Label
' Declare and initialize the text box.
' This text box text will be update programmatically. The user is not
' allowed to update it, so the ReadOnly property is set to true.
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
Private Sub InitializeTextBox()
Me.TextBox1 = New System.Windows.Forms.TextBox
Me.TextBox1.ScrollBars = ScrollBars.Vertical
Me.TextBox1.Location = New System.Drawing.Point(64, 128)
Me.TextBox1.Multiline = True
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.ReadOnly = True
Me.TextBox1.Size = New System.Drawing.Size(184, 120)
Me.TextBox1.TabIndex = 4
Me.TextBox1.Text = "Employee and Number of Awards:"
Me.Controls.Add(Me.TextBox1)
End Sub
' Declare comboBox1 as a ComboBox.
Friend WithEvents ComboBox1 As System.Windows.Forms.ComboBox
' This method initializes the combo box, adding a large string
' array but limiting the drop-down size to six rows so the combo box
' doesn't cover other controls when it expands.
Private Sub InitializeComboBox()
Me.ComboBox1 = New System.Windows.Forms.ComboBox
Dim employees() As String = New String() {"Hamilton, David", _
"Hensien, Kari", "Hammond, Maria", "Harris, Keith", _
"Henshaw, Jeff D.", "Hanson, Mark", "Harnpadoungsataya, Sariya", _
"Harrington, Mark", "Harris, Keith", "Hartwig, Doris", _
"Harui, Roger", "Hassall, Mark", "Hasselberg, Jonas", _
"Harnpadoungsataya, Sariya", "Henshaw, Jeff D.", "Henshaw, Jeff D.", _
"Hensien, Kari", "Harris, Keith", "Henshaw, Jeff D.", _
"Hensien, Kari", "Hasselberg, Jonas", "Harrington, Mark", _
"Hedlund, Magnus", "Hay, Jeff", "Heidepriem, Brandon D."}
ComboBox1.Items.AddRange(employees)
Me.ComboBox1.Location = New System.Drawing.Point(136, 32)
Me.ComboBox1.IntegralHeight = False
Me.ComboBox1.MaxDropDownItems = 5
Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDown
Me.ComboBox1.Name = "ComboBox1"
Me.ComboBox1.Size = New System.Drawing.Size(136, 81)
Me.ComboBox1.TabIndex = 0
Me.Controls.Add(Me.ComboBox1)
End Sub
' This method is called when the user changes his or her selection.
' It searches for all occurrences of the selected employee's
' name in the Items array and adds the employee's name and
' the number of occurrences to TextBox1.Text.
' CAUTION This code exposes a known bug: If the index passed to the
' FindStringExact(searchString, index) method is the last index
' of the array, the code throws an exception.
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim comboBox As comboBox = CType(sender, comboBox)
' Save the selected employee's name, because we will remove
' the employee's name from the list.
Dim selectedEmployee = CType(ComboBox1.SelectedItem, String)
Dim count As Integer = 0
Dim resultIndex As Integer = -1
' Call the FindStringExact method to find the first
' occurrence in the list.
resultIndex = ComboBox1.FindStringExact(ComboBox1.SelectedItem)
' Remove the name as it is found, and increment the found count.
' Then call the FindStringExact method again, passing in the index of the
' current found item so the search starts there instead of
' at the beginning of the list.
While (resultIndex <> -1)
ComboBox1.Items.RemoveAt(resultIndex)
count += 1
resultIndex = ComboBox1.FindStringExact _
(selectedEmployee, resultIndex)
End While
' Update the text in Textbox1.
TextBox1.Text = TextBox1.Text & Microsoft.VisualBasic.vbCrLf _
& selectedEmployee & ": " & count
End Sub
End Class
注解
此方法执行的搜索不区分大小写。 参数 s
是一个字符串,用于与组合框列表中的项关联的文本进行比较。 搜索将查找从文本开头开始的匹配项,返回列表中与指定子字符串匹配的第一项。 然后,可以执行任务,例如使用 Remove 方法删除包含搜索文本的项或更改项的文本。 此方法通常在调用未指定起始索引的此方法版本后使用。 在列表中找到初始项后,此方法通常用于查找搜索文本的更多实例,方法是在项的 参数中 startIndex
指定搜索文本的第一个找到实例之后的索引位置。 如果要执行部分字词搜索而不是完全匹配字词,请使用 FindString 方法。
此方法执行的搜索是循环的。 尽管搜索从 参数后面的 startIndex
下一个索引开始,但当到达集合的末尾时,搜索会在 0 处重启。 但请注意,如果 startIndex
参数本身等于集合中的最后一个索引,则会引发异常。