نمایش نتایج 1 تا 8 از 8

نام تاپیک: ایجاد منوی راست کلیک برای datagridview

  1. #1

    Question ایجاد منوی راست کلیک برای datagridview

    با سلام خدمت اساتید محترم
    من میخوام از یک db یک سری اطلاعات بگیرم تویه dgv نشون بدم و با امکان منوی راست کلیک روش تغیرات ایجاد کنم کلی اموزش توی اینترنت بود ولی همشون یک مشکل داشتن اونم این بود که
    باید توی رویداد (CellMouseUp)قرار داده میشدند و نمیگفتن چطوری این رویداد رو ایجاد کنم ممنون میشم اگه کمکم کنید

  2. #2

    نقل قول: ایجاد منوی راست کلیک برای data grid view

    شما باید دیتا گرید ویو را به حالت انتخاب در بیارید و در قسمت Properites 'گزینه Event انتخاب کنید.
    اونجا می تونید با کلیک روی رویدادی که می خواهید اون رو ایجاد کنید.

  3. #3
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: ایجاد منوی راست کلیک برای data grid view

    سلام
    یه contextMenuStrip1 به فرم تون اضافه کنید ... بعد همونطور که دوست مون گفتن ، دیتاگریدویو رو انتخاب کنید و از قسمت properties گزینه
    CellMouseUp رو دابل کلید تا وارد محیط کد نویسی بشین !
    یه رویداد مثل باتون کلیک میشه ، و این کد رو اضافه کنید :


    private int rowIndex = 0;
    private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
    {
    if (e.Button == MouseButtons.Right)
    {
    this.dataGridView1.Rows[e.RowIndex].Selected = true;
    this.rowIndex = e.RowIndex;
    this.dataGridView1.CurrentCell = this.dataGridView1.Rows[e.RowIndex].Cells[1];
    this.contextMenuStrip1.Show(this.dataGridView1, e.Location);
    contextMenuStrip1.Show(Cursor.Position);
    }
    }


    خط اول یه متغیر هستش که ایندکس سطری از گریدویو که روش کلیک شده رو توی خودش ذخیره میکنه !
    خط دوم دوم که همون رویداد
    CellMouseUp هستش
    خط سوم کاملا مشخص دیگه ... میگه اگر کلید سمت راست موس فشرده شد دستورات زیر اجرا بشه
    شماره سطری که روش کلیک راست شده گرفته و در متغیر بالا ریخته میشه
    و در ادامه میگه حالا منوی کلیک راست رو همین موقعیت (همون جایی که موس کلیک راست شده) به نمایش دربیاد

    و حالا باید کار هایی که لازم دارین توی گزینه مورد نظرتون از منوی کلیک راست انجام بدین مثلا حذف سطر از بانک !
    وقتی روی گزینه مورد نظر از منو کلیک کنید وارد همچین رویدادی میشین :


    private void حذفسطرToolStripMenuItem_Click(object sender, EventArgs e)



    و دستورات رو توی این رویداد مینویسید :


    int row1 = Convert.ToInt32(dataGridView1.CurrentRow.Cells["Id"].Value);
    SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=AnbarDB;Integrated Security=True");
    SqlCommand com = new SqlCommand();
    com.Connection = con;
    com.CommandText = "Delete From TAmval WHERE Id=@i";
    com.Parameters.AddWithValue("@i", row1);
    con.Open();
    com.ExecuteNonQuery();
    if (!this.dataGridView1.Rows[this.rowIndex].IsNewRow)
    {
    this.dataGridView1.Rows.RemoveAt(this.rowIndex);
    }


    خط اول یه متغیر حاوی مقدار ستون Id از سطری که انتخاب شده رو توی خودش ذخیره میکنه !
    و دستورات حذف با ado
    و اون شرط آخر که میگه همون سطری که روش کلیک شده (که شمارش توی متغیر
    rowIndex وجود داره
    ) از سطر های دیتاگریدویو هم حذف بشه (که این فقط بدرد حذف میخوره)

    یا علی !

  4. #4

    نقل قول: ایجاد منوی راست کلیک برای datagridview

    خیلی ممنون از راه نمایی تون

  5. #5
    کاربر جدید آواتار nem3sis
    تاریخ عضویت
    آذر 1398
    محل زندگی
    North
    پست
    4

    نقل قول: ایجاد منوی راست کلیک برای data grid view

    ببخشید تو کامپوننت تلریک رویداد
    CellMouseUp وجود نداره میشه بگید رویداد مشابهش کدومه ؟

  6. #6
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: ایجاد منوی راست کلیک برای data grid view

    نقل قول نوشته شده توسط nem3sis مشاهده تاپیک
    ببخشید تو کامپوننت تلریک رویداد
    CellMouseUp وجود نداره میشه بگید رویداد مشابهش کدومه ؟
    برای تلریک باید از خود radContextMenu استفاده کنید .
    برای بدست آوردن مقدار سطر هم از کد زیر میتونید استفاده کنید



    private void dgv1_ContextMenuOpening(object sender, ContextMenuOpeningEventArgs e)
    {
    GridDataCellElement dataCellElement = e.ContextMenuProvider as GridDataCellElement;
    if (dataCellElement != null)
    {
    GridViewRowInfo clickedRow = dataCellElement.RowInfo;
    RowIndex= clickedRow.Index;
    if (RowIndex >= 0)
    {
    e.ContextMenu = radContextMenu1.DropDown;

    Id = int.Parse(dgv1.Rows[RowIndex].Cells["Id"].Value.ToString());
    }
    }
    else
    {
    e.Cancel = true;
    }
    }




  7. #7
    کاربر جدید آواتار nem3sis
    تاریخ عضویت
    آذر 1398
    محل زندگی
    North
    پست
    4

    Thumbs up نقل قول: ایجاد منوی راست کلیک برای data grid view

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    برای تلریک باید از خود radContextMenu استفاده کنید .
    برای بدست آوردن مقدار سطر هم از کد زیر میتونید استفاده کنید



    private void dgv1_ContextMenuOpening(object sender, ContextMenuOpeningEventArgs e)
    {
    GridDataCellElement dataCellElement = e.ContextMenuProvider as GridDataCellElement;
    if (dataCellElement != null)
    {
    GridViewRowInfo clickedRow = dataCellElement.RowInfo;
    RowIndex= clickedRow.Index;
    if (RowIndex >= 0)
    {
    e.ContextMenu = radContextMenu1.DropDown;

    Id = int.Parse(dgv1.Rows[RowIndex].Cells["Id"].Value.ToString());
    }
    }
    else
    {
    e.Cancel = true;
    }
    }





    دمت گرم کیشی مشکلم حل شد 🖤

  8. #8
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: ایجاد منوی راست کلیک برای datagridview

    اینم برای اینکه منوهاتو تعریف کنی و بتونی رو سطرها عملیات انجام بدی




    public Form1()
    {
    //برای هر منوی تعریف شده رویداد کلیک اضافه میکنیم
    radContextMenu1.Items["mnuEdit"].Click += new EventHandler(mnuEdit_Click);
    radContextMenu1.Items["mnuDelete"].Click += new EventHandler(mnuDelete_Click);

    }
    // متغییری برای نگه داری سطر کلیک شده
    int RowIndex=-1;



    //رویداد کلیک برای ویرایش
    private void mnuEdit_Click(object sender, EventArgs e)
    {
    //برای این >=0 میزاریم چون وقتی کاربر رو عنوان کلیک میکنه مقدار -1 ارسال میشه و برنامه با خطا مواجه میشه
    if (RowIndex >= 0)
    {
    //دستورات
    // هم شماره سطر کلیک شده هستRowIndex
    // برا گرفتن مقدار سطر میتونید به شکل زیر عمل کنید
    //messagebox.Show(dgv1.Rows[RowIndex].Cells["Name"].Value.ToString());
    }
    }
    //رویداد کلیک برای حذف
    private void mnuDelete_Click(object sender, EventArgs e)
    {

    if (RowIndex >= 0)
    {
    //دستورات
    // هم شماره سطر کلیک شده هستRowIndex
    // برا گرفتن مقدار سطر میتونید به شکل زیر عمل کنید
    //messagebox.Show(dgv1.Rows[RowIndex].Cells["Name"].Value.ToString());

    }
    }

    // از رویدکد های گریدتون این رویداد رو دابل کلیک کنید اضافه میشه به کدهاتون و کدهای داخلیش رو کپی کنید
    private void dgv1_ContextMenuOpening(object sender, ContextMenuOpeningEventArgs e)
    {

    GridDataCellElement dataCellElement = e.ContextMenuProvider as GridDataCellElement;
    if (dataCellElement != null)
    {
    GridViewRowInfo clickedRow = dataCellElement.RowInfo;
    //گرفتن شماره سطر انتخاب شده
    RowIndex= clickedRow.Index;
    //برای این >=0 میزاریم چون وقتی کاربر رو عنوان کلیک میکنه مقدار -1 ارسال میشه و برنامه با خطا مواجه میشه
    if (RowIndex >= 0)
    {
    e.ContextMenu = radContextMenu1.DropDown;
    }
    }
    else
    {
    e.Cancel = true;
    }
    }



تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: پنج شنبه 29 آبان 1393, 14:48 عصر
  2. پاسخ: 1
    آخرین پست: یک شنبه 24 شهریور 1392, 11:12 صبح
  3. آموزش: ایجاد منوی راست کلیک دلخواه
    نوشته شده توسط erfan_urchin در بخش C#‎‎
    پاسخ: 15
    آخرین پست: چهارشنبه 30 مرداد 1392, 09:46 صبح
  4. سوال: ساخت منوی راست کلیک برای مرورگر ها
    نوشته شده توسط Hamishebahar در بخش C#‎‎
    پاسخ: 0
    آخرین پست: جمعه 29 اردیبهشت 1391, 19:26 عصر
  5. ایجاد منوی راست کلیک در List Box
    نوشته شده توسط saeedvir در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: جمعه 10 مهر 1388, 16:57 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

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