TOC

This article has been localized into Danish by the community.

Basale kontroller:

TextBox kontrollen

TextBox kontrollen er den mest grundlæggende tekstindtastningskontrol i WPF. Den giver slutbrugeren mulighed for at skrive almindelig tekst enten på en enkelt linje til indtastning i dialog, eller på flere linjer som en editor.

Enkelt-linje TextBox

TextBox kontrollen er så almindelig brugt, at du faktisk ikke behøver at bruge nogle egenskaber på den for at have et komplet redigerbart tekstfelt. Her er et minimalistisk eksempel:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBoxSample" Height="80" Width="250">
    <StackPanel Margin="10">
		<TextBox />
	</StackPanel>
</Window>

Dette er alt, du behøver for at have et tekstfelt. jeg tilføjede teksten efter kørsel af eksemplet og før, jeg tog skærmbilledet, men du kan også gøre det via markup - udfylde tekstboksen på forhånd ved hjælp af Text egenskaben.

<TextBox Text="Hello, world!" />

Prøv at højreklikke i TextBox kontrollen. Du vil få en menu med muligheder, som giver dig adgang til at bruge TextBox kontrollen med Windows udklipsholder. De normale tastaturgenveje for at fortryde og annullere fortryd (Ctrl-Z and Ctrl-Y) burde også virke, og al denne funktionalitet kommer ganske gratis.

Fler-linjet TextBox

Hvis du kører eksemplet ovenvor, vil du bemærke, at TextBox kontrollen som standard er en enkelt-linje kontrol. Der sker ingenting, hvis du trykker Enter, og hvis du tilføjer mere tekst end der kan være på en enkelt linje, vil kontrollen bare rulle. Men at lave TextBox kontrollen om til en fler-linjet editor er meget simpelt:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBoxSample" Height="160" Width="280">
    <Grid Margin="10">
		<TextBox AcceptsReturn="True" TextWrapping="Wrap" />
	</Grid>
</Window>

Jeg har tilføjet to egenskaber: AcceptsReturn gør TextBox kontroollen til en fler-linjet kontrol ved at tillade brug af Enter/Return tasten til at gå til næste linje, og TextWrapping egenskaben, der vil få tekstombrydning til at ske automatisk, når slutningen på linjen er nået.

Stavekontrol med TextBox

Som en bonus har TextBox kontrollen faktisk automatisk stavekontrol for engelsk og nogle andre sprog (for øjeblikket er engelsk, fransk, tysk og spansk understøttet).

Det fungerer meget som i Microsoft Word, hvor stavefejl understreges, og du kan højreklikke for alternative forslag. At aktivere stavekontrol er meget let:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBoxSample" Height="160" Width="280">
    <Grid Margin="10">
		<TextBox AcceptsReturn="True" TextWrapping="Wrap" SpellCheck.IsEnabled="True" Language="en-US" />
	</Grid>
</Window>

Vi har brugt det forrige fler-linjede tekstbokseksempel som grundlag, og så har jeg tilføjet to nye egenskaber: De tilknyttede egenskaber fra SpelllCheck klassen - IsEnabled egenskaben, som aktiverer stavekontrol på forældreklassen samt Language egenskaben, som fortæller stavekontrollen hvilket sprog, der skal bruges.

At arbejde med TextBox markeringer

Ganske som enhver anden redigerbar kontrol i Windows tillader TextBox kontrollen markering af tekst, f. eks. for at slette et helt ord på en gang eller kopiere en del af teksten til udklipsholderen. WPF Textbox kontrollen har flere egenskaber til at arbejde med markeret tekst, og disse kan læses og endda ændres. I det næste eksempel vil vi aflæse disse egenskaber:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSelectionSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBoxSelectionSample" Height="150" Width="300">
	<DockPanel Margin="10">
		<TextBox SelectionChanged="TextBox_SelectionChanged" DockPanel.Dock="Top" />
		<TextBox Name="txtStatus" AcceptsReturn="True" TextWrapping="Wrap" IsReadOnly="True" />

	</DockPanel>
</Window>

Eksemplet består af to TextBox kontroller: En til redigering og en til at vise den aktuelle markeringsstatus i. Til dette sætter vi IsReadOnly egenskaben til true for at forhindre redigering i status TextBox kontrollen. Vi abonnerer på SelectionChanged hændelsen i den første TextBox og håndterer denne i code-behind:

using System;
using System.Text;
using System.Windows;
using System.Windows.Controls;

namespace WpfTutorialSamples.Basic_controls
{
	public partial class TextBoxSelectionSample : Window
	{
		public TextBoxSelectionSample()
		{
			InitializeComponent();
		}

		private void TextBox_SelectionChanged(object sender, RoutedEventArgs e)
		{
			TextBox textBox = sender as TextBox;
			txtStatus.Text = "Selection starts at character #" + textBox.SelectionStart + Environment.NewLine;
			txtStatus.Text += "Selection is " + textBox.SelectionLength + " character(s) long" + Environment.NewLine;
			txtStatus.Text += "Selected text: '" + textBox.SelectedText + "'";
		}
	}
}

Vi benytter tre interessante egenskaber for at opnå dette:

SelectionStart, som giver os den aktuelle markørposition eller hvis der er en markering, hvor markeringen starter.

SelectionLength, som giver os længden på den aktuelle markering, hvis der er en. Ellers returneres blot 0.

SelectedText, som giver os den aktuelt markerede tekst, hvis der er en markering. Ellers returneres en tom streng.

Ændring af markeringen

Alle disse egenskaber kan både læses og skrives, hvilket betyder, at du kan også kan ændre dem. Du kan f.eks. sætte SelectionStart og SelectionLength egenskaberne for at vælge et stykke tekst, eller du kan bruge SelectedText egenskaben til at indsætte og vælge en streng. Du skal bare huske, at TextBox kontrollen skal have fokus, f.eks. ved at kalde Focus() metoden først, for at dette fungerer.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!