Как скопировать только числа из замаскированного текстового поля в метку?

Я сделал замаскированное текстовое поле для сохранения чисел с маской (999) 000-0000 и хочу показывать только числа в метке, но когда я это делаю, он также копирует круглые скобки и строки.
Я знаю, что он копирует весь текст. Как я могу копировать только числа, введенные без маски? (форма окна)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

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

        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = maskedTextBox1.Text;
        }
    }
}

person Masoud Mohammadi    schedule 01.06.2014    source источник


Ответы (1)


Одним из решений является установка TextMaskFormat на ExcludePromptAndLiterals непосредственно перед чтением его значения:

maskedTextBox1.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
Console.WriteLine(maskedTextBox1.Text); 
//will print 3123 when value in the mask textbox is (31) 23 for mask (00) 00

И после этого установите Format обратно:

maskedTextBox1.TextMaskFormat = MaskFormat.IncludeLiterals;

Даже если вы не вернете формат IncludeLiterals, элемент управления пользовательского интерфейса все равно будет отображать замаскированный текст (31) 23 и будет работать как обычно. Это делается, если ваша другая логика полагается на маскированное поле Text.

Так что если у вас нет таких зависимостей, вы можете установить это значение прямо в дизайнере Visual Studio в окне свойств для maskedTextBox1

person Ilya Ivanov    schedule 01.06.2014
comment
tnx, но почему вы написали Console.WriteLine(), хотя должно быть label1.Text = maskedTextBox1.Text; ? - person Masoud Mohammadi; 01.06.2014
comment
это не имеет значения. maskedTextBox1.Text возвращает string, поэтому, если вы назначите его метке, ваша метка будет отображать необработанное число. Попробуй сам. Я просто хотел показать, как я получаю это число и читаю его без форм и отладки. - person Ilya Ivanov; 01.06.2014