我有带有datagridview的WindowsForm解决方案,以显示我从文本文件中读取的数据。数据中的行数很大,约为10,000行。
当我从visual studio运行程序时,看起来很好。但是当我从Debug文件夹(.exe文件)运行它时,我的datagridview出现了问题。滚动条缺失。
以下是我填写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 properties
为true
)并自定义列长度。
数据仍然可以通过鼠标滚动。怎么会发生?我该如何解决这个问题?
以下是我的计划预览:link
答案 0 :(得分:1)
我解决了这些问题。它是由backgroundworker引起的。我不知道如何解释技术概念。但是,我在这里做了。
我移动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);
}
}
答案 1 :(得分:0)
添加类似这样的内容,如果缺少滚动条,则将滚动条添加到datagridview
InputDataGridView.ScrollBars == Windows.Forms.ScrollBars.Both
'or
InputDataGridView.ScrollBars == Windows.Forms.ScrollBars.Vertical
答案 2 :(得分:0)
pip install .
答案 3 :(得分:-1)
在调用禁用单元格方法
后,简单地添加此行myDataGridView.ScrollBars = ScrollBars.Both;