PDA

View Full Version : انتخاب سطر زیر ماوس در datagridview با کلیک راست ماوس



hojjatshariffam
چهارشنبه 26 تیر 1392, 05:06 صبح
سلام به دوستای گلم
من یه دیتا گرید ویو دارم که برایش یه Context Menu درست کردم و یه سری عملیات تو منو براش نوشتم
منتها مشکل اینجاست که من این عملیات رو برای سطر انتخاب شده لازم دارم ولی وقتی که Right Click می کنم منو باز میشه ملی سطر انتخاب شده سطر زیر نشانگر ماوس نیست و سطر قبلیه
یعنی مثلا اگه الان سطر سوم انتخاب شده باشه و من با ماوس برم روی سطر دهم و راست کلیک کنم ، عملیات رو برای سطر سوم اعمال می کنه
برای اینکه کاربر سر در گم نشه توی آیتم های منو قبل از باز شدن منو مشخصات سطر انتهاب شده رو نشون میدم

; }private void PersonContextMenu_Opening(object sender, CancelEventArgs e)
{
if (PersonDataGridView.RowCount > 0 && PersonDataGridView.SelectedRows.Count > 0)
{
ShowMenuItem.Text = "نمایش اطلاعات " + PersonDataGridView.SelectedRows[0].Cells[2].Value.ToString();
EditMenuItem.Text = "ویرایش اطلاعات " + PersonDataGridView.SelectedRows[0].Cells[2].Value.ToString();
PrintMenuItem.Text = "چاپ اطلاعات " + PersonDataGridView.SelectedRows[0].Cells[2].Value.ToString();
DeleteMenuItem.Text = "حذف " + PersonDataGridView.SelectedRows[0].Cells[1].Value.ToString() + " " + PersonDataGridView.SelectedRows[0].Cells[2].Value.ToString();
}



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

hojjatshariffam
چهارشنبه 26 تیر 1392, 05:22 صبح
اینم یه تصویر از حالت انتخاب
107371
همانطور که در تصویر مشخصه سطر شماره پنج قبلا انتخاب شده است و در حالت انتخاب قرار دارد بعدا که روی سطر نهم راست کلیک می کنیم مشخصات سطر پنجم نمایش داده میشه در حالی که باید قبل از باز شدن منو سطر نهم انتخاب شود بعد منو باز شود.چون زاست کلیک هم یه نوع کلیک هستش

danialafshari
چهارشنبه 26 تیر 1392, 07:01 صبح
سلام
آیا در خصوصیت ContexMenus خود Datagridview این کارو کردید؟

Mahmoud.Afrad
چهارشنبه 26 تیر 1392, 08:12 صبح
CurrentCell را ست کنید.
مشخصه ContextMenuStrip دیتاگرید و ستون هاش رو بزارید روی none و بعد:

private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
contextMenuStrip1.Show(MousePosition);
}
}

hojjatshariffam
چهارشنبه 26 تیر 1392, 13:55 عصر
ممنون
بله درسته حل شد
حالا یه مشکل دیگه دارم
همونطور که در شکل هم معلومه نرم افزار مربوطه به یک دفترجه مشخصات یا همون دفترچه تلفن پیشرفته با کلی امکانات
تو شکل هم معلومه که من یه جدول برای مشخصات کلی و شناسنامه ای مخاطبان دارم و یه جدول برای مشخصاتی مانند تلفن و ایمیل و کلی مشخصات دیگه البته بصورت نا محدود برای هر مخاطب
پس هر بار که روی یک مخاطب کلیک میشه از دیتا بیس مشخصات اون مخاطب رو از جدول مشخصات بارگزاری و در دیتا گرید ویوی روبروش میریزه
حالا می خوام تو یه فرم دیگه هر دوی این دو جدول رو تو یه دیتا گرید ویو نشون بدم حداقل مثلا فقط تلفن هاشو و یا ایمیل هاشو
ولی ممکنه برای هر مخاطب بیش از یک مشخصات ثبت شده باشه (منطقا بی نهایت مشخصات)
حالاپیشنهاد شما برای این ساختار چیه؟
آیا باید از کامپوننتی همچون DevExpress استفاده کنم یا با دیتا گرید ویوی خود دات نت میشه یه جورایی دست کاریش کرد؟
http://barnamenevis.org/attachment.php?attachmentid=107406

hojjatshariffam
پنج شنبه 27 تیر 1392, 15:40 عصر
آیا میشه سطر های گرید ویو رو گروه بندی کرد طوری که مثلا چنتا چنتا به هم بچسبند و همیشه بصورت گروهی کنار هم باشند؟
یعنی چنتا ردیف در خصوصیتی (ستونی) با هم مشترک باشند و در هر شرایطی (مانند سورت) کنار هم باشند؟