PDA

View Full Version : سلولهایی در دیتا گرید که فقط عدد بگیرند



sima1984
پنج شنبه 22 مرداد 1388, 10:53 صبح
با سلام
من دارم یک کامپوننت گرید مینویسم یکی از امکاناتی که باید داشته باشه به این صورته:
باید یک خصوصیت داشته باشه که شماره سلولهایی رو از گرید که فقط باید عدد بپذیرند رو بگیره
یعنی به بیان ساده تر ستونهایی که شمارشون در این خصوصیت اومده باید فقط عدد بپذیرند البته این رو هم بگم که می خوام اصلا چیز دیگه ای رو قبول نکنند نه اینکه مثلا کاربر بتونه رشته هم وارد کنه و بعد از خروج پاک بشه
چطور میتونم این کاررو انجام بدم
با تشکر

sara62
پنج شنبه 22 مرداد 1388, 12:18 عصر
سلام دوست عزیز
امیدوارم این کد به دردتون بخوره

bool d ;
private void Form1_KeyPress_1(object sender, KeyPressEventArgs e)
{
if (d == true)
if (!char.IsNumber(e.KeyChar) && !(e.KeyChar==(char)Keys.Back))

e.Handled = true;


}

private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if (dataGridView1.Columns[1].Index == e.ColumnIndex)
d = true;
else
d = false;
}موفق باشید

hozouri
پنج شنبه 22 مرداد 1388, 16:26 عصر
این کار خیلی راحته فقط توی رویداد EditingControlShowing کدی مشابه کد من وارد نمایید و یک متد هم به صورت زیر بنویسید :



private void Grid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
string ColumnName = this.Grid.Columns[this.Grid.CurrentCell.ColumnIndex].Name;
TextBox Text = e.Control as TextBox;
if (ColumnName == "Number")
{
if (Text != null) Text.KeyPress += new KeyPressEventHandler(this.TextBoxNumber);
}
}

private void TextBoxNumber(object sender,KeyPressEventArgs e)
{
string ColumnName = this.Grid.Columns[this.Grid.CurrentCell.ColumnIndex].Name;
if (ColumnName == "Number")
{
if (!char.IsNumber(e.KeyChar))
{
e.Handled = true;
}
}
}

Mohsen229266
پنج شنبه 22 مرداد 1388, 18:44 عصر
با سلام خدمت دوستان
البته کدهای دوستان درسته منم نخواستم جواب تکراری داده باشم پیشنهاد میکنم از این 2 تا کلاس (http://barnamenevis.org/forum/showpost.php?p=780344&postcount=331)در ساخت کامپوننتتون استفاده کنید که علاوه بر اینکه فقط عدد قبول میکنه میتونید تعداد کاراکتر هاشم مشخص کنید و مهمتر اینکه هنگام تایپ عدد هارو به صورت 3رقمی با کاما جدا میکنه

sima1984
یک شنبه 25 مرداد 1388, 12:39 عصر
آقای mohsen229266
با تشکر از کمکتون میشه در مورد کدتون یه کم توضیح بدین
من باید بتونم فقط برای سلولهای خاصی از گرید اعداد ورودی رو 3 رقم 3 رقم جدا کنم

Mohsen229266
یک شنبه 25 مرداد 1388, 12:56 عصر
دوست عزیز ابتدا توصیه میکنم یه پروزه Class Library باز کنید و نوع کامپوننتی که میخواید به ارث ببرید رو دیتاگرید تعریف کنید این 2کلاس رو به Class Library اضافه کنید تا از DLL دیتاگریدتون در هر برنامه خواستید استفاده کنید
قسمت ColumnType کلومنی که میخواهید فقط عدد وارد کنید را به TNumEditDataGridViewColumn تغییر دهید
موفق باشید