Показывать всплывающую подсказку при изменении размера столбца DataGridView - PullRequest
0 голосов
/ 17 ноября 2011

Я пытаюсь сделать эффект, аналогичный Excel, когда пользователь изменяет размер столбца в WinForms DataGridView, где во всплывающей подсказке отображается текущий размер столбца.

Есть ли простой способ сделать это?

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Надеюсь, эта ссылка поможет вам ... о том, как показать подсказку при изменении размера столбца таблицы данных ...

http://www.codeproject.com/KB/grid/testgridzip.aspx?display=PrintAll

или вы можете попробовать это ..

 void dataGridView1_ColumnWidthChanged(object sender,  DataGridViewColumnEventArgs e)
   {
       toolTip1.SetToolTip(dataGridView1.Columns[i].Width.ToString());
    }
0 голосов
/ 17 ноября 2011

Мое текущее решение, основанное на подсказках @errorstacks.

        this.dgvDeskTrades.MouseDown += dgvDeskTrades_MouseDown;
        this.dgvDeskTrades.MouseMove += dgvDeskTrades_MouseMove;
        this.dgvDeskTrades.MouseUp += dgvDeskTrades_MouseUp;

    private int colResizing = -1;
    private int origWidth;
    private int mouseX;

    private void dgvDeskTrades_MouseDown(object sender, MouseEventArgs e)
    {
        var hit = this.dgvDeskTrades.HitTest(e.X, e.Y);
        if (hit.Type != DataGridViewHitTestType.ColumnHeader) return;
        if (Cursor.Current != Cursors.SizeWE) return;

        this.colResizing = hit.ColumnIndex;
        this.origWidth = this.dgvDeskTrades.Columns[this.colResizing].Width;
        this.mouseX = e.X;
    }

    private void dgvDeskTrades_MouseMove(object sender, MouseEventArgs e)
    {
        if (this.colResizing == -1) return;
        this.dgvDeskTrades.Columns[this.colResizing].Width = Math.Max(0, this.origWidth + (e.X - this.mouseX));
        this.toolTip.Show("Width: " + this.dgvDeskTrades.Columns[this.colResizing].Width, this, e.X, e.Y);
    }

    private void dgvDeskTrades_MouseUp(object sender, MouseEventArgs e)
    {
        if (this.colResizing == -1) return;
        this.toolTip.Hide(this);
        this.colResizing = -1;
    }
...