我有 C# WPF 專案,我有 4 個單元格,我嘗試將一些代碼粘貼到這些單元格(如 PIN 碼),但是當我單擊 CTRL V 時,它的第一個數字僅復制到第一個單元格。我該如何解決?
.xaml 檔案
<StackPanel Style="{DynamicResource HorizontalPanel}" >
<Menu>
<MenuItem Command="ApplicationCommands.Paste" />
</Menu>
<Border Style="{DynamicResource DigitBorder}">
<TextBox Style="{DynamicResource Digit1Text}" Name="Digit1" TextChanged="Digit1_TextChanged" />
</Border>
<Border Style="{DynamicResource DigitBorder}">
<TextBox Style="{DynamicResource Digit2Text}" Name="Digit2" TextChanged="Digit2_TextChanged"/>
</Border>
<Border Style="{DynamicResource DigitBorder}">
<TextBox Style="{DynamicResource Digit3Text}" Name="Digit3" TextChanged="Digit3_TextChanged"/>
</Border>
<Border Style="{DynamicResource DigitBorder}">
<TextBox Style="{DynamicResource Digit4Text}" Name="Digit4" TextChanged="Digit4_TextChanged"/>
</Border>
</StackPanel>
.xaml.cs 檔案:
}
public PasswordScreen(object object1, object object2, ConnectorAction connectorAction)
{
InitializeComponent();
Digit1.Focus();
Object1 = object1;
Object2 = object2;
ConnectorAction = connectorAction;
MenuItem pasteMenuItem = new MenuItem();
pasteMenuItem.Command = ApplicationCommands.Paste;
}
private void Digit1_TextChanged(object sender, TextChangedEventArgs e)
{
if (Digit1.Text.Length == 1)
{
Digit2.Focus();
}
}
Digit2_TextChanged、Digit3_TextChanged、Digit4_TextChanged 相同
我不明白我是如何在這里捕捉密碼并將每個數字粘貼到不同單元格上的? 強調文本
uj5u.com熱心網友回復:
如果我理解正確,您想將 4 位密碼和每個數字粘貼到一個 TextBox 中。
一種方法是在 TextBox 更改的文本中處理它(例如第一個文本框,如果所有文本框都支持拆分,則需要其他文本框修改):
private void Digit1_TextChanged(object sender, TextChangedEventArgs e)
{
if (Digit1.Text.Length <= 1)
return;
string text = Digit1.Text;
Digit2.Text = text[1].ToString();
if (text.Length > 2)
Digit3.Text = text[2].ToString();
if (text.Length > 3)
Digit4.Text = text[3].ToString();
Digit1.Text = text[0].ToString();
}
或者撰寫一個自己的粘貼命令,可以通過單擊按鈕或快捷方式呼叫:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
if (!Clipboard.ContainsText())
return;
string clipboardText = Clipboard.GetText();
if (string.IsNullOrEmpty(clipboardText))
return;
int length = clipboardText.Length;
if (length > 0)
Digit1.Text = clipboardText[0].ToString();
if (length > 1)
Digit2.Text = clipboardText[1].ToString();
if (length > 2)
Digit3.Text = clipboardText[2].ToString();
if (length > 3)
Digit4.Text = clipboardText[3].ToString();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/336611.html
