PDA

View Full Version : کنترل مقادیر ورودی تاریخ در maskedtextbox



User-os
سه شنبه 31 اردیبهشت 1387, 19:28 عصر
سلام . من یه maskedtextbox گذاشتم برای گرفتن تاریخ چطور میشه به هر قسمت دسترسی داشت که مثلا عدد سال توی یه فاصله خاص وارد بشه و همین طور روز و ماه .

samanff2000
سه شنبه 31 اردیبهشت 1387, 23:48 عصر
سلام . داخل پروپرتی قسمت Mask را انتخاب کن و به هر شکلی میخواهی درش میاری به این صورت که به جای هر عدد یک # میگذاری مثلا : ##/##/#### موفق باشی

User-os
چهارشنبه 01 خرداد 1387, 07:16 صبح
ممنون از شما .اما من سوالم اینه که اگر بخوام مثلا دو عددی که برای ماه وارد میشه رو کنترل کنم که بین 0 و 12 باشه چی کار کنم!

ASKaffash
چهارشنبه 01 خرداد 1387, 08:28 صبح
با سلام
یک کلاس توابع کاربردی برایت قرارمیدهم از متد IsIranDate برای اعتبار سنجی استفاده نمائید :


classMethods
{
//-------------------------------------------------
///<summary>
/// ¢مییë êیëیêê یک ê¤êيمى م§§ی
///</summary>
///<param name="Number"></param>
///<returns></returns>
publicstaticdecimal MinNumbers(paramsobject[] Number)
{
decimal RtnValue = Convert.ToDecimal(Number[0]);
for (int i = 1; i < Number.Length; i++)
if (RtnValue > Convert.ToDecimal(Number[i])) RtnValue = Convert.ToDecimal(Number[i]);
return RtnValue;
}
//...........
///<summary>
/// ¢مییë êیëیêê یک ê¤êيمى ©¬¢ى ںی
///</summary>
///<param name="String"></param>
///<returns></returns>
publicstaticstring MinStrings(paramsstring[] String)
{
string RtnValue = String[0];
char[] Char1 = newchar[1], Char2 = newchar[1];
for (int i = 1; i < String.Length; i++)
{
for (int j = 0; j < Math.Min(RtnValue.Length, String[i].Length); j++)
{
Char1 = (RtnValue.Substring(j, 1)).ToCharArray();
Char2 = (String[i].Substring(j, 1)).ToCharArray();
if (Char2[0] < Char1[0])
{
RtnValue = String[i];
break;
}
}
}
return RtnValue;
}
//-------------------------------------------------
///<summary>
/// ¢مییë êںکھیêê یک ê¤êيمى م§§ی
///</summary>
///<param name="Number"></param>
///<returns></returns>
publicstaticdecimal MaxNumbers(paramsobject[] Number)
{
decimal RtnValue = Convert.ToDecimal(Number[0]);
for (int i = 1; i < Number.Length; i++)
if (RtnValue < Convert.ToDecimal(Number[i])) RtnValue = Convert.ToDecimal(Number[i]);
return RtnValue;
}
//...........
///<summary>
/// ¢مییë êںکھیêê یک ê¤êيمى ©¬¢ى ںی
///</summary>
///<param name="String"></param>
///<returns></returns>
publicstaticstring MaxStrings(paramsstring[] String)
{
string RtnValue = String[0];
char[] Char1 = newchar[1], Char2 = newchar[1];
for (int i = 1; i < String.Length; i++)
{
for (int j = 0; j < Math.Min(RtnValue.Length, String[i].Length); j++)
{
Char1 = (RtnValue.Substring(j, 1)).ToCharArray();
Char2 = (String[i].Substring(j, 1)).ToCharArray();
if (Char2[0] > Char1[0])
{
RtnValue = String[i];
break;
}
}
}
return RtnValue;
}
//-------------------------------------------------
///<summary>
/// ک뢩é ي¤ي§ یک م§§ §©یک ꥧي§ى م§§ی
///</summary>
///<param name="MainValue"></param>
///<param name="Value1"></param>
///<param name="Value2"></param>
///<returns></returns>
publicstaticbool BetWeen(object MainValue, object Value1, object Value2)
{
decimal TmpMainValue = Convert.ToDecimal(MainValue);
decimal TmpValue1 = Convert.ToDecimal(Value1);
decimal TmpValue2 = Convert.ToDecimal(Value2);
return (TmpValue1 <= TmpMainValue && TmpMainValue <= TmpValue2);
}
//...........
///<summary>
/// ک뢩é ي¤ي§ یک ©¬¢ى §©یک ꥧي§ى ©¬¢ى ںی
///</summary>
///<param name="MainValue"></param>
///<param name="Value1"></param>
///<param name="Value2"></param>
///<returns></returns>
publicstaticbool BetWeen(string MainValue, string Value1, string Value2)
{
return (MinStrings(Value1, MainValue) == Value1 && MaxStrings(Value2, MainValue) == Value2);
}
//-------------------------------------------------
///<summary>
/// ¢مییë ꦢ­ں¢ یک ھی©©¬¢ى §©یک ©¬¢ى ں­éی
///</summary>
///<param name="SubString"></param>
///<param name="MainString"></param>
///<returns></returns>
publicstaticint At(string SubString, string MainString)
{
return At(SubString, MainString, 1);
}
//...........
///<summary>
/// ¢مییë ꦢ­ں¢ یک ھی©©¬¢ى §©یک ©¬¢ى ں­éی
///</summary>
///<param name="SubString"></param>
///<param name="MainString"></param>
///<param name="Number"></param>
///<returns></returns>
publicstaticint At(string SubString, string MainString, object Number)
{
int RtnValue = -1;
int AtLenM = MainString.Length;
int AtLenS = SubString.Length;
int AtNoEvent = 0;
int TmpNoEvent = Convert.ToInt32(Number);
for (int i = 0; i < MainString.Length - AtLenS + 1; i++)
{
if (MainString.Substring(i, AtLenS) == SubString)
{
AtNoEvent++;
if (AtNoEvent == TmpNoEvent)
{
RtnValue = i;
break;
}
}
}
return RtnValue;
}
//-------------------------------------------------
///<summary>
/// ¢م§ں§ ں¬نںé یک ھی©©¬¢ى §© یک ©¬¢ى
///</summary>
///<param name="SubString"></param>
///<param name="MainString"></param>
///<returns></returns>
publicstaticint Occu(string SubString, string MainString)
{
int i = 0, RtnValue = 0;
while (SubString != "" && (i + SubString.Length - 1) < MainString.Length)
{
if (MainString.Substring(i, SubString.Length) == SubString)
{
RtnValue++;
i += SubString.Length;
}
else
i++;
}
return RtnValue;
} //-------------------------------------------------
///<summary>
/// ک뢩é êم¢ © ي§ë یک êç§ں©¢ں©ی¦ ¬ê«ی
///</summary>
///<param name="DateString"></param>
///<returns></returns>
publicstaticbool IsIranDate(string DateString)
{
bool RtnValue = false;
if (Occu("/", DateString) == 2)
{
int TmpAt1 = Methods.At("/", DateString);
int TmpAt2 = Methods.At("/", DateString, 2);
byte P_Moon = Convert.ToByte(Val(DateString.Substring(TmpAt1 + 1, TmpAt2 - TmpAt1 - 1)));
byte P_Day = Convert.ToByte(Val(DateString.Substring(TmpAt2 + 1)));
if (BetWeen(P_Moon, 1, 12))
if (BetWeen(P_Day, 1, (P_Moon < 7 ? 31 : 30)))
RtnValue = true;
}
return RtnValue;
}
//-------------------------------------------------
///<summary>
/// ک뢩é êم¢ © ي§ë یک êç§ں©«ںم¢
///</summary>
///<param name="TimeString"></param>
///<returns></returns>
publicstaticbool IsTime(string TimeString)
{
bool RtnValue = false;
if (Occu(":", TimeString) == 2)
{
int TmpAt1 = Methods.At(":", TimeString);
int TmpAt2 = Methods.At(":", TimeString, 2);
if (BetWeen(Val(TimeString.Substring(0, TmpAt1 - 1)), 0, 24))
if (BetWeen(Val(TimeString.Substring(TmpAt1 + 1, TmpAt2 - TmpAt1 - 1)), 0, 59))
if (BetWeen(Val(TimeString.Substring(TmpAt2 + 1)), 0, 59))
RtnValue = true;
}
return RtnValue;
}
//-------------------------------------------------
///<summary>
/// ¢ §یé یک م ں©¢ ى یک م§§
///</summary>
///<param name="Number"></param>
///<returns></returns>
publicstaticdecimal Val(object Number)
{
if (Number == null) return 0m;
string TmpStr = Number.ToString().Trim(), TmpChar;
string RtnValue = "";
bool Signal = false;
for (int i = 0; i < TmpStr.Length; i++)
{
TmpChar = TmpStr.Substring(i, 1);
if (TmpChar == ".")
{ if (Signal) break; else Signal = true; }
else
if (TmpChar == "-")
{ if (i != 0) break; }
else
{ if (!BetWeen(TmpChar, "0", "9")) break; }
RtnValue += TmpChar;
}
RtnValue = (RtnValue == "" ? "0" : RtnValue);
returnConvert.ToDecimal(RtnValue);
}
}

Sajjad.Aghapour
چهارشنبه 01 خرداد 1387, 10:55 صبح
دوست عزیز خیلی ممنون.....
ولی بهتر نیست برای خوانایی پستهاتون کدهاتون رو داخل بلاک CODE قرار دهید؟.....
موفق باشید...

ASKaffash
چهارشنبه 01 خرداد 1387, 11:00 صبح
با سلام
بلد نیستم اگر یادم بدهید حتما دفعه بعد اینکار را خواهم کرد . متشکرم

ASKaffash
چهارشنبه 01 خرداد 1387, 11:09 صبح
سلام خودم یادگرفتم
بنابراین :


class Methods
{
//-------------------------------------------------
/// <summary>
/// ¢مییë êیëیêê یک ê¤êيمى م§§ی
/// </summary>
/// <param name="Number"></param>
/// <returns></returns>
public static decimal MinNumbers(params object[] Number)
{
decimal RtnValue = Convert.ToDecimal(Number[0]);
for (int i = 1; i < Number.Length; i++)
if (RtnValue > Convert.ToDecimal(Number[i])) RtnValue = Convert.ToDecimal(Number[i]);
return RtnValue;
}
//...........
/// <summary>
/// ¢مییë êیëیêê یک ê¤êيمى ©¬¢ى ںی
/// </summary>
/// <param name="String"></param>
/// <returns></returns>
public static string MinStrings(params string[] String)
{
string RtnValue = String[0];
char[] Char1 = new char[1], Char2 = new char[1];
for (int i = 1; i < String.Length; i++)
{
for (int j = 0; j < Math.Min(RtnValue.Length, String[i].Length); j++)
{
Char1 = (RtnValue.Substring(j, 1)).ToCharArray();
Char2 = (String[i].Substring(j, 1)).ToCharArray();
if (Char2[0] < Char1[0])
{
RtnValue = String[i];
break;
}
}
}
return RtnValue;
}
//-------------------------------------------------
/// <summary>
/// ¢مییë êںکھیêê یک ê¤êيمى م§§ی
/// </summary>
/// <param name="Number"></param>
/// <returns></returns>
public static decimal MaxNumbers(params object[] Number)
{
decimal RtnValue = Convert.ToDecimal(Number[0]);
for (int i = 1; i < Number.Length; i++)
if (RtnValue < Convert.ToDecimal(Number[i])) RtnValue = Convert.ToDecimal(Number[i]);
return RtnValue;
}
//...........
/// <summary>
/// ¢مییë êںکھیêê یک ê¤êيمى ©¬¢ى ںی
/// </summary>
/// <param name="String"></param>
/// <returns></returns>
public static string MaxStrings(params string[] String)
{
string RtnValue = String[0];
char[] Char1 = new char[1], Char2 = new char[1];
for (int i = 1; i < String.Length; i++)
{
for (int j = 0; j < Math.Min(RtnValue.Length, String[i].Length); j++)
{
Char1 = (RtnValue.Substring(j, 1)).ToCharArray();
Char2 = (String[i].Substring(j, 1)).ToCharArray();
if (Char2[0] > Char1[0])
{
RtnValue = String[i];
break;
}
}
}
return RtnValue;
}
//-------------------------------------------------
/// <summary>
/// ک뢩é ي¤ي§ یک م§§ §©یک ꥧي§ى م§§ی
/// </summary>
/// <param name="MainValue"></param>
/// <param name="Value1"></param>
/// <param name="Value2"></param>
/// <returns></returns>
public static bool BetWeen(object MainValue, object Value1, object Value2)
{
decimal TmpMainValue = Convert.ToDecimal(MainValue);
decimal TmpValue1 = Convert.ToDecimal(Value1);
decimal TmpValue2 = Convert.ToDecimal(Value2);
return (TmpValue1 <= TmpMainValue && TmpMainValue <= TmpValue2);
}
//...........
/// <summary>
/// ک뢩é ي¤ي§ یک ©¬¢ى §©یک ꥧي§ى ©¬¢ى ںی
/// </summary>
/// <param name="MainValue"></param>
/// <param name="Value1"></param>
/// <param name="Value2"></param>
/// <returns></returns>
public static bool BetWeen(string MainValue, string Value1, string Value2)
{
return (MinStrings(Value1, MainValue) == Value1 && MaxStrings(Value2, MainValue) == Value2);
}
//-------------------------------------------------
/// <summary>
/// ¢مییë ꦢ­ں¢ یک ھی©©¬¢ى §©یک ©¬¢ى ں­éی
/// </summary>
/// <param name="SubString"></param>
/// <param name="MainString"></param>
/// <returns></returns>
public static int At(string SubString, string MainString)
{
return At(SubString, MainString, 1);
}
//...........
/// <summary>
/// ¢مییë ꦢ­ں¢ یک ھی©©¬¢ى §©یک ©¬¢ى ں­éی
/// </summary>
/// <param name="SubString"></param>
/// <param name="MainString"></param>
/// <param name="Number"></param>
/// <returns></returns>
public static int At(string SubString, string MainString, object Number)
{
int RtnValue = -1;
int AtLenM = MainString.Length;
int AtLenS = SubString.Length;
int AtNoEvent = 0;
int TmpNoEvent = Convert.ToInt32(Number);
for (int i = 0; i < MainString.Length - AtLenS + 1; i++)
{
if (MainString.Substring(i, AtLenS) == SubString)
{
AtNoEvent++;
if (AtNoEvent == TmpNoEvent)
{
RtnValue = i;
break;
}
}
}
return RtnValue;
}
//-------------------------------------------------
/// <summary>
/// ¢م§ں§ ں¬نںé یک ھی©©¬¢ى §© یک ©¬¢ى
/// </summary>
/// <param name="SubString"></param>
/// <param name="MainString"></param>
/// <returns></returns>
public static int Occu(string SubString, string MainString)
{
int i = 0, RtnValue = 0;
while (SubString != "" && (i + SubString.Length - 1) < MainString.Length)
{
if (MainString.Substring(i, SubString.Length) == SubString)
{
RtnValue++;
i += SubString.Length;
}
else
i++;
}
return RtnValue;
} //-------------------------------------------------
/// <summary>
/// ک뢩é êم¢ © ي§ë یک êç§ں©¢ں©ی¦ ¬ê«ی
/// </summary>
/// <param name="DateString"></param>
/// <returns></returns>
public static bool IsIranDate(string DateString)
{
bool RtnValue = false;
if (Occu("/", DateString) == 2)
{
int TmpAt1 = Methods.At("/", DateString);
int TmpAt2 = Methods.At("/", DateString, 2);
byte P_Moon = Convert.ToByte(Val(DateString.Substring(TmpAt1 + 1, TmpAt2 - TmpAt1 - 1)));
byte P_Day = Convert.ToByte(Val(DateString.Substring(TmpAt2 + 1)));
if (BetWeen(P_Moon, 1, 12))
if (BetWeen(P_Day, 1, (P_Moon < 7 ? 31 : 30)))
RtnValue = true;
}
return RtnValue;
}
//-------------------------------------------------
/// <summary>
/// ک뢩é êم¢ © ي§ë یک êç§ں©«ںم¢
/// </summary>
/// <param name="TimeString"></param>
/// <returns></returns>
public static bool IsTime(string TimeString)
{
bool RtnValue = false;
if (Occu(":", TimeString) == 2)
{
int TmpAt1 = Methods.At(":", TimeString);
int TmpAt2 = Methods.At(":", TimeString, 2);
if (BetWeen(Val(TimeString.Substring(0, TmpAt1 - 1)), 0, 24))
if (BetWeen(Val(TimeString.Substring(TmpAt1 + 1, TmpAt2 - TmpAt1 - 1)), 0, 59))
if (BetWeen(Val(TimeString.Substring(TmpAt2 + 1)), 0, 59))
RtnValue = true;
}
return RtnValue;
}
//-------------------------------------------------
/// <summary>
/// ¢ §یé یک م ں©¢ ى یک م§§
/// </summary>
/// <param name="Number"></param>
/// <returns></returns>
public static decimal Val(object Number)
{
if (Number == null) return 0m;
string TmpStr = Number.ToString().Trim(), TmpChar;
string RtnValue = "";
bool Signal = false;
for (int i = 0; i < TmpStr.Length; i++)
{
TmpChar = TmpStr.Substring(i, 1);
if (TmpChar == ".")
{ if (Signal) break; else Signal = true; }
else
if (TmpChar == "-")
{ if (i != 0) break; }
else
{ if (!BetWeen(TmpChar, "0", "9")) break; }
RtnValue += TmpChar;
}
RtnValue = (RtnValue == "" ? "0" : RtnValue);
return Convert.ToDecimal(RtnValue);
}
}

User-os
چهارشنبه 01 خرداد 1387, 18:29 عصر
سلام . مجدد .مرسی جناب
کدتون رو خوندم . اما خدایی خیلی طولانی بود!
اینم جزء الطاف و مزایای فارسی بودنمونه.
یه مثال میشه بزنی که از متدهای همین کلاس برای maskedtextbox استفاده کرده باشی
مرسی بازم

razavi_university
پنج شنبه 02 خرداد 1387, 02:06 صبح
من پيشنهاد مي كنم براي گرفتن تاريخ فارسي خودتون يك كنترل سفارشي براي ايتكار بنويسيد و يا از FarsiLibrary جناب اسكندري (http://www.codeproject.com/KB/selection/FarsiLibrary.aspx) استفاده كنين

http://www.codeproject.com/KB/selection/FarsiLibrary/FarsiLibrary.gif
موفق باشيد

User-os
پنج شنبه 02 خرداد 1387, 07:05 صبح
اینم پیشنهاد فوق العاده ای بود ممنونم .
از اون جا که من به ظاهر کار خیلی توجه میکنم این نمونه خیلی خوبی بود.

ezamnejad
پنج شنبه 02 خرداد 1387, 07:56 صبح
با تشكر از آقاي اسكندري
نسخه 2 كنترل FarsiLibrary را هم ميتونيد از سايت زير دريافت كنيد .
http://blog.hightech.ir/