繁体   English   中英

缺少 DataGridview 滚动条 C# WinForm

[英]Missing DataGridview scrollbar C# WinForm

我有一个带有 datagridview 的 WindowsForm 解决方案来显示我从文本文件中读取的数据。 来自数据的行数很大,大约 10.000 行。

当我从 Visual Studio 运行程序时,它看起来很好。 但是当我从 Debug 文件夹(.exe 文件)运行它时,我的 datagridview 出现了问题。 滚动条不见了。

这是我填充数据网格视图的方法:

private void LoadInputData()
    {
        try
        {
            InputDataGridView.DataSource = null;
            InputDataGridView.Refresh();
            InputDataGridView.DataSource = inputDataTable;
            DisableCells();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Load Input Data Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

我有一个函数,旨在从文本文件中填充inputDataTable DisableCells()函数是锁定datagridview(即设置readonly propertiestrue )并自定义列长。

数据仍然可以通过鼠标滚动。 它是如何发生的? 我该如何解决这个问题?

这是我的程序的预览:链接

我解决了这些问题。 它是由后台工作人员引起的。 我不知道如何从技术上解释这个概念。 但是,我做到了。

我移动了LoadInputData(); 线。 以前,我把它放在private void OpenDataBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)函数中。 然后,我把它移到了后台工作者之外的另一个地方。 它可以在下面的代码中看到。

以前:(见“//”)

private void OpenDataBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        try
        {
            //LoadInputData();
            CalculateRowAndColumnInNumericUpDown();
            mainForm.MainToolStripProgressBar.Value = 0;
            this.Cursor = Cursors.Default;
            OpenDataButton.Enabled = true;

            ProcessGroupBox.Enabled = true;
            ClearAllDataButton.Enabled = true;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Open Data Background Worker RunWorkerCompleted Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

到这个地方:

private void OpenDataButton_Click(object sender, EventArgs e)
    {
        try
        {
            OpenDataButton.Enabled = false;

            if (!OpenDataBackgroundWorker.IsBusy)
            {
                OpenFileDialog openData = new OpenFileDialog();
                openData.Multiselect = true;
                openData.ShowDialog();
                openData.Filter = "allfiles|*";

                if (openData.FileName != "")
                {
                    ClearInputDataTable();
                    LoadInputData();
                    OpenDataBackgroundWorker.WorkerReportsProgress = true;
                    OpenDataBackgroundWorker.WorkerSupportsCancellation = true;
                    OpenDataBackgroundWorker.RunWorkerAsync(openData.FileName);
                }
            }
            //here!!!
            LoadInputData();
            OpenDataButton.Enabled = true;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Error - Open Data", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

如果缺少滚动条,请添加类似的内容以将滚动条添加到 datagridview

InputDataGridView.ScrollBars == Windows.Forms.ScrollBars.Both
'or
InputDataGridView.ScrollBars == Windows.Forms.ScrollBars.Vertical
if (productsDataGridView.InvokeRequired) { 
    productsDataGridView.Invoke(new MethodInvoker(delegate { LoadInputData() })); 
}

在调用禁用单元格方法后简单添加此行

myDataGridView.ScrollBars = ScrollBars.Both;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM