ComboBox.FindStringExact Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Trova l'elemento che corrisponde esattamente alla stringa specificata.
Overload
FindStringExact(String) |
Trova il primo elemento nella casella combinata che corrisponde alla stringa specificata. |
FindStringExact(String, Int32) |
Trova il primo elemento dopo l'indice specificato che corrisponde alla stringa indicata. |
FindStringExact(String)
Trova il primo elemento nella casella combinata che corrisponde alla stringa specificata.
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
Parametri
Restituisce
Indice in base zero del primo elemento trovato; restituisce -1 se non vengono trovate corrispondenze oppure 0 se il parametro s
specifica Empty.
Esempio
Nell'esempio di codice seguente viene illustrato come inizializzare un ComboBox controllo impostando le MaxDropDownItems proprietà e DropDownStyle e usando i FindStringExact metodi per eseguire la ricerca nell'oggetto ComboBox. Mostra anche la gestione dell'evento 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
Commenti
La ricerca eseguita da questo metodo non fa distinzione tra maiuscole e minuscole. Il s
parametro è una stringa da confrontare con il testo associato agli elementi nell'elenco casella combinata. La ricerca cerca una corrispondenza a partire dall'inizio del testo, restituendo il primo elemento dell'elenco corrispondente alla sottostringa specificata. È quindi possibile eseguire attività, ad esempio rimuovere l'elemento contenente il testo di ricerca usando il Remove metodo o modificare il testo dell'elemento. Dopo aver trovato il testo specificato, se si desidera cercare altre istanze del testo in ComboBox, è necessario usare la versione del metodo che fornisce un parametro per specificare un indice iniziale all'interno di FindStringExactComboBox. Se si desidera eseguire la ricerca parziale delle parole anziché una corrispondenza esatta delle parole, usare il FindString metodo .
Si applica a
FindStringExact(String, Int32)
Trova il primo elemento dopo l'indice specificato che corrisponde alla stringa indicata.
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
Parametri
- startIndex
- Int32
Indice in base zero dell'elemento che precede il primo elemento da cercare. Impostare su -1 per avviare la ricerca dall'inizio del controllo.
Restituisce
Indice in base zero del primo elemento trovato; restituisce -1 se non vengono trovate corrispondenze oppure 0 se il parametro s
specifica Empty.
Eccezioni
startIndex
è minore di -1.
-oppure-
Il parametro startIndex
è uguale all'ultimo indice contenuto nell'insieme.
Esempio
Nell'esempio di codice seguente viene illustrato come inizializzare un ComboBox controllo impostando le MaxDropDownItems proprietà e DropDownStyle e usando i FindStringExact metodi per eseguire la ricerca nell'oggetto ComboBox. Mostra anche la gestione dell'evento 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
Commenti
La ricerca eseguita da questo metodo non fa distinzione tra maiuscole e minuscole. Il s
parametro è una stringa da confrontare con il testo associato agli elementi nell'elenco casella combinata. La ricerca cerca una corrispondenza a partire dall'inizio del testo, restituendo il primo elemento dell'elenco corrispondente alla sottostringa specificata. È quindi possibile eseguire attività, ad esempio rimuovere l'elemento contenente il testo di ricerca usando il Remove metodo o modificare il testo dell'elemento. Questo metodo viene in genere utilizzato dopo che è stata effettuata una chiamata utilizzando la versione di questo metodo che non specifica un indice iniziale. Dopo aver trovato un elemento iniziale nell'elenco, questo metodo viene in genere usato per trovare altre istanze del testo di ricerca specificando la posizione di indice nel startIndex
parametro dell'elemento dopo la prima istanza trovata del testo di ricerca. Se si desidera eseguire la ricerca parziale delle parole anziché una corrispondenza esatta delle parole, usare il FindString metodo .
La ricerca eseguita da questo metodo è circolare. Anche se la ricerca inizia in corrispondenza dell'indice successivo dopo il startIndex
parametro , la ricerca viene riavviata a 0 quando viene raggiunta la fine della raccolta. Si noti tuttavia che se il startIndex
parametro stesso è uguale all'ultimo indice nella raccolta, viene generata un'eccezione.