我想知道如何将用户在常用文本框中输入的字符更改为另一个字符
例如:
如果用户在文本框中键入“ A ”,我想让程序输入“ B ”
如果用户在文本框中键入“ N ”,我希望程序输入“ M ”
如果用户在文本框中输入“ Y ”,我想让程序输入“ S ”
所以..
所以当用户输入“ ANY ”时,我需要文本框中的文字为“ BMS ”
我已经从Custom TextBox Control that Switches Keyboard Language Automatically c# WPF
解决了这个问题答案 0 :(得分:1)
您需要实现文本框的OnTextChanged
/ TextChanged
事件(这取决于您是使用win表单还是.net)。
您可以使用文本框的Text
值访问文本框的当前值。
您需要保存旧值以进行比较,以便跟踪已更改的字符。
答案 1 :(得分:1)
如果您使用的是Visual Studio,请创建一个文本框并双击它。然后会显示一个方法,并插入以下代码:
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == "ANY")
textBox1.Text = "BMS";
}
该方法检查您的文本框是否包含字符串“ANY”并将其更改为“BMS”。 您也可以更改此方法,以便更改您编写的每个字母的字母。例如:
A -> B
BN -> BM
BMY -> BMS
这会让人感觉这个词在被写入时会改变,而不是在写完整个单词时。
答案 2 :(得分:1)
首先创建一个字典,其中包含有关此内容的更改内容的信息
Dictionary<string, string> myDict = new Dictionary<string, string>
{
{"A", "B"},
{"N", "M"},
{"Y", "S"},
};
您可以通过覆盖自定义类中的OnTextInput方法来实现。因此,您自己的自定义类的完整代码将是
namespace WpfApplication
{
public class MyTextBox : TextBox
{
Dictionary<string, string> myDict = new Dictionary<string, string>
{
{"A", "B"},
{"N", "M"},
{"Y", "S"},
};
protected override void OnTextInput(TextCompositionEventArgs e)
{
string str;
if (myDict.TryGetValue(e.Text, out str))
{
e.Handled = true;
if (SelectionLength == 0)
Text = Text.Insert(CaretIndex, str)
else
{
SelectedText = str;
SelectionLength = 0;
}
CaretIndex += Text.Length;
}
base.OnTextInput(e);
}
}
}
答案 3 :(得分:0)
试试这个。它可以解决你的问题。
private void textBox1_TextChanged(object sender, EventArgs e)
{
string finalValue;
if (!String.IsNullOrEmpty(textBox1.Text))
{
byte[] ascii = Encoding.ASCII.GetBytes(textBox1.Text);
List<byte> newB = new List<byte>();
foreach (byte b in ascii)
{
byte s = b;
s++;
newB.Add(s);
}
finalValue = Encoding.ASCII.GetString(newB.ToArray());
}
}