جمع اعداد فارسی

همانطور که می دانید در حالت عادی نمی توان مقدار TextBox هایی را که در آنها اعداد با استفاده از کاراکترهای فارسی نوشته می شوند را با هم جمع کرد. برای این کار از متد توسعه یافته زیر استفاده کنید :

public static class PersianDigit
{
    public static string ConvertDigits(this string value)
    {
        StringBuilder StringBuilder1 = new StringBuilder();

        for (int i = 0; i < value.Length; i++)
        {
            if (char.IsDigit(value[i]))
            {
                StringBuilder1.Append(char.GetNumericValue(value[i]));
            }
            else
            {
                StringBuilder1.Append(value[i]);
            }
        }

        return StringBuilder1.ToString();
    }
}

حال فرض کنید که می خواهید مقدار دو TextBox که دارای اعداد فارسی هستند را با هم جمع کنید:

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

namespace SumPersianDigit
{
    public static class PersianDigit
    {
        public static string ConvertDigits(this string value)
        {
            StringBuilder StringBuilder1 = new StringBuilder();

            for (int i = 0; i < value.Length; i++)
            {
                if (char.IsDigit(value[i]))
                {
                    StringBuilder1.Append(char.GetNumericValue(value[i]));
                }
                else
                {
                    StringBuilder1.Append(value[i]);
                }
            }

            return StringBuilder1.ToString();
        }
    }

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

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((int)e.KeyChar >= 48 && (int)e.KeyChar < 58)
                e.KeyChar = (char)(1632 + int.Parse(e.KeyChar.ToString()));
        
        }

        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((int)e.KeyChar >= 48 && (int)e.KeyChar < 58)
                e.KeyChar = (char)(1632 + int.Parse(e.KeyChar.ToString()));        
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int number1 = int.Parse(this.textBox1.Text.ConvertDigits());
            int number2 = int.Parse(this.textBox2.Text.ConvertDigits());
            int result = number1 + number2;
            MessageBox.Show(result.ToString());
        }
    }
}

نتیجه
sum-persian-digit-in-c#