Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: ContextMenuStrip không hiện đúng vị trí mong muốn trên Datagridview

  1. #1
    Ngày gia nhập
    08 2010
    Bài viết
    7

    Mặc định ContextMenuStrip không hiện đúng vị trí mong muốn trên Datagridview

    Em có 1 cái form, trên form có 1 datagridview và 1 contextMenuStrip
    1. Em muốn khi click phải vào 1 ô thì menustrip sẽ hiện ra ngay vị trí của ô được click
    2. Em muốn khi click phải vào ô nào thì chọn ngay ô đó luôn
    Visual C# Code:
    1.     public partial class Form1 : Form
    2.     {
    3.         public Form1()
    4.         {
    5.             InitializeComponent();
    6.         }
    7.  
    8.         private void Form1_Load(object sender, EventArgs e)
    9.         {
    10.             // TODO: This line of code loads data into the 'vlxdDataSet.VatLieu' table. You can move, or remove it, as needed.
    11.             this.vatLieuTableAdapter.Fill(this.vlxdDataSet.VatLieu);
    12.  
    13.         }
    14.  
    15.         private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    16.         {
    17.             if (e.Button == MouseButtons.Right)
    18.             {
    19.                 dataGridView1.CurrentCell.Selected = false;
    20.                 dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
    21.                 //MessageBox.Show("X: " + e.X + Environment.NewLine + "Y: " + e.Y);
    22.                 dataGridView1.ContextMenuStrip = contextMenuStrip1;
    23.                
    24.             }
    25.         }
    26.     }
    em dùng đoạn code trên thì cái menustrip nó ko hiện đúng ngay ô em click mà toàn hiện ngay góc trên @@ nhờ các bác giúp giùm em

    update: sau khi dùng thuộc tính menustrip của datagridview thì đúng là click chỗ nào hiện chỗ nấy nhưng mà không chọn được ô
    update 2: đã tìm ra giải pháp, dùng sự kiện MouseDown kết hợp với HitTestInfo

    Visual C# Code:
    1. private void dgvDanhSach_MouseDown(object sender, MouseEventArgs e)
    2.         {
    3.             if (e.Button == MouseButtons.Right)
    4.             {
    5.                 DataGridView.HitTestInfo hti = dgvDanhSach.HitTest(e.X, e.Y);
    6.                 if (hti.Type == DataGridViewHitTestType.Cell)
    7.                 {
    8.                     dgvDanhSach.ClearSelection();
    9.                     dgvDanhSach.Rows[hti.RowIndex].Cells[hti.ColumnIndex].Selected = true;
    10.                     MaVL = Convert.ToInt32(dgvDanhSach.Rows[dgvDanhSach.CurrentCell.RowIndex].Cells[0].Value);
    11.                     dgvDanhSach.ContextMenuStrip = cmtVatLieu;
    12.                     xemPhiVanChuyenToolStripMenuItem.Enabled = true;
    13.                 }
    14.                 else
    15.                 {
    16.                     xemPhiVanChuyenToolStripMenuItem.Enabled = false;
    17.                 }
    18.             }
    19.         }
    Đã được chỉnh sửa lần cuối bởi krapdicen : 01-10-2011 lúc 09:51 AM.

  2. #2
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Thế có add cái contextMenuStrip vô datagridview chưa??? Tìm trong thuộc tính của datagridview đó!

    cái này ko code gì cả, chi mà Point(e.X,e.Y) cho mêt...bạn chỉ code xử lý cho cái contextMenuStrip đó mà thôi

    Đảm bảo rightclick đâu thì hiện ra ngay chỗ đó.....

  3. #3
    Ngày gia nhập
    08 2010
    Bài viết
    7

    update: sau khi dùng thuộc tính menustrip của datagridview thì đúng là click chỗ nào hiện chỗ nấy nhưng mà không chọn được ô

  4. #4
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Trích dẫn Nguyên bản được gửi bởi krapdicen Xem bài viết
    nhưng mà không chọn được ô
    Cells của datagridview ấy hả????

    Theo kinh nghiệm của mình thì mặt định đầu tỉên click phải lên datagriview thì ko có chọn ô đó mà phải

    click trái(mới chọn cells đó dc)--> phải(hiện contextMenuStrip)....<---->chỗ này phải tư duy bắt lỗi một tí là đạt yêu cầu....

  5. #5
    Ngày gia nhập
    08 2009
    Nơi ở
    C:\Documents and Settings\ME\My Documents\Visual Studio 2010
    Bài viết
    516

    Gợi ý: Sử dụng CellMouseClick.

  6. #6
    Ngày gia nhập
    08 2010
    Bài viết
    7

    Mặc định ContextMenuStrip không hiện đúng vị trí mong muốn trên Datagridview

    Trích dẫn Nguyên bản được gửi bởi iamonlining Xem bài viết
    Gợi ý: Sử dụng CellMouseClick.
    bạn này có coi mình post gì không mà gợi ý kiểu này @@

    btw, đã tìm ra giải pháp, dùng đối tượng HitTestInfo để lấy vị trí Cell kết hợp với sự kiện MouseDown

    Mod close dùm em, update code post 1

  7. #7
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Trích dẫn Nguyên bản được gửi bởi krapdicen Xem bài viết
    dùng đối tượng HitTestInfo để lấy vị trí Cell kết hợp với sự kiện MouseDown
    Hơ! bạn có thể nói rõ hơn dc không, theo ké cho các project sau này với

  8. #8
    Ngày gia nhập
    08 2009
    Nơi ở
    C:\Documents and Settings\ME\My Documents\Visual Studio 2010
    Bài viết
    516

    Trích dẫn Nguyên bản được gửi bởi krapdicen Xem bài viết
    bạn này có coi mình post gì không mà gợi ý kiểu này @@

    btw, đã tìm ra giải pháp, dùng đối tượng HitTestInfo để lấy vị trí Cell kết hợp với sự kiện MouseDown

    Mod close dùm em, update code post 1
    Mình không xem mà biết đường comment àh. Bạn không hiểu được mà áp dụng thì không tiến bộ được đâu.
    p/s: Tinh thần của bạn để đâu mà nhờ mod closse vậy.

Các đề tài tương tự

  1. Tạo ContextMenuStrip (chuột phải) chỉ xuất hiện nếu click trên vùng có Rows ?
    Gửi bởi luxubu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 08-01-2016, 07:32 PM
  2. BackUp cơ sở dữ liệu không đúng đường dẫn mong muốn
    Gửi bởi duynguyen591990 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 26-06-2012, 09:23 AM
  3. Tính tri một biểu thức dạng hậu tố chạy không đúng, mong mọi người xem sai chổ nào?
    Gửi bởi forever1992cm trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 0
    Bài viết cuối: 25-10-2011, 11:39 PM
  4. Làm sao để DataGridView hiển thị với tên mình mong muốn ?
    Gửi bởi huygapro trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 15-11-2010, 03:19 PM
  5. contextMenustrip trên pictureBox. giúp mình với.
    Gửi bởi arem trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 07-10-2010, 10:57 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn