PDA

View Full Version : مطالب کمیاب در مورد کلاس در کلاس و فرم و ساخت کامپوننت به وسیله کلاس



davidrobert
پنج شنبه 28 شهریور 1392, 10:59 صبح
با سلام

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

لطفاً اگه کسی کلاس نویسی بلد هستش و می تواند تکس باکس سفارشی و همچنین دیتاگرید و غیره رو به صورت سفارشی بسازی و طوری که به ابزار ها اضافه بیشه بیگه تا این طوری همه گان کلاس نویسی رو یاد بگیرن که به جای اینکه کد مربوط به کارمن رو هی به دفعات بنویسم یک بار بسازم اون کد رو و به دفعات استفاده کنیم. که هم راحت پیش بره کارمن و هم زیاد بابت کد نویسی خودمان رو خسته نکنیم و کلی بنویسم ولی بیام ببینم که هنوز کد نوشته شده ایراد داری .

davidrobert
پنج شنبه 28 شهریور 1392, 11:22 صبح
ساخت تکس باکس سفارشی برای کد ملی که سیستم چک کنه کد ملی درست هستش و همچنین عدد دریافت کنه.

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

اول طریقه ساخت کلاس تکس باکس.




حال برای اینکه کلاس رو به کامپوننت تغییر دهیم برای ساخت تکس باکس در قسمت class ClsTextBoxCodeMaliCheck به این صورت نام تکس باکس تعریف میکنم برای ساخت تکس باکس public class ClsTextBoxCodeMaliCheck :TextBox

حال در این کد نویسی تکس باکس سفارشی خودم رو میسازم.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Net.Configuration;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using ECP.PersianMessageBox;

namespace AppSoftwareHesabDarePoshak
{
// برای اینکه بگیم این کامپوننت برای تکس باکس هست در جلو اسم کلاس 2 تا نخته و اسم تکس باکس رو مینویسم و تکس باکس رو فراخوانی میکنیم.
public class ClsTextBoxCodeMaliCheck :TextBox
{
private static bool ShowFrindMessage = true;

//کد چک کردن کد ملی
protected override void OnValidating(CancelEventArgs e)
{
base.OnValidating(e);
try
{
char[] chArray = this.Text.ToCharArray();
int [] numArray=new int[chArray.Length];
for (int i=0 ; i <chArray.Length;i++)
{
numArray[i] = (int) char.GetNumericValue(chArray[i]);
}
int num2 = numArray[9];
switch (this.Text)
{
case "0000000000":
case "1111111111":
case "22222222222":
case "33333333333":
case "4444444444":
case "5555555555":
case "6666666666":
case "7777777777":
case "8888888888":
case "9999999999":
PersianMessageBox.Show("کد ملی وارد شده صحیح نمی باشد");
break;
}
int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2);
int num4 = num3 - ((num3 / 11) * 11);
if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) ||
((num4 > 1) && (num2 == Math.Abs((int) (num4 - 11)))))
{

}
else
{
PersianMessageBox.Show("کد ملی نا معتبر است");
}
}
catch (Exception ex)
{
if (!ShowFrindMessage)
PersianMessageBox.Show(ex.Message);
else

PersianMessageBox.Show("لطفاً یک عدد 10 رقمی وارد کنید");

}
}


//کد عدد وارد کردن
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
if (e.KeyChar == 8)
{
return;
}
if (!System.Char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}

//کد عوض کردن رنگ تکس باکس به سفید در صورت داشتن اطلاعات
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);
if (this.Text != "")
this.BackColor = Color.White;

}



protected override void OnLeave(EventArgs e)
{
//این کد برای عوض کردن رنگ کادر متن در صورت نداشتن نوشته می باشد
base.OnLeave(e);
if (this.Text.Trim() == "")
this.BackColor = Color.Red;
else
this.BackColor = Color.White;
}
}
}


حالا که کامپوننت رو ساختید در قسمت Build روی گزینه Rebuild کلید کنید و بعد روی گزینه Build کلیک کنید وقتی این کارا رو انجام دادید مبینید که کامپوننت شما در قسمت toolbox در قسمت بالا اضافه شده است.
فقط بگم این تکس باکس برای کد ملی می باشد. اگه میخواهید عدد های دیگر هم بگیری یعنی فقط عدد بگیرید تک باکس کد مربوط به کد ملی رو پاک کنید. دیگر کد ایراد نمیگیرد برای صحت درستی کد ملی. و فقط عدد میگرد و رشته نمیگیرد.

fakhravari
پنج شنبه 28 شهریور 1392, 11:57 صبح
جالب بود:چشمک: