View Full Version : مشکل با موقعیت contextMenuStrip
mohammad2407
شنبه 28 بهمن 1391, 23:46 عصر
سلام دوستان عزیز
من یک contextMenuStrip به فرمم اضافه کردم
و بعد رفتم در رویداد CellMouseClick ابزار dataGridView کد زیر نوشتم
if (e.Button == MouseButtons.Right)
{
contextMenuStrip1.Show();
}
الان که روی یک رکورد راست کلیک میکنم پنجره contextMenuStrip گوشه سمت چپ بالا یعنی کلا خارج از فرم و برنامه باز میشه :متعجب::متعجب::متعجب::متعجب:
اخه چرا ؟؟؟؟
من میخوام هر جا موس راست کلیک کرده باز بشه
Amir.pc_66
شنبه 28 بهمن 1391, 23:53 عصر
باید مختصات موس رو بهش بدی داداش
Point p = new Point();
p = MousePosition;
contextMenuStrip1.Location = p;
josh simpson
شنبه 28 بهمن 1391, 23:57 عصر
ابتدا خاصیت contextMenuStrip دیتاگریدویو رو برابر با contextMenuStrip1 قرار بده و بعد مختصات ماوس رو به contextMenuStrip1 بده مثل کد زیر:
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
dataGridView1.ContextMenuStrip = contextMenuStrip1;
contextMenuStrip1.Left = Cursor.Position.X;
contextMenuStrip1.Top = Cursor.Position.Y;
contextMenuStrip1.Show();
}
}
mohammad2407
یک شنبه 29 بهمن 1391, 00:01 صبح
داداش من از کجا باید مختصات موس بدونم ؟؟؟؟
احتمال داره موس سمت چپ کلیک بشه
Amir.pc_66
یک شنبه 29 بهمن 1391, 00:08 صبح
یااز MousePosition و یا از Cursor.Position.X و همچنین Y که Simpson عزیز زحمتش رو کشیدن
daneshjo90
یک شنبه 29 بهمن 1391, 00:11 صبح
با سلام
داداش کد زیر رو ببین اگه به دردت خورد یه تشکر بزن
contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
موفق باشی
josh simpson
یک شنبه 29 بهمن 1391, 00:20 صبح
داداش کد زیر رو ببین اگه به دردت خورد یه تشکر بزن
خوب این بنده خدا هم راست میگه دیگه، یک وقت زحمت نکشید و روی دکمه تشکر رو یک فشار بدید ها، ممکن بشکنه و به سایت ضرر جبران ناپذیری وارد بشه هاااا !!!! :لبخند:
daneshjo90
یک شنبه 29 بهمن 1391, 00:29 صبح
خوب این بنده خدا هم راست میگه دیگه، یک وقت زحمت نکشید و روی دکمه تشکر رو یک فشار بدید ها، ممکن بشکنه و به سایت ضرر جبران ناپذیری وارد بشه هاااا !!!! :لبخند:ممنون دوست عزیز ولی بنده قصدی نداشتم
میخوام بدونم پستی که میزنم به درد کسی میخوره یا نه فقط همین
موفق باشید
mohammad2407
یک شنبه 29 بهمن 1391, 00:39 صبح
الان یک مشکلی هست که نمیشه بهش گفت مشکل ولی خب
من میخوام وقتی contextMenuStrip باز بشه که دقیقا یک رکورد انتخاب شده باشه
الان هر جای dataGridView کلیک میکنم باز میشه
daneshjo90
یک شنبه 29 بهمن 1391, 01:08 صبح
خب ببین میشه یه شرط بزاری اگه سطری انتخاب نشده باشه منو باز نشه
امتحان کن ببین میشه ؟
این در حد یه ایده بود
موفق باشی
mohammad2407
یک شنبه 29 بهمن 1391, 02:54 صبح
من هرچی مینویسم خطا میده و کار نمیکنه
میشه شما یک کد پیشنهاد بدید
mohammad2407
یک شنبه 29 بهمن 1391, 03:19 صبح
الان یه کاری کردم درست شد ولی با چپ کلیک کار میکنه :لبخند: یه جور هایی جریان و کاربرد برعکس شد :لبخند:
آمدم در رویداد dataGridView1_SelectionChanged کد زیر نوشتم
contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
danialafshari
یک شنبه 29 بهمن 1391, 03:24 صبح
الان هر جای dataGridView کلیک میکنم باز میشه
private void dataGridView1_RowContextMenuStripNeeded(object sender, DataGridViewRowContextMenuStripNeededEventArgs e)
{
contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}
mohammad2407
یک شنبه 29 بهمن 1391, 03:31 صبح
ممنون
ولی من میخوام حتما رکورد سلکت شده باشه که contextMenuStrip بیاد چون contextMenuStrip فیلد هایی مثل ( ویرایش ، حذف ، ثبت و.. ) انجام میده میخوام فقط با سلکت بودن contextMenuStrip بیاد
اگر شما شرط سلکت بودن بدید مشکل حل میشه
Mahmoud.Afrad
یک شنبه 29 بهمن 1391, 03:51 صبح
قبل از نمایش منو ، CurrentCell را ست کنید:
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
dataGridView1.CurrentCell = dataGridView1[e.ColumnIndex, e.RowIndex];
contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.