PDA

View Full Version : سوال: غیر فعال کردن کلیک راست موس روی عنوان datagridview



momimomi
جمعه 09 بهمن 1394, 16:42 عصر
دوستان من با استفاده از context menu strip برای ردیف های دیتاگرید کلیک راست ایجاد کردم اما نمیخوام روی سربرگ ( عناوین ستونها) کلیک راست فعال باشه، چیکار کنم؟

zidanerfan
جمعه 09 بهمن 1394, 17:56 عصر
private MouseButtons e_Button = new MouseButtons();
private void dgv1_MouseDown(object sender, MouseEventArgs e)
{
e_Button = e.Button;
}

private void cms1_Opening(object sender, CancelEventArgs e)
{
if (e_Button == System.Windows.Forms.MouseButtons.Right)
e.Cancel = true;
}

منبع (http://stackoverflow.com/questions/13415777/disable-right-click-for-contextmenustrip-in-datagridview)

momimomi
جمعه 09 بهمن 1394, 20:45 عصر
private MouseButtons e_Button = new MouseButtons();
private void dgv1_MouseDown(object sender, MouseEventArgs e)
{
e_Button = e.Button;
}

private void cms1_Opening(object sender, CancelEventArgs e)
{
if (e_Button == System.Windows.Forms.MouseButtons.Right)
e.Cancel = true;
}

منبع (http://stackoverflow.com/questions/13415777/disable-right-click-for-contextmenustrip-in-datagridview)

ممنون اما این کد کلا کلیک راست رو برای دیتا گرید غیرفعال می کنه اما من میخوام روی سلولها فعال باشه و روی عناوین ستونها غیر فعال

Mahmoud.Afrad
جمعه 09 بهمن 1394, 21:31 عصر
اگر فقط ردیفها باید منو داشته باشند پس نباید منو را به دیتاگرید نسبت بدید، بلکه بعد از اضافه کردن ردیف ها (به هر صورتی) ، به هر ردیف منو رو نسبت بدید و در رویداد RowContextMenuStripNeeded هم اندیس سطر راست کلیک شده رو میتونید بدست بیارید و در جایی که نیاز دارید از این اندیس استفاده کنید.
مثال:

private int _rowClickedIndex;
private void button1_Click(object sender, EventArgs e)
{
// Fill datagrid from database
Database1Entities db = new Database1Entities();
dataGridView1.DataSource = db.tbl.ToList();

// Set ContextMenuStrip for each row
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.ContextMenuStrip = contextMenuStrip1;
}
}

private void dataGridView1_RowContextMenuStripNeeded(object sender, DataGridViewRowContextMenuStripNeededEventArgs e)
{
_rowClickedIndex = e.RowIndex;
}