PDA

View Full Version : مشکل با موقعیت contextMenuStrip



mohammad2407
شنبه 28 بهمن 1391, 22:46 عصر
سلام دوستان عزیز

من یک contextMenuStrip به فرمم اضافه کردم

و بعد رفتم در رویداد CellMouseClick ابزار dataGridView کد زیر نوشتم
if (e.Button == MouseButtons.Right)
{
contextMenuStrip1.Show();
}

الان که روی یک رکورد راست کلیک میکنم پنجره contextMenuStrip گوشه سمت چپ بالا یعنی کلا خارج از فرم و برنامه باز میشه :متعجب::متعجب::متعجب::متعجب:

اخه چرا ؟؟؟؟

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

Amir.pc_66
شنبه 28 بهمن 1391, 22:53 عصر
باید مختصات موس رو بهش بدی داداش

Point p = new Point();
p = MousePosition;
contextMenuStrip1.Location = p;

josh simpson
شنبه 28 بهمن 1391, 22: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
شنبه 28 بهمن 1391, 23:01 عصر
داداش من از کجا باید مختصات موس بدونم ؟؟؟؟

احتمال داره موس سمت چپ کلیک بشه

Amir.pc_66
شنبه 28 بهمن 1391, 23:08 عصر
یااز MousePosition و یا از Cursor.Position.X و همچنین Y که Simpson عزیز زحمتش رو کشیدن

daneshjo90
شنبه 28 بهمن 1391, 23:11 عصر
با سلام
داداش کد زیر رو ببین اگه به دردت خورد یه تشکر بزن

contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);


موفق باشی

josh simpson
شنبه 28 بهمن 1391, 23:20 عصر
داداش کد زیر رو ببین اگه به دردت خورد یه تشکر بزن

خوب این بنده خدا هم راست میگه دیگه، یک وقت زحمت نکشید و روی دکمه تشکر رو یک فشار بدید ها، ممکن بشکنه و به سایت ضرر جبران ناپذیری وارد بشه هاااا !!!! :لبخند:

daneshjo90
شنبه 28 بهمن 1391, 23:29 عصر
خوب این بنده خدا هم راست میگه دیگه، یک وقت زحمت نکشید و روی دکمه تشکر رو یک فشار بدید ها، ممکن بشکنه و به سایت ضرر جبران ناپذیری وارد بشه هاااا !!!! :لبخند:ممنون دوست عزیز ولی بنده قصدی نداشتم

میخوام بدونم پستی که میزنم به درد کسی میخوره یا نه فقط همین

موفق باشید

mohammad2407
شنبه 28 بهمن 1391, 23:39 عصر
الان یک مشکلی هست که نمیشه بهش گفت مشکل ولی خب

من میخوام وقتی contextMenuStrip باز بشه که دقیقا یک رکورد انتخاب شده باشه

الان هر جای dataGridView کلیک میکنم باز میشه

daneshjo90
یک شنبه 29 بهمن 1391, 00:08 صبح
خب ببین میشه یه شرط بزاری اگه سطری انتخاب نشده باشه منو باز نشه


امتحان کن ببین میشه ؟

این در حد یه ایده بود

موفق باشی

mohammad2407
یک شنبه 29 بهمن 1391, 01:54 صبح
من هرچی مینویسم خطا میده و کار نمیکنه

میشه شما یک کد پیشنهاد بدید

mohammad2407
یک شنبه 29 بهمن 1391, 02:19 صبح
الان یه کاری کردم درست شد ولی با چپ کلیک کار میکنه :لبخند: یه جور هایی جریان و کاربرد برعکس شد :لبخند:

آمدم در رویداد dataGridView1_SelectionChanged کد زیر نوشتم

contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);

danialafshari
یک شنبه 29 بهمن 1391, 02:24 صبح
الان هر جای dataGridView کلیک میکنم باز میشه

private void dataGridView1_RowContextMenuStripNeeded(object sender, DataGridViewRowContextMenuStripNeededEventArgs e)
{
contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}

mohammad2407
یک شنبه 29 بهمن 1391, 02:31 صبح
ممنون

ولی من میخوام حتما رکورد سلکت شده باشه که contextMenuStrip بیاد چون contextMenuStrip فیلد هایی مثل ( ویرایش ، حذف ، ثبت و.. ) انجام میده میخوام فقط با سلکت بودن contextMenuStrip بیاد

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

Mahmoud.Afrad
یک شنبه 29 بهمن 1391, 02: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);
}
}