テキストボックスへのユーザー入力を制限する方法を知っていますか?このテキストボックスは整数のみを受け入れますか?ちなみに私はWindows8用に開発しています。SOとGoogleから検索したものを試しましたが、機能しません。
質問する
28425 次
4 に答える
9
WPF ツールキット (IntegerUpDown コントロールまたは MaskedTextBox の両方を含む) をダウンロードしたくない場合は、およびイベントを使用して、WPF のマスクされたテキスト ボックスに関するこの記事を参考にして、自分で実装できます。UIElement.PreviewTextInput
DataObject.Pasting
ウィンドウに配置するものは次のとおりです。
<Window x:Class="WpfApp1.MainWindow" Title="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Orientation="Vertical" Width="100" Height="100" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBlock Name="NumericLabel1" Text="Enter Value:" />
<TextBox Name="NumericInput1"
PreviewTextInput="MaskNumericInput"
DataObject.Pasting="MaskNumericPaste" />
</StackPanel>
</Window>
そして、分離コードに C# を実装します。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void MaskNumericInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !TextIsNumeric(e.Text);
}
private void MaskNumericPaste(object sender, DataObjectPastingEventArgs e)
{
if (e.DataObject.GetDataPresent(typeof(string)))
{
string input = (string)e.DataObject.GetData(typeof(string));
if (!TextIsNumeric(input)) e.CancelCommand();
}
else
{
e.CancelCommand();
}
}
private bool TextIsNumeric(string input)
{
return input.All(c => Char.IsDigit(c) || Char.IsControl(c));
}
}
于 2013-02-11T14:36:03.493 に答える
6
public class IntegerTextBox : TextBox
{
protected override void OnTextChanged(TextChangedEventArgs e)
{
base.OnTextChanged(e);
Text = new String(Text.Where(c => Char.IsDigit(c)).ToArray());
this.SelectionStart = Text.Length;
}
}
于 2013-02-11T14:38:24.893 に答える
1
最も生のレベルでは、KeyUp
イベントを傍受したりTextChanged
、追加されている文字を確認したり、Int に解析できない場合は削除したりできます。
また、チェック -テキストボックスの数字のみを受け入れ、テキストボックス をマスキングして小数のみを受け入れます
于 2013-02-11T14:26:14.570 に答える
0
整数アップダウン コントロールを使用できます。トリックを行うWPFツールキットには次のものがあります。
https://wpftoolkit.codeplex.com/wikipage?title=IntegerUpDown
于 2013-02-11T14:25:02.127 に答える