TextBoxBase.SelectionStart Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el punto de inicio del texto seleccionado en el cuadro de texto.
public:
property int SelectionStart { int get(); void set(int value); };
[System.ComponentModel.Browsable(false)]
public int SelectionStart { get; set; }
[<System.ComponentModel.Browsable(false)>]
member this.SelectionStart : int with get, set
Public Property SelectionStart As Integer
Valor de propiedad
Posición de inicio del texto seleccionado en el cuadro de texto.
- Atributos
Excepciones
El valor asignado es menor que cero.
Ejemplos
Ejemplo 1
En el ejemplo de código siguiente se usa TextBox, una clase derivada. Proporciona Click controladores de eventos para MenuItem objetos que realizan operaciones Cortar, Copiar, Pegar y Deshacer. En este ejemplo se requiere que se haya creado un TextBox control denominado textBox1
.
private:
void Menu_Copy( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Ensure that text is selected in the text box.
if ( textBox1->SelectionLength > 0 )
{
// Copy the selected text to the Clipboard.
textBox1->Copy();
}
}
void Menu_Cut( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Ensure that text is currently selected in the text box.
if ( !textBox1->SelectedText->Equals( "" ) )
{
// Cut the selected text in the control and paste it into the Clipboard.
textBox1->Cut();
}
}
void Menu_Paste( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Determine if there is any text in the Clipboard to paste into the text box.
if ( Clipboard::GetDataObject()->GetDataPresent( DataFormats::Text ))
{
// Determine if any text is selected in the text box.
if ( textBox1->SelectionLength > 0 )
{
// Ask user if they want to paste over currently selected text.
if ( MessageBox::Show( "Do you want to paste over current selection?",
"Cut Example", MessageBoxButtons::YesNo ) == ::DialogResult::No )
{
// Move selection to the point after the current selection and paste.
textBox1->SelectionStart = textBox1->SelectionStart + textBox1->SelectionLength;
}
}
// Paste current text in Clipboard into text box.
textBox1->Paste();
}
}
void Menu_Undo( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Determine if last operation can be undone in text box.
if ( textBox1->CanUndo)
{
// Undo the last operation.
textBox1->Undo();
// Clear the undo buffer to prevent last action from being redone.
textBox1->ClearUndo();
}
}
private void Menu_Copy(System.Object sender, System.EventArgs e)
{
// Ensure that text is selected in the text box.
if(textBox1.SelectionLength > 0)
// Copy the selected text to the Clipboard.
textBox1.Copy();
}
private void Menu_Cut(System.Object sender, System.EventArgs e)
{
// Ensure that text is currently selected in the text box.
if(textBox1.SelectedText != "")
// Cut the selected text in the control and paste it into the Clipboard.
textBox1.Cut();
}
private void Menu_Paste(System.Object sender, System.EventArgs e)
{
// Determine if there is any text in the Clipboard to paste into the text box.
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
// Determine if any text is selected in the text box.
if(textBox1.SelectionLength > 0)
{
// Ask user if they want to paste over currently selected text.
if(MessageBox.Show("Do you want to paste over current selection?", "Cut Example", MessageBoxButtons.YesNo) == DialogResult.No)
// Move selection to the point after the current selection and paste.
textBox1.SelectionStart = textBox1.SelectionStart + textBox1.SelectionLength;
}
// Paste current text in Clipboard into text box.
textBox1.Paste();
}
}
private void Menu_Undo(System.Object sender, System.EventArgs e)
{
// Determine if last operation can be undone in text box.
if (textBox1.CanUndo)
{
// Undo the last operation.
textBox1.Undo();
// Clear the undo buffer to prevent last action from being redone.
textBox1.ClearUndo();
}
}
Private Sub Menu_Copy(sender As System.Object, e As System.EventArgs)
' Ensure that text is selected in the text box.
If textBox1.SelectionLength > 0 Then
' Copy the selected text to the Clipboard.
textBox1.Copy()
End If
End Sub
Private Sub Menu_Cut(sender As System.Object, e As System.EventArgs)
' Ensure that text is currently selected in the text box.
If textBox1.SelectedText <> "" Then
' Cut the selected text in the control and paste it into the Clipboard.
textBox1.Cut()
End If
End Sub
Private Sub Menu_Paste(sender As System.Object, e As System.EventArgs)
' Determine if there is any text in the Clipboard to paste into the text box.
If Clipboard.GetDataObject().GetDataPresent(DataFormats.Text) = True Then
' Determine if any text is selected in the text box.
If textBox1.SelectionLength > 0 Then
' Ask user if they want to paste over currently selected text.
If MessageBox.Show("Do you want to paste over current selection?", _
"Cut Example", MessageBoxButtons.YesNo) = DialogResult.No Then
' Move selection to the point after the current selection and paste.
textBox1.SelectionStart = textBox1.SelectionStart + _
textBox1.SelectionLength
End If
End If
' Paste current text in Clipboard into text box.
textBox1.Paste()
End If
End Sub
Private Sub Menu_Undo(sender As System.Object, e As System.EventArgs)
' Determine if last operation can be undone in text box.
If textBox1.CanUndo = True Then
' Undo the last operation.
textBox1.Undo()
' Clear the undo buffer to prevent last action from being redone.
textBox1.ClearUndo()
End If
End Sub
Ejemplo 2
En el ejemplo siguiente se establece la SelectionStart propiedad de un TextBox objeto que ReadOnly le proporciona la Focus primera.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.button1.Click += new System.EventHandler(this.ButtonClickWork);
}
private void ButtonClickWork(object sender, EventArgs e)
{
this.textBox1.Text = "Hello world!";
this.textBox1.ReadOnly = true;
this.textBox1.Focus();
this.textBox1.SelectionStart = this.textBox1.SelectionStart + 1;
this.textBox1.SelectionLength = 1;
}
}
Public Class Form1
Private Sub ButtonClickWork(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Me.TextBox1.Text = "Hello world!"
Me.TextBox1.ReadOnly = True
Me.TextBox1.Focus()
Me.TextBox1.SelectionStart = Me.TextBox1.SelectionStart + 1
Me.TextBox1.SelectionLength = 1
End Sub
End Class
Comentarios
Si no se selecciona ningún texto en el control , esta propiedad indica el punto de inserción, o símbolo de intercalación, para el texto nuevo. Si establece esta propiedad en una ubicación más allá de la longitud del texto del control, la posición de inicio de la selección se colocará después del último carácter. Cuando se selecciona texto en el control de cuadro de texto, cambiar esta propiedad podría disminuir el valor de la SelectionLength propiedad. Si el texto restante del control después de la posición indicada por la SelectionStart propiedad es menor que el valor de la SelectionLength propiedad, el valor de la SelectionLength propiedad se reduce automáticamente. El valor de la SelectionStart propiedad nunca provoca un aumento en la SelectionLength propiedad .
Puede mover mediante programación la selección dentro del cuadro de texto estableciendo las SelectionStart propiedades y SelectionLength .
Puede mover mediante programación el símbolo de intercalación dentro del cuadro de texto estableciendo la SelectionStart posición dentro del cuadro de texto donde desea que el símbolo de intercalación se mueva y establezca la SelectionLength propiedad en un valor de cero (0).
TextBox Debe tener el foco para que la selección o el símbolo de intercalación se muevan. Puede establecer la SelectionStart propiedad de un TextBox objeto que le ReadOnly proporciona la Focus primera.