首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改文本框中的字母

如何更改文本框中的字母
EN

Stack Overflow用户
提问于 2013-11-02 20:16:46
回答 3查看 173关注 0票数 0

如何更改文本框中的字母?

例如,当用户键入"L“时,将输入”N“。由于我使用的是轴激波闪光灯,并且需要在闪存和c#之间建立连接,所以在闪存中有许多其他语言无法使用的单词,所以我不得不为它添加一个替换器,我使用了text.replace()函数,但它不适用于我的情况。我用它的方式如下:

代码语言:javascript
复制
private void textBox1_TextChanged(object sender, EventArgs e)
{
    textBox1.Text.Replace("ی","ي");
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-02 20:32:46

试着分配:

代码语言:javascript
复制
textBox1.Text = textBox1.Text.Replace("ی","ي");
票数 1
EN

Stack Overflow用户

发布于 2013-11-02 20:40:00

记住,字符串是不可变的。这意味着当您对其执行.Replace时,原始字符串不会更改。复制了一份。因此,只有当您将文本设置为这个新值时,它才能工作。就像我在下面一样

代码语言:javascript
复制
private void textBox1_TextChanged(object sender, EventArgs e)
{
     textBox1.Text = textBox1.Text.Replace("ی","ي");
}
票数 1
EN

Stack Overflow用户

发布于 2013-11-02 20:49:03

您可以定义一个字典来保存映射的所有必要条目,并像这样处理KeyPress事件:

代码语言:javascript
复制
Dictionary<char,char> dict = new Dictionary<char,char>();
//Initialize your dict, this should be done somewhere in your form constructor
dict['L'] = 'N';
dict['A'] = 'B';
//....
//KeyPress event handler for your textBox1
private void textBox1_KeyPress(object sender, KeyPressEventArgs e){
   char c;
   if(dict.TryGetValue(e.KeyChar, out c)) e.KeyChar = c;
}

注意事项:为了防止用户粘贴一些不需要的文本,您可以尝试捕获消息WM_PASTE,从剪贴板获取文本,并将更正后的文本设置为剪贴板:

代码语言:javascript
复制
public class NativeTextBox : NativeWindow {
    public Dictionary<char, char> CharMappings;
    public NativeTextBox(Dictionary<char,char> charMappings){
      CharMappings = charMappings;
    }
    protected override void WndProc(ref Message m) {
        if (m.Msg == 0x302){ //WM_PASTE
            string s = Clipboard.GetText();
            foreach (var e in CharMappings){
              s = s.Replace(e.Key, e.Value);
            }                
            Clipboard.SetText(s);
        }
        base.WndProc(ref m);
    }
}
//Then hook it up like this (place in your form constructor)
new NativeTextBox(dict).AssignHandle(textBox1.Handle);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19746398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档