سلام به همه دوستان
من برای دیتاگریدم یه کانتکس منو گذاشتم. میخوام وقتی کاربر هرجای دیتا گرید راست کلیک کرد رکورد اون قسمت انتخاب بشه در واقع میخوام عمل چپ کلیک انجام بشه
سلام به همه دوستان
من برای دیتاگریدم یه کانتکس منو گذاشتم. میخوام وقتی کاربر هرجای دیتا گرید راست کلیک کرد رکورد اون قسمت انتخاب بشه در واقع میخوام عمل چپ کلیک انجام بشه
سلام
فکر کنم این به کارت بیاد
if(e.Button == MouseButtons.Right)
{
var hti = MyDataGridView.HitTest(e.X, e.Y); MyDataGridView.ClearSelection();
MyDataGridView.Rows[hti.RowIndex].Selected = true;
}
مرسی ولی به خط زیر گیر میده.
e.Button و x
بعد نمیدونم تو کدوم رویداد بزارم؟
توی رویداد cellMouseClick باید این کد رو بنویسی
این خطارو میده
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
روی cell کلیک کردی و این خطارو داد
بله........
دوستان دیگه ای نبودن جواب بدن؟
سلام
توی همون رویداد کدهای زیر رو بنویسید
if (e.RowIndex != -1 && e.Button == MouseButtons.Right)
{
dataGridView1.Rows[e.RowIndex].Selected = true;
}
ممنون دوست من. کدتون بدرستی کار میکرد ولی مشکل اینه که هردفه که کلیک میکنم رکورد قبلی که انتخاب شده بود هم دوباره انتخاب میشه
این کد رو توی خط سوم اضافه کنی درست میشه
dataGridView1.ClearSelection();
یعنی در کل اینجوری میشه:
if (e.RowIndex != -1 && e.Button == MouseButtons.Right)
{
dataGridView1.ClearSelection();
dataGridView1.Rows[e.RowIndex].Selected = true;
}
این هم فایده نداره چون سطر جاری(currentrow) و سلول جاری(currentcell) تغییر نخواهد کرد. بهتره همین مقادیر رو مستقیما مقداردهی کنید:
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
}