簡體   English   中英

是否可以在空數據網格中顯示消息

[英]Is it possible to display a message in an empty datagrid

我有一個datagrid,當用戶將文件拖放到其上時,該數據網格填充了CSV數據。 是否可以在空白網格中顯示消息,例如“請在此處拖動文件”或“此網格當前為空”。 當我等到文件被拖動以設置列等時,網格當前顯示為深灰色框。

我們繼承了DataGridView控件並添加了它。 我們不需要拖放功能 - 我們只需要告訴用戶何時沒有從查詢中返回數據。

我們有一個像這樣聲明的emptyText屬性:

    private string cvstrEmptyText = "";
    [Category("Custom")]
    [Description("Displays a message in the DataGridView when no records are displayed in it.")]
    [DefaultValue(typeof(string), "")]
    public string EmptyText
    {
        get
        {
            return this.cvstrEmptyText;
        }
        set
        {
            this.cvstrEmptyText = value;
        }
    }

並重載了PaintBackground函數:

    protected override void PaintBackground(Graphics graphics, Rectangle clipBounds, Rectangle gridBounds)
    {
        RectangleF ef;
        base.PaintBackground(graphics, clipBounds, gridBounds);
        if ((this.Enabled && (this.RowCount == 0)) && (this.EmptyText.Length > 0))
        {
            string emptyText = this.EmptyText;
            ef = new RectangleF(4f, (float)(this.ColumnHeadersHeight + 4), (float)(this.Width - 8), (float)((this.Height - this.ColumnHeadersHeight) - 8));
            graphics.DrawString(emptyText, this.Font, Brushes.LightGray, ef);
        }
    }

我認為這里最簡單的方法是制作一個巨型標簽控件來執行“Drag Here”並處理標簽的拖放事件。 拖放完成后,隱藏標簽並顯示網格。

如果您使用gridview,則可以使用EmptyDataText屬性。 它可以完成數據網格可以做的所有事情和(恕我直言)我認為在大多數情況下它更容易使用

我在這種情況下做的是在表單中添加一個制表符控件,將DGV放在一個選項卡中,並在另一個選項卡中添加一個標簽('Drag Here'或類似的東西)。 隱藏標簽。 然后,如果DGV為空,則顯示帶有標簽的選項卡。 就像routeNpingme的答案一樣,你可以在這里處理拖放事件,在后台加載DGV,然后在加載完成后切換標簽。 這很好,因為您還可以在VS Designer中輕松地在選項卡之間來回切換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM