-
کنترل مقادیر ورودی به تکست باکس
برای این سوالم چند دقیقه است دارم تو فروم سرچ میکنم. ولی یا کد سی شارپ رو گیر نیاوردم و یا به هر نحو با کد ارائه شده مشکل داشتم. میشه سوالات زیر رو برام جواب بدید؟
1- چطور میتونم مقدار ریالی در تکست باکسم بپذیرم؟ یعنی همزمان با وارد شدن مقدار ، سه تا سه تا از هم جداش کنه ولی بعد که تو بانک ریخته میشه این جداکننده ها رو تو بانک نریزه. چون مقدار فیلد بانکم عددیه
2- چطور میتونم تعریف کنم تکس باکسم فقط عدد بگیره؟
3- چطور تعریف کنم تکست باک فقط حروف بگیره؟
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
خب اگه میخای 3 تا 3 تا جداشون کنی یه حلقه بزار:
for (int i = 0; i <=(textBox1.Text.Length)-3; i=i+3)
{
listBox1.Items.Add(textBox1.Text.Substring(i,3));
}
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
از یه MaskTextBox استفاده کن
برای خاصیت Maskش هم میتونی از رشته هایی مثل این استفاده کنی:
###,###,###
یا
000,000,000
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
Editali
از یه MaskTextBox استفاده کن
برای خاصیت Maskش هم میتونی از رشته هایی مثل این استفاده کنی:
###,###,###
یا
000,000,000
ممنون. اخه نیمخوام از ماسک تکست باکس استفاده کنم. میخوام همون تکست باکس ساده باشه و وقتی کاربر اضافه میکنه خود به خود سه تا سه تا رو جدا کنه
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
صباح فتحی
خب اگه میخای 3 تا 3 تا جداشون کنی یه حلقه بزار:
for (int i = 0; i <=(textBox1.Text.Length)-3; i=i+3)
{
listBox1.Items.Add(textBox1.Text.Substring(i,3));
}
چرا از لیست باکس استفاه کردین؟ ببینین من میخوام همون لحظه که در حال تایپ هستم هر سه تایی که کاربر اضافه میکنه یه ، بهش اضافه کنه ولی بعد که میریزه تو بانک این علامت لحاظ نشه. چون فیلد بانکم از نوع int هستش
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
صباح فتحی
خب اگه میخای 3 تا 3 تا جداشون کنی یه حلقه بزار:
for (int i = 0; i <=(textBox1.Text.Length)-3; i=i+3)
{
listBox1.Items.Add(textBox1.Text.Substring(i,3));
}
چرا از لیست باکس استفاه کردین؟ ببینین من میخوام همون لحظه که در حال تایپ هستم هر سه تایی که کاربر اضافه میکنه یه ، بهش اضافه کنه ولی بعد که میریزه تو بانک این علامت لحاظ نشه. چون فیلد بانکم از نوع int هستش
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
با سلام
یه همچین کدی بنویس امتحانش نکردم تا حالا ولی گفتم شاید به دردت بخوره
int a = textBox1.Text.Length;
if (a == 3 || a == 7 || a == 11)
{
SendKeys.Send("{/}");
}
البته تو رویداد TextChanged باید بنویسیش
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
mmd2009
با سلام
یه همچین کدی بنویس امتحانش نکردم تا حالا ولی گفتم شاید به دردت بخوره
int a = textBox1.Text.Length;
if (a == 3 || a == 7 || a == 11)
{
SendKeys.Send("{/}");
}
البته تو رویداد TextChanged باید بنویسیش
کد درسته ولی یه مشکل داره : از چپ ، سه تا سه تا جدامیکنه.باید از راست جدا شه
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
samaram
چرا از لیست باکس استفاه کردین؟ ببینین من میخوام همون لحظه که در حال تایپ هستم هر سه تایی که کاربر اضافه میکنه یه ، بهش اضافه کنه ولی بعد که میریزه تو بانک این علامت لحاظ نشه. چون فیلد بانکم از نوع int هستش
عزیزم من همینجوری گذاشتم تا نتیجه معلوم باشه..وگرنه لیست باکس مناسب کارشما نیست:بوس:
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
مگه عدد وارد تکست نمیکنید؟؟!!
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
mmd2009
مگه عدد وارد تکست نمیکنید؟؟!!
چرا. ولی اخه اعداد مربوط به واحد پول هستند. کلا هر چی باشه دیگه. عدد رو باید سه رقم سه رقم از راست جدا کرد نه چپ
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
privatevoid txtREQFrom_KeyPress(object sender, KeyPressEventArgs e)
{
// if (char.IsNumber(e.KeyChar)) e.Handled = true;// Text box accpet only letters
if (char.IsLetter(e.KeyChar)) e.Handled = true; // Text box accpet only numbers
}
privatevoid txtEach_Enter(object sender, EventArgs e)
{
string s = txtEach.Text;
s = s.Replace(",", "");
txtEach.Text = s;
txtEach.SelectionStart = 0;
txtEach.SelectionLength = txtEach.Text.Length;
}
privatevoid txtEach_Leave(object sender, EventArgs e)
{
if (((TextBox)sender).Text == "") ((TextBox)sender).Text = "0";
if (decimal.Parse(((TextBox)sender).Text) < 0) ((TextBox)sender).Text = "0";
((TextBox)sender).Text = decimal.Parse(((TextBox)sender).Text).ToString("#,#.00");
if (txtEach.Text != "0" || txtEach.Text != "") LineItem_Has_Data_bol = true;
}
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
ببین اگه از mask textbox استفاده کنین به ساده گی همه مشکلاتت حل میشه اگه دلیل خاصی ندارین ازش استفاده کنین من تجربه خوبی ازش دارم.
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
عزيز من يه كد دارم كه نميذاره عدد وارد تكس باكس بشه من خودم از اين كد استفاده مي كنم اين كد اجازه وارد كردن اينتر و بك اسپيس رو ميده
private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 8 || e.KeyChar == 46)//backspace&.
{ return; }
if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))
e.Handled = true;
}
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
سلام
برای سه رقم سه رقم جدا کردن.
using System.Globalization;
private void Txt_TextChanged(object sender, EventArgs e)
{
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = 0;
Txt.Text = Int64.Parse(Txt.Text, NumberStyles.AllowThousands).ToString("N", nfi);
}
برای قبول فقط عدد . (حتی با عمل copy وPaste ، فقط عدد قبول میکنه)
bool TextCheck = false;
bool KeyPressed = false;
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!KeyPressed)
{
if (!TextCheck)
{
TextCheck = true;
string Text = textBox1.Text;
textBox1.Text = "";
for (int i = 0; i < Text.Length; i++)
if (Convert.ToInt16(Text[i]) > 47 && Convert.ToInt16(Text[i]) < 58)
textBox1.Text += Text[i];
textBox1.Select(textBox1.TextLength, 0);
TextCheck = false;
}
KeyPressed = false;
}
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
KeyPressed = true;
e.Handled = Char.IsDigit(e.KeyChar) == false && Char.IsControl(e.KeyChar) == false;
if (!char.IsDigit(e.KeyChar))
KeyPressed = false;
}
دوست عزیز iman_lovely666 ، در textbox شما ، میشه عدد paste کرد.
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
M.YasPro
راستش نتونستم ازش استفاده کنم. میشه یه کد مثال بزنید
نقل قول:
نوشته شده توسط
robat7
privatevoid txtREQFrom_KeyPress(object sender, KeyPressEventArgs e)
{
// if (char.IsNumber(e.KeyChar)) e.Handled = true;// Text box accpet only letters
if (char.IsLetter(e.KeyChar)) e.Handled = true; // Text box accpet only numbers
}
privatevoid txtEach_Enter(object sender, EventArgs e)
{
string s = txtEach.Text;
s = s.Replace(",", "");
txtEach.Text = s;
txtEach.SelectionStart = 0;
txtEach.SelectionLength = txtEach.Text.Length;
}
privatevoid txtEach_Leave(object sender, EventArgs e)
{
if (((TextBox)sender).Text == "") ((TextBox)sender).Text = "0";
if (decimal.Parse(((TextBox)sender).Text) < 0) ((TextBox)sender).Text = "0";
((TextBox)sender).Text = decimal.Parse(((TextBox)sender).Text).ToString("#,#.00");
if (txtEach.Text != "0" || txtEach.Text != "") LineItem_Has_Data_bol = true;
}
ممنون. به چندتا مشکل برخوردم. اولا جلوی هر عدد دو تا صفر میذاره و بعد از این دو صفر سه تا سه تا جدا میکنه. مثلا 1242 رو به 1,242,00 تبدیل میکنه. ثانیا نفهمیدم اون LineItem_Has_Data_bol = true به چه کار میاد و چی باید جاش بذارم.
نقل قول:
نوشته شده توسط
airsoft
ببین اگه از mask textbox استفاده کنین به ساده گی همه مشکلاتت حل میشه اگه دلیل خاصی ندارین ازش استفاده کنین من تجربه خوبی ازش دارم.
آخه تکست باکس متن منو در حال تایپ سه رقم سه رقم جدا نمیکنه
نقل قول:
نوشته شده توسط
iman_lovely666
عزيز من يه كد دارم كه نميذاره عدد وارد تكس باكس بشه من خودم از اين كد استفاده مي كنم اين كد اجازه وارد كردن اينتر و بك اسپيس رو ميده
private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 8 || e.KeyChar == 46)//backspace&.
{ return; }
if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))
e.Handled = true;
}
ممنون. جواب سوال سوم رو گرفتم. اگه میشه برای سوال اول کمکم کنید
نقل قول:
نوشته شده توسط
unique1984
سلام
برای سه رقم سه رقم جدا کردن.
using System.Globalization;
private void Txt_TextChanged(object sender, EventArgs e)
{
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = 0;
Txt.Text = Int64.Parse(Txt.Text, NumberStyles.AllowThousands).ToString("N", nfi);
}
برای قبول فقط عدد . (حتی با عمل copy وPaste ، فقط عدد قبول میکنه)
bool TextCheck = false;
bool KeyPressed = false;
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!KeyPressed)
{
if (!TextCheck)
{
TextCheck = true;
string Text = textBox1.Text;
textBox1.Text = "";
for (int i = 0; i < Text.Length; i++)
if (Convert.ToInt16(Text[i]) > 47 && Convert.ToInt16(Text[i]) < 58)
textBox1.Text += Text[i];
textBox1.Select(textBox1.TextLength, 0);
TextCheck = false;
}
KeyPressed = false;
}
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
KeyPressed = true;
e.Handled = Char.IsDigit(e.KeyChar) == false && Char.IsControl(e.KeyChar) == false;
if (!char.IsDigit(e.KeyChar))
KeyPressed = false;
}
دوست عزیز iman_lovely666 ، در textbox شما ، میشه عدد paste کرد.
ببینید من با استفاده از کد شما اینجوری نوشتم:
bool TextCheck = false;
bool KeyPressed = false;
privatevoid txtpool_TextChanged(object sender, EventArgs e)
{
NumberFormatInfo nfi = newNumberFormatInfo();
nfi.NumberDecimalDigits = 0;
txtpool .Text = Int64.Parse(txtpool .Text , NumberStyles.AllowThousands).ToString("N", nfi);
//------------------------------
if (!KeyPressed)
{
if (!TextCheck)
{
TextCheck = true;
string Text = txtpool .Text ;
txtpool .Text = "";
for (int i = 0; i < Text.Length; i++)
if (Convert.ToInt16(Text[i]) > 47 && Convert.ToInt16(Text[i]) < 58)
txtpool .Text += Text[i];
textBox1.Select(txtpool .TextLength , 0);
TextCheck = false;
}
KeyPressed = false;
}
}
ولی به محض اینکه یه رقم داخلش وارد میکنم اجرای برنامه متوقف میشه و میره سر خط زیر و این پیغام رو میده:
txtpool .Text = Int64.Parse(txtpool .Text , NumberStyles.AllowThousands).ToString("N", nfi);
خطا : Input string was not in a correct format.
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
ولی به محض اینکه یه رقم داخلش وارد میکنم اجرای برنامه متوقف میشه و میره سر خط زیر و این پیغام رو میده:
کد:
txtpool .Text = Int64.Parse(txtpool .Text , NumberStyles.AllowThousands).ToString("N", nfi);
اگه کد های مربوط به ایونت KeyPress رو هم بنویسید، مشکلی نخواهید داشت.
موفق باشید.
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
unique1984
اگه کد های مربوط به ایونت KeyPress رو هم بنویسید، مشکلی نخواهید داشت.
موفق باشید.
شما که برای ایونت keypress کدی نذاشتید
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
قسمت های دیگه ی سوال اولم رو حل کردم. فقط مونده این قسمت سه رقم سه رقم جدا کردن. برای سه رقم سه رقم جدا کردن از هر یک از دو کد زیر تو رویداد textchange استفاده میکنم عدد رو اشتباه سه تا سه تا جدا میکنه.
مثلا من میخوام تایپ کنم : 2346900 اما این تایپ میکنه: 9,002,346
یعنی انگار تا یه جایی از یه جهت جدا میکنه و از یه جا دیگه از یه جهت دیگه!!!!
if (((TextBox)sender).Text == "") ((TextBox)sender).Text = "0";
if (decimal.Parse(((TextBox)sender).Text) < 0) ((TextBox)sender).Text = "0";
((TextBox)sender).Text = decimal.Parse(((TextBox)sender).Text).ToString("#, #.00");
if (txtEach.Text != "0" || txtEach.Text != "") LineItem_Has_Data_bol = true;
یا
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = 0;
Txt.Text = Int64.Parse(Txt.Text, NumberStyles.AllowThousands).ToString("N", nfi);
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
samaram
شما که برای ایونت keypress کدی نذاشتید
چرا گذاشتم ! منتها خطوط آخر بود و باید کمی اسکرول رو جابجا می کردین.
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
KeyPressed = true;
e.Handled = Char.IsDigit(e.KeyChar) == false && Char.IsControl(e.KeyChar) == false;
if (!char.IsDigit(e.KeyChar))
KeyPressed = false;
}
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
یه سوال دیگه. با عنوان تاپیکم یه کم فرق داره اما خواستم تاپیک جدید نزنم. چطور میتونم تعریف کنم که تو یکی از سلول های گراید ویو سه رقم سه رقم جدا شه؟
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
این تاپیک رو ببینید .
موفق باشید .
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
در قسمت format ستون مورد نظر عبارت زیر رو وارد کنید . واسه سه رقم سه رقم جدا کردن.
#,##0
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
اقا من نمیفهمم ینی چی از راست جدا کنه مگه نمی خوای عدد وارد کنی؟
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
ehsan3554
اقا من نمیفهمم ینی چی از راست جدا کنه مگه نمی خوای عدد وارد کنی؟
خب چرا. ولی از سمت راست عدد سه تا سه تا جدا میکنن دیگه.
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
من خودم اومدم اینجوری مساله رو حل کردم:
این کد برای عدم ورود حرف :
privatevoid textBox7_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsLetter(e.KeyChar)) e.Handled = true;
}
این کد برای سه رقم سه رقم جدا کردن:
privatevoid textbox8_TextChanged(object sender, EventArgs e)
{
decimal Number;
if (decimal.TryParse(textbox8 .Text , out Number))
{
textbox8.Text = string.Format("{0:N0}", Number);
textbox8.SelectionStart = textbox8.Text.Length;
}
}
این کلاس هم برای جدا کردن کاما و تبدیل به عدد:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ramin
{
classTextToNumber
{
publicint tonumber(String str)
{
if (str == "")
return (0);
else
{
string temp = "";
for (int i = 0; i < str.Length; i++)
if (str[i] != ',')
temp += str[i];
return (int.Parse(temp));
}
}
}
}
میدونم خیلی کنترل های دیگه میشه انجام داد. اما فعلا برا من همینقدر کافیه
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
سلام اقا رامین ( درست گفتم :چشمک: )
کد قسمت اول با paste کردن می توان حروف رو واردش کرد
کد قسمت دوم بعد از وارد کردن 5 عدد شروع به جدا کردن می کند و اولین جدا کننده را 4 عدد در نظر می گیره
قسمت سوم رو نگاه نکردم :بامزه::لبخند:
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
S.Reza
سلام اقا رامین ( درست گفتم :چشمک: )
کد قسمت اول با paste کردن می توان حروف رو واردش کرد
کد قسمت دوم بعد از وارد کردن 5 عدد شروع به جدا کردن می کند و اولین جدا کننده را 4 عدد در نظر می گیره
قسمت سوم رو نگاه نکردم :بامزه::لبخند:
سمانه و رامین فرقی نمیکنه. دو تاشون یکی هستند:شیطان::قلب:! (الان تاپیک تغییر موضوع میده!:قهقهه:)
آره فرمایش شما در مورد قسمت اول کاملا درسته. ولی قسمت دوم نه ها. من دقیقا همین کد رو استفاده میکنم. سه رقم سه رقم در همون لحظه ی ورود به تکست باکس جدا میکنه
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
الان که نگاه می کنم می بینم خودم کد رو دستکاری کرده بودم ببخشید ;)
پ.ن: حالا بگو رامین رو از کجا اوردی :-o
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
دوست عزیز من هم همچین مشکلی داشتم و به جای استفاده از int در database از nvarchar استفاده کردم.:متفکر:
-
نقل قول: کنترل مقادیر ورودی به تکست باکس
نقل قول:
نوشته شده توسط
S.Reza
الان که نگاه می کنم می بینم خودم کد رو دستکاری کرده بودم ببخشید ;)
پ.ن: حالا بگو رامین رو از کجا اوردی :-o
یعنی چی رامین رو از کجا آوردم؟!!!!! رامین یه اسمه. سمانه هم یه اسمه!:بامزه::قهقهه:
نقل قول:
نوشته شده توسط
Nahid Borna
دوست عزیز من هم همچین مشکلی داشتم و به جای استفاده از int در database از nvarchar استفاده کردم.:متفکر:
خب درست. منتها مساله اونجاست که من دارم رو این فیلد محاسبات انجام میدم. حتی اگه و بانک هم nvarchar ذخیره کنم بالاخره باید دوباره تبدیل به int کنم. پس این عملیات بازم لازمه.