PDA

View Full Version : تشخیص عدد فشرده شده در cellbegin edit



sima1984
دوشنبه 09 شهریور 1388, 12:32 عصر
سلام
من دو تا سوال داشتم لطف میکنین جواب بدین:
1- چطوری می تونم کلید فشرده شده رو در cellbegin edit تشخیص بدم
من در کامپوننت گرید که دارم مینویسم یک سلول تاریخ دارم یعنی در cell begin edit این سلول یک فرم باز میشه که داخلش یک کامپوننت تاریخ حالا مشکل اینجاست که عدد اولی که کاربر تایپ می کنه فقط باعث میشه فرم تاریخ باز بشه و خود عدد داخل تاریخ تایپ نمیشه


string[] celldate = G_date.Split(sep);
string date = "00000000";
int index = base.CurrentCell.ColumnIndex;
foreach (string c in celldate)
{
if (base.CurrentCell.ColumnIndex == int.Parse(c))
{
if ((base.CurrentCell.Value != null) && (base.CurrentCell.Value.ToString() != ""))
{
date = base.CurrentCell.Value.ToString().Substring(0,4);
date += base.CurrentCell.Value.ToString().Substring(5, 2);
date += base.CurrentCell.Value.ToString().Substring(8, 2);
}
Formdate f = newFormdate();
base.Columns[int.Parse(c)].Width =f.Width;

DataGridViewCell cc = base.CurrentCell;

Point pt =
base.GetCellDisplayRectangle(cc.ColumnIndex, cc.RowIndex, false).Location;
pt = base.PointToScreen(pt);
f.Location = pt;

f.StartPosition = FormStartPosition.Manual;


f.date1.Datetext = date;


f.ShowDialog();





فرم تاریخ:


privatevoid Formdate_KeyDown(object sender, KeyEventArgs e)
{

if (e.KeyCode == Keys.Enter)
{
this.Close();
date = date1.Datetext2;



}




سوال دومم در مورد بررسی این سلول تاریخ یعنی میخوام اگه محتویاتش valid نباشه کاربر نتونه هیچ سلول دیگه ای رو با موس کلیلک کنه

ممنون

Mohsen229266
سه شنبه 10 شهریور 1388, 10:03 صبح
سلام دوست عزیز برای سوال اول شما میتونید یک رویداد برای تشخیص فشرده شدن عدد بنویسید این پست رو ببینید (http://barnamenevis.org/forum/showpost.php?p=779559&postcount=361) احتمالا مشکلتون حل میشه

برای سوال دوم هم میتونید از ایونت Validating استفاده کنید این برنامه رو ببینید (http://barnamenevis.org/forum/showpost.php?p=747803&postcount=9)

sima1984
سه شنبه 17 شهریور 1388, 11:07 صبح
سلام
ممنون از کمکتون
در مورد سوال اول (تشخیص فشرده شدن کلید میشه )بیشتر توضیح بدین

Mohsen229266
سه شنبه 17 شهریور 1388, 16:42 عصر
دوست عزیز اگر نتونستید استفاده کنید به این شکل عمل کنید
در رویداد EditingControlShowing دیتاگردیتون این خط کدو بنویسید

e.Control.KeyPress += DataGridKeyPress;
بعد خودتون باید رویداد مربوط به KeyPress رو براش بنویسید به این صورت

private void DataGridKeyPress(object sender, KeyPressEventArgs e)
{

}
اگه بازم مشکلی بود بگید