تشریح کد سه رقم سه رقم جدا کردن اعداد

MPERSIA4

Member
با درود و خسته نباشید

کد:
  private void Seperation(TextBox b)
        {
            decimal number;
            if (decimal.TryParse(b.Text, out number))
            {
                b.Text = string.Format("{0:N0}", number);
                b.SelectionStart = b.Text.Length;
            }
        }

من تو برنامم از این کد استفاده کردم
قبلش چند بار خودم سعی کرده بودم که مشکلم رو حل کنم ولی نشد
گشتم و این کد رو پیدا کردم (در قالب یه ویدئو آموزشی ،ولی زیاد درمورد عملکردش توضیح نداده بود)
البته با یه تغییر کوچولو اونو تو تابع نوشتم
حالا هم میخوام بدونم که چطوری کار میکنه، منظورم اون دو تا خط اصلیه ( قسمت if و قسمتی که فرمت رشته رو مشخص کرده)
بقیه که معلومه
با سپاس فراوان
 

MPERSIA4

Member
سوال 1 :
چطور میفهمه که باید ویرگول بذاره؟
چطور میفهمه سه تا سه تا جدا کنه و ویرگول بذاره؟
سوال 2 :
چطور این کد رو ، روی هر ستون از یک DataGridView که مقدار عددی رو نشون میده بکار ببرم تا اعداد داخل اون ستون ها رو هم سه تا سه تا جدا کنه؟
من هر کاری میکنم نمیشه و همش با خطا مواجه میشم
رو DataTable امتحان کردم بعدش ویژوال خطا داد گفت نمیتونی مقدار String رو تو فیلد Int ذخیره کنی
خواستم TataTable DataType رو عوض کنم ، گفت نمیتونی نوع ستونی که توش مقدار داری رو عوض کنی
خب الان من چطوری متونم این کار رو انجام بدم بدون اینکه تو پایگاه داده نوع ستون رو عوض کنم؟؟؟
با سپاس فراوان
 

the_king

مدیرکل انجمن
سوال 1 :
چطور میفهمه که باید ویرگول بذاره؟
چطور میفهمه سه تا سه تا جدا کنه و ویرگول بذاره؟
الزاما ویرگول نیست، بستگی به تنظیمات سیستم تون داره و یا هر سیستمی که برنامه تون روش اجرا میشه. روی این حساب نکنید که همیشه ویرگول ئه یا سه رقم سه رقم جداسازی میشن.
decimal.TryParse میتونه رشته رو به عدد معادلش تبدیل کنه. از اونجایی که برای TryParse مشخص نشده که عدد ها با چه فرمتی نشون داده شدن، از فرمت پیشفرض سیستم استفاده می کنه، یعنی ممکنه تو هر سیستمی فرق کنه.حالا ممکنه در تنظیم سیستم تون از ویرگول استفاده شده باشه یا نقطه یا هر کاراکتر دیگه ای. مهم اینه که طبق تنظیماتی که تو که در Control Panel بخش Clock, Language, and Region ویندوز وجود داره عمل می کنه. اگه موفق بشه و true برگردونه شرط داخل if برقراره و اجرا میشه، وگرنه رشته قابل تبدیل به عدد نیست و کار دیگه ای انجام نمیشه.
اون N0 رو داخل string.Format می بینید؟ اون N0 ئه که باعث میشه اعداد به شیوه ای که در تظیمات سیستم تعریف شدن به رشته تبدیل بشن، چون در تظیمات سیستم تون اعداد سه رقم سه رقم و با ویرگول جدا سازی شدن این رشته هم همون شکل شده، وگرنه ممکنه در یک سیستمی اعداد با کاراکتر دیگه ای جداسازی بشن، قابل تفییر و تنظیمه. N برای string.Format و ToString و سایر متد های مشابه نماد عدد ئه، اون 0 که بعدش اضافه می کنند تعداد رقم های بعد اعشار رو مشخص می کنه، فرضا N2 یعنی دو رقم بعد از اعشار داشته باشه. N0 یعنی هیچ رقمی بعد از اعشار نداشته باشه.
سوال 2 :
چطور این کد رو ، روی هر ستون از یک DataGridView که مقدار عددی رو نشون میده بکار ببرم تا اعداد داخل اون ستون ها رو هم سه تا سه تا جدا کنه؟
من هر کاری میکنم نمیشه و همش با خطا مواجه میشم
رو DataTable امتحان کردم بعدش ویژوال خطا داد گفت نمیتونی مقدار String رو تو فیلد Int ذخیره کنی
خواستم TataTable DataType رو عوض کنم ، گفت نمیتونی نوع ستونی که توش مقدار داری رو عوض کنی
خب الان من چطوری متونم این کار رو انجام بدم بدون اینکه تو پایگاه داده نوع ستون رو عوض کنم؟؟؟
با سپاس فراوان
ابتدا در نظر بگیرید که به DataGridView تون عدد رو بفرستید نه رشته فرمت بندی شده، یعنی اینکه سه رقم سه رقم جدا بشه رو در DataGridView مشخص خواهید کرد نه اینکه یک رشته آماده رو در DataGridView درج کنید که بعدا در تبدیلش به عدد به مشکل بر بخورید. با کد زیر اولین ستون از DataGridView (اون [Columns[0 اولین ستون ئه، [Columns[1 دومین ستون، [Columns[2 سومین ستون و ...) اعداد رو با فرمت N0 نشون میده :
کد:
dataGridView1.Columns[0].DefaultCellStyle.Format = "N0";
 

MPERSIA4

Member
الزاما ویرگول نیست، بستگی به تنظیمات سیستم تون داره و یا هر سیستمی که برنامه تون روش اجرا میشه. روی این حساب نکنید که همیشه ویرگول ئه یا سه رقم سه رقم جداسازی میشن.
decimal.TryParse میتونه رشته رو به عدد معادلش تبدیل کنه. از اونجایی که برای TryParse مشخص نشده که عدد ها با چه فرمتی نشون داده شدن، از فرمت پیشفرض سیستم استفاده می کنه، یعنی ممکنه تو هر سیستمی فرق کنه.حالا ممکنه در تنظیم سیستم تون از ویرگول استفاده شده باشه یا نقطه یا هر کاراکتر دیگه ای. مهم اینه که طبق تنظیماتی که تو که در Control Panel بخش Clock, Language, and Region ویندوز وجود داره عمل می کنه. اگه موفق بشه و true برگردونه شرط داخل if برقراره و اجرا میشه، وگرنه رشته قابل تبدیل به عدد نیست و کار دیگه ای انجام نمیشه.
اون N0 رو داخل string.Format می بینید؟ اون N0 ئه که باعث میشه اعداد به شیوه ای که در تظیمات سیستم تعریف شدن به رشته تبدیل بشن، چون در تظیمات سیستم تون اعداد سه رقم سه رقم و با ویرگول جدا سازی شدن این رشته هم همون شکل شده، وگرنه ممکنه در یک سیستمی اعداد با کاراکتر دیگه ای جداسازی بشن، قابل تفییر و تنظیمه. N برای string.Format و ToString و سایر متد های مشابه نماد عدد ئه، اون 0 که بعدش اضافه می کنند تعداد رقم های بعد اعشار رو مشخص می کنه، فرضا N2 یعنی دو رقم بعد از اعشار داشته باشه. N0 یعنی هیچ رقمی بعد از اعشار نداشته باشه.

ابتدا در نظر بگیرید که به DataGridView تون عدد رو بفرستید نه رشته فرمت بندی شده، یعنی اینکه سه رقم سه رقم جدا بشه رو در DataGridView مشخص خواهید کرد نه اینکه یک رشته آماده رو در DataGridView درج کنید که بعدا در تبدیلش به عدد به مشکل بر بخورید. با کد زیر اولین ستون از DataGridView (اون [Columns[0 اولین ستون ئه، [Columns[1 دومین ستون، [Columns[2 سومین ستون و ...) اعداد رو با فرمت N0 نشون میده :
کد:
dataGridView1.Columns[0].DefaultCellStyle.Format = "N0";
خیلی خیلی ممنون استاد
چه راحت بود
با چه بدبختی سلول های عددی دیتاگرید (بدون دیتا سورس) رو سه رقم سه رقم جدا کرده بودم =)))
تا مشکلی دیگر بدرود
 

جدیدترین ارسال ها

بالا