PDA

View Full Version : انتخاب رکورد موجود در دیتاگریدویو با راست کلیک



mah.yar
پنج شنبه 19 بهمن 1385, 20:45 عصر
فرض کنید من برای دیتاگریدویو یه ContextMenu گذاشتم و توش منویی قرار دادم تا با انتخاب این زیرمنو(همون کانتکست منو) رکوردی که در دیتاگرید انتخاب شده بود(current row) حذف بشه.
همونطور که میدونید اگه در ویندوز روی آیکنی راست کلیک کنیم به طور اتوماتیک اون آیکن انتخاب میشه.
اما اگه بخوایم در دیتاگریدویو رکوردی رو حذف کنم حتما باید ابتدا رکورد مورد نظر جهت حذف با استفاده از چپ کلیک انتخاب بشه و بعد راست کلیک کنیم و زیر منوی مربوطه رو انتخاب کنیم...؟

چه طوری این امکان رو برای دیتاگریدویو فراهم کنیم تا اگه روی یه رکورد راست کلیک کردیم اون رکورد Select بشه و بقیه ماجرا...

programmermp
جمعه 20 بهمن 1385, 12:48 عصر
سلام

من فکر نکنم بشه

من تمام متدها زیر رو تست کردم جواب نداد

datagridviewcell
datagridviewcelleventarge
datagridevewmouseeventarge
و تمام متدهای مربوطه رو

چون تو حالت رایت کلیک ماوس عمل select انجام نمی شه فکر کنم تنها راهش این باشه

که کاربر با کلیک سمت چپ انتخاب کنه بعد رایت کلیک کنم

از کد زیر هم استفاده کردم جواب نمی ده نمی دونم چه مرضی داره



dim ce as datagridviewcell
dim value as boolean
value=ce.selected
ce.selected=value


پیغام می ده ce مقدار تهی بر می گردونه زمان اجرا نمی دونم چشه

توی رویداد cellclick یا همچین چیزی از دیتاگراید ویو نوشتمش

اگه دوستان کمک کنند ممنون می شم من هم همین مشکل رو دارم


با تشکر

sh
جمعه 20 بهمن 1385, 15:42 عصر
تو رویداد
CellMouseClick
بنویس :


If e.Button = Windows.Forms.MouseButtons.Right Then
DataGridView1.Rows(e.RowIndex).Selected = True
EndIf

sh
جمعه 20 بهمن 1385, 15:43 عصر
تازه از Hit هم میتونی استفاده کنی

sohrab o
جمعه 20 بهمن 1385, 15:49 عصر
این hit که گفتید چیه ؟ آخه من تازه دارم .net کار می کنم

mah.yar
شنبه 21 بهمن 1385, 13:18 عصر
تازه از Hit هم میتونی استفاده کنی

با تشکر فراوان از شما به خاطر جوابتون.

اگه میشه در مورد Hit‌ توضیح بدید؟

sh
شنبه 21 بهمن 1385, 16:14 عصر
متد Hittest متدی هست با کلیک بر روی دیتاگرید میشه مختصات محل کلیک که شامل ستون و ردیف هست رو بدست آورد و در نتیجه میشه اون رو به حالت انتخاب شده در آورد

یه مثال :

Private clickedCell As DataGridViewCell

Private Sub dataGridView1_MouseDown(ByVal sender As Object, _
ByVal e As MouseEventArgs) Handles dataGridView1.MouseDown

' If the user right-clicks a cell, store it for use by the
' shortcut menu.
If e.Button = MouseButtons.Right Then
Dim hit As DataGridView.HitTestInfo = _
dataGridView1.HitTest(e.X, e.Y)
If hit.Type = DataGridViewHitTestType.Cell Then
clickedCell = _
dataGridView1.Rows(hit.RowIndex).Cells(hit.ColumnI ndex)
End If
End If

End Sub

محسن بابائی
یک شنبه 22 بهمن 1385, 17:22 عصر
بازم که همینطوری بدون آگاهی جواب دادی !

تو رویداد
CellMouseClick
بنویس

If e.Button = Windows.Forms.MouseButtons.Right Then
DataGridView1.Rows(e.RowIndex).Selected = True
EndIf
:


این دستور یه کمی ایراد داره البته بیش از یه کمی . این دستور سطر جاری gridview را عوض نمی کنه فقط اونا انتخاب می کنه که اگر کمی دقت کنید می بینید که index آن تغییر نمی کند . و مثلا اگر دستور datagridview1.CurrentRow را اجرا کنیم فاجعه ای بزرگ رخ خواهد داد .

حالا اگر قبول دارین بگین تا راه حل بدم

sh
یک شنبه 22 بهمن 1385, 19:36 عصر
یه خط به کد اضافه کن



If e.Button = Windows.Forms.MouseButtons.Right Then
DataGridView1.Rows(e.RowIndex).Selected = True
DataGridView1.CurrentCell = DataGridView1(e.ColumnIndex, e.RowIndex)
End If

mah.yar
یک شنبه 22 بهمن 1385, 19:54 عصر
If e.Button = Windows.Forms.MouseButtons.Right Then
Dim hit As DataGridView.HitTestInfo = _
DataGridView1.HitTest(e.X, e.Y)
If hit.Type = DataGridViewHitTestType.Cell Then
DataGridView1.Rows(hit.RowIndex).Cells(hit.ColumnI ndex).Selected = True
End If
End If

این کد باید اضافه میشد(جایگزین).

محسن بابائی
دوشنبه 23 بهمن 1385, 07:02 صبح
یه خط به کد اضافه کن

قربون آدک چیز فهم .
ای کاش این سوال را هم جواب می دادی
http://barnamenevis.org/forum/showthread.php?t=61216

shervin110uk
جمعه 25 اسفند 1385, 22:28 عصر
این روشهای بالا هیچ کدوم کاربرد نداره! هیچ کدوم کار

shervin110uk
جمعه 25 اسفند 1385, 22:29 عصر
این روشهای بالا هیچ کدوم کاربرد نداره! هیچ کدوم کار نمیکنه