seven7777777
پنج شنبه 19 فروردین 1389, 22:31 عصر
دوستان عزیز سلام
حتما همه شما از رویداد KeyPress دیتاگرید استفاده کردید و حتما دیدید که بسیاری از موارد رو Handle نمی کنه یا با مشکل اینکارو می کنه .
مثلا اگه شما بخواید با کلید Enter فرمی برای نمایش اطلاعات ردیفی خاص باز بشه و یا به جای اینکه پایین بره به چپ یا راست حرکت کنه یعنی در ستون ها حرکت کنه ، زده شدن این کلید باعث میشه که یک ردیف به سمت پایین بره که هزار تا مشکل بعدش پیش میاد . یعنی حتی با کد نویسی تو اون رویداد هم نمیشه به نتیجه مطلوب رسید .
اما بالاخره راه حل این مشکلو پیدا کردم . تو برنامه خودم تست کردم جواب داد . کافیه کد زیر رو توی کدهای فرم مربوطه کپی کنید ، همین .
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg,
System.Windows.Forms.Keys keyData)
{
if(msg.WParam.ToInt32() == (int) Keys.Enter)
{
SendKeys.Send("{Tab}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData)
}
کافیه به جای SendKeys هر کاری که می خواین بکنین رو کدش رو بزارین . رویداد بالا الان به جای کلید Enter کلید Tab رو می فرسته و به همین خاطر به جای حرکت به سمت پایین در گرید در طول سلولها حرکت می کند .
فقط اساتید گرامی اگه این کد مشکلی داره یا موارد خاصی ممکنه برای برنامه پیش بیاره ، لطفا بگین تا همه استفاده کنن .
حتما همه شما از رویداد KeyPress دیتاگرید استفاده کردید و حتما دیدید که بسیاری از موارد رو Handle نمی کنه یا با مشکل اینکارو می کنه .
مثلا اگه شما بخواید با کلید Enter فرمی برای نمایش اطلاعات ردیفی خاص باز بشه و یا به جای اینکه پایین بره به چپ یا راست حرکت کنه یعنی در ستون ها حرکت کنه ، زده شدن این کلید باعث میشه که یک ردیف به سمت پایین بره که هزار تا مشکل بعدش پیش میاد . یعنی حتی با کد نویسی تو اون رویداد هم نمیشه به نتیجه مطلوب رسید .
اما بالاخره راه حل این مشکلو پیدا کردم . تو برنامه خودم تست کردم جواب داد . کافیه کد زیر رو توی کدهای فرم مربوطه کپی کنید ، همین .
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg,
System.Windows.Forms.Keys keyData)
{
if(msg.WParam.ToInt32() == (int) Keys.Enter)
{
SendKeys.Send("{Tab}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData)
}
کافیه به جای SendKeys هر کاری که می خواین بکنین رو کدش رو بزارین . رویداد بالا الان به جای کلید Enter کلید Tab رو می فرسته و به همین خاطر به جای حرکت به سمت پایین در گرید در طول سلولها حرکت می کند .
فقط اساتید گرامی اگه این کد مشکلی داره یا موارد خاصی ممکنه برای برنامه پیش بیاره ، لطفا بگین تا همه استفاده کنن .