PDA

View Full Version : استفاده از صفحه ...



s_mostafa_h
یک شنبه 21 مرداد 1386, 19:13 عصر
با سلام
من برای اینکه کاربر در یک تکس باکس فقط عدد بغیر از BackSpace استفاده کند کد زیر را نوشتم .


if ((!(char.IsDigit(e.KeyChar)) && e.KeyChar != (char)Keys.Back ))
e.Handled = true;

حال می خواستم کاربر از نقطه بجای اعشار هم استفاده کند و همچنین بعلاوه و منها . ظاهرا این کد پیدا نمی شود . منظور قسمت keys می باشد .
ضمنا اگه بخواهیم کابر یک کرکتر دیگر مثلا حرف a را بزند من کد ذیل را نوشتم :


if ((!(char.IsDigit(e.KeyChar)) && e.KeyChar != (char)Keys.Back && e.KeyChar != (char)Keys.A))
e.Handled = true;

ولی حرف a تایپ نمی شود . از راهنمایی تان ممنون .

MH2538
یک شنبه 21 مرداد 1386, 20:12 عصر
سلام
خوب دوست عزیز بخش اول شرطت همون اول کار کل حروف الفبا رو بلوکه می کنه.

s_mostafa_h
یک شنبه 21 مرداد 1386, 20:30 عصر
متشکرم
خوب راه حلش چیه ؟ ضمنا بخش اول سئوال من در مورد نقطه یا point و بعلاوه یا + در صورت امکان .........

egoldashraf
یک شنبه 21 مرداد 1386, 22:11 عصر
اگه میخوای کاربر حروف رو وارد نکنه، بهتره از char.IsDigit و char.IsControl استفاده کنی .
برای وارد کردن یه کاراکتر بخصوص هم میتونی از دو تا if استفاده کنی

PC2st
یک شنبه 21 مرداد 1386, 23:15 عصر
یک روش اینه:



if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
e.Handled = true;
switch (e.KeyChar)
{
case 'a':
case 'A':
case '.':
case ',':
case '-':
case '+':
e.Handled = false;
break;
}

MH2538
دوشنبه 22 مرداد 1386, 06:24 صبح
سلام
کد برای حالت اولی که خواسته بودی


private void e1_KeyPress(object sender, KeyPressEventArgs e)
{
if (((int)e.KeyChar.ToString().ToUpper()[0] > 47 && (int)e.KeyChar.ToString().ToUpper()[0] < 58)
|| e.KeyChar == (char)Keys.Back || (int)e.KeyChar == 46
|| (int)e.KeyChar == 45 || (int)e.KeyChar == 43 )
e.Handled = false;
else
e.Handled = true;
}

__H2__
دوشنبه 22 مرداد 1386, 09:37 صبح
سلام
یک خط کد در رویداد مورد نظر کافیست!


e.Handled = Char.IsDigit(e.KeyChar) == false && Char.IsControl(e.KeyChar) == false;

همانطور که کاربر egoldashraf اشاره کردند!
اما یادتان نرود کنترل مخصوص NumbericUpDown را هم داریم.

s_mostafa_h
دوشنبه 22 مرداد 1386, 13:32 عصر
از همگی متشکرم !!!!!!
فقط یه سئوال البته ( دو سئوال ) :

1 - در e.KeyChar != (char)Keys.Back چرا کرکتر های + و نقطه را نمی توانیم ببینم . البته شاید هم باشد و لی من پیدایش نمی کنم .

2 - در برنامه کنسول برای اینکه کاربر فقط عدد تایپ بکنه ، چکار باید کرد .



string YourType = Console.ReadLine();
bool ch=Char.IsDigit(Convert.ToChar(YourType));
if (ch == true)
Console.WriteLine("ur type is a Digit ");
else
Console.WriteLine("ur type is not a Digit ");
البته این فقط یک کرکتر را جواب می دهد
با عرض :خجالت:

rasoul_ras
دوشنبه 22 مرداد 1386, 15:38 عصر
البته در حد یک نظر می تونم به شما بگم که می تونستید این کار رو با تعریف یک patern خوب در کلاس regex انجام بدید .
مرجع خوب برای مطالعه MSDN

s_mostafa_h
دوشنبه 22 مرداد 1386, 20:12 عصر
البته در حد یک نظر می تونم به شما بگم که می تونستید این کار رو با تعریف یک patern خوب در کلاس regex انجام بدید .
مرجع خوب برای مطالعه MSDN


what is REGEX??????
:لبخند::متفکر::متفکر::متفکر:
فعلا اگر این کار را در حد کنسول به ما بگویید هم در دینا و هم در آخرت دعایت می کنیم !

PC2st
دوشنبه 22 مرداد 1386, 21:42 عصر
به نمونه زیر دقت کنید، همان کاری رو انجام میده که خواسته بودید:


static void Main(string[] args)
{
string userInput;
Match match;
do
{
Console.Write("Please, Input your string here: ");
userInput = Console.ReadLine();
match = Regex.Match(userInput, @"^[\d|'.'|','|'a'|'A']+$");
} while (!match.Success);
Console.WriteLine("Your input string was: {0}", userInput);
Console.ReadLine();
}

البته میشه کاری کرد که حروف a یا A فقط اول باشه ولی فکر کنم که میخواستید در همه جا حروف a یا A رو بشه وارد کرد.

mehdi.mousavi
سه شنبه 23 مرداد 1386, 09:24 صبح
با سلام
من برای اینکه کاربر در یک تکس باکس فقط عدد بغیر از BackSpace استفاده کند کد زیر را نوشتم ولی حرف a تایپ نمی شود . از راهنمایی تان ممنون .

سلام.
میشه لطفا توضیح بدید عنوان این تاپیک رو چطور انتخاب کردید؟ معمولا عناوین باید به گونه ای انتخاب بشن که بخشی از محتوای سوال رو بیان کنن، ولی چیزی که شما نوشتید "استفاده از صفحه ..." از این قاعده تبعیت نمیکنه.

s_mostafa_h
سه شنبه 23 مرداد 1386, 10:26 صبح
دوست عزیز mehdi6755،
صرف نظر از اینکه عنوان تاپیک اشتباه است یا نه ، که فکر نمی کنم اشتباه باشه و شما به عنوان این تاپیک کلید کردید ، یک سئوال از شما داشتم و اینکه اگر کسی به شما جمله ای را بیان کرد ، آیا همیشه رویه تان اینه که اول جمله و آخر جمله را با هم ترکیب می کنید و می گویید شما این جمله را گفتید .!!!!!!!!!!!!!!!!!
این طور نقل و قول کردن حکایتی را برای من تداعی می کند ...... ولی بگذریم ..............

و اما دوست گرامی جناب آقای PC2st.ir از راهنمایی بسیار ممنونم . ولی مسئله ای که اینجاست اینه که کاربر می تواند کرکتری مثل g و R و ... را هم وارد کند و من می خوام به غیر از عدد و حرف A کرکتر دیگری را وارد نکند در صورتیکه ما در winApp با استفاده از isDigit می توانستیم به کاربر امکان تایپ تنها عدد و کرکتر دلخواه خود را به او بدهیم .
مجددا از راهنمایی تان ممنونم .

MH2538
سه شنبه 23 مرداد 1386, 10:44 صبح
سلام
دوستان عزیز بهتر نبود بجای این دوتا پست آخر ، تو همین فاروم برای همدیگه پیام خصوصی می فرستادید.(Private Message)
احتمالاً‌منظور ایشون هم از استفاده از صفحه ... ،‌استفاده از صفحه کلیذ بوده است.

PC2st
سه شنبه 23 مرداد 1386, 17:22 عصر
و اما دوست گرامی جناب آقای PC2st.ir از راهنمایی بسیار ممنونم . ولی مسئله ای که اینجاست اینه که کاربر می تواند کرکتری مثل g و R و ... را هم وارد کند
در حالت کنسول در دات نت، چیزی مثل رویداد KeyPress وجود ندارد، پس اگر بخواهیم که کاربر فقط بتواند عدد وارد کند، باید خودمون دست بکار بشیم و از روشهای زیر آبی (!) استفاده کنیم یا از طرق دیگه که من بلد نیستم!
کد زیر رو نوشتم که کاربر فقط میتواند عدد وارد کند، در صورت لزوم تغییرش بدید:



static void Main(string[] args)
{
bool isValid = false;
ConsoleKeyInfo userKey;
string userText = "";
int curLeft, curTop;
Console.Write("Enter a number: ");
do
{
do
{
curLeft = Console.CursorLeft;
curTop = Console.CursorTop;
userKey = Console.ReadKey();
if (!char.IsDigit(userKey.KeyChar))
{
Console.CursorLeft = curLeft;
Console.CursorTop = curTop;
Console.Write(' ');
Console.CursorLeft = curLeft;
Console.CursorTop = curTop;
}
else
userText += userKey.KeyChar.ToString();
} while (userKey.Key != ConsoleKey.Enter);
} while (isValid);
Console.WriteLine("\n\nYour number is: " + userText);
Console.Write("Press any key to exit program!");
Console.ReadLine();
}


... حالشو ببرید! :-) :لبخند: