在屏蔽文本框中使用变量

Use variable in masked textbox

提问人:gohar iranian 提问时间:8/14/2023 最后编辑:YSFKBDYgohar iranian 更新时间:8/15/2023 访问量:53

问:

我想用这种格式制作一个蒙版文本 xxxx/##/##

xxxx 是存储在 config 中变量中的数字,应该在“form load”时加载 我该怎么办?

另外,当我将掩码设置为 1402/##/## 时,它变成了 14_2/__ /__

但我想 1402 是静态的!

对不起我的英语

C# WinForms 变量 MaskedTextBox

评论

2赞 Community 8/14/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。
0赞 Jimi 8/14/2023
在此处阅读注释

答:

1赞 Sergey 8/14/2023 #1

您需要使用反斜杠对蒙版静态部分中的每个字符进行转义。请参阅文档中的备注。

\ 转义掩码字符,将其转换为文字。“\”是反斜杠的转义序列。

在这种情况下,掩码将如下所示:

maskedTextBox1.Mask = @"\1\4\0\2/00/00";

可以通过编程方式对字符进行转义。假设您有以下配置文件,其中包含掩码的静态部分。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="number" value="1402"/>
    </appSettings>
</configuration>

然后,您可以按如下方式转义字符:

using System.Configuration;
using System.Text;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // Initialize the masked text box.
            var maskedTextBox1 = new MaskedTextBox
            {
                Location = new System.Drawing.Point(10, 10)
            };
            Controls.Add(maskedTextBox1);

            // Read the static number from the configuration file.
            var number = int.Parse(ConfigurationManager.AppSettings["number"]);
            
            // Split the number into individual characters and escape them.
            var prefix = new StringBuilder();
            foreach (var character in number.ToString())
            {
                prefix.Append(@"\");
                prefix.Append(character);
            }

            // Set the updated mask.
            maskedTextBox1.Mask = prefix + "/00/00";
        }
    }
}

enter image description here

评论

0赞 gohar iranian 8/14/2023
我想用这种格式制作一个遮罩文本 xxxx/##/## xxxx 是存储在 config 中的变量中的数字。我应该怎么做?
0赞 Sergey 8/14/2023
@gohar-伊朗人 请参阅更新的答案。
0赞 gohar iranian 8/15/2023
谢谢。我可以制作波斯历的条件吗?
0赞 Sergey 8/15/2023
@gohar 请参阅更新后的答案。您需要使用掩码“/00/00”。它只允许数字 0-9。例如,若要验证输入,可以在 Validating 事件处理程序中手动执行此操作。