我试图让我的dataGridView公开,所以我可以从另一个类访问它。我尝试这样做
public DataGridView dgv = new DataGridView();
为了测试这个更改,我尝试使用
在Form1上填充信息dgv.DataSource = prevEx.ToList();
之前它会充满信息,但现在它根本没有填充,我就盯着空DGV
。我知道prevEx有一个事实,因为在公开之前,DGV
会被填充。
我知道我在应该填充字段的步骤之前初始化新的DGV(它在我的所有其他公共变量的顶部),所以这不是问题,所以现在我&# 39;我不知所措。任何帮助都会很棒。
为了澄清一些困惑,这里有更多的代码。
public partial class Form1 : Form
{
public static Microsoft.Office.Interop.Excel._Application excelApp = new Microsoft.Office.Interop.Excel.Application() { DisplayAlerts = false, Visible = false };
System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess();
public List<Attorney> listOfAttys = Helpers.getAttorneys();
public static DataGridView dgv = new DataGridView();
public static string fileName = null;
public static string chatterCase = null;
public static string userName = null;
public static string attorneyNum = null;
public static int batchID;
public static string ID;
public static DateTime dateHold;
public static string holdDesc = null;
public static int startingRow;
public static string holdAccount = null;
public void btnLoad_Click(object sender, EventArgs e)
{
txtbxFilename.Text = null;
txtbxChatterCase.Text = null;
txtbxUserName.Text = null;
txtbxRowNum.Text = null;
System.IO.Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "C:\\";
openFileDialog1.Filter = "Excel files |*.xls;*.xlsx";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
fileName = txtbxFilename.Text = openFileDialog1.FileName;
myStream.Close();
myStream.Dispose();
}
}
catch (Exception ex)
{
excelApp.Quit();
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
var prevEx = LegalTransactionList.previewExcel();
dgv.DataSource = prevEx.ToList();
}
答案 0 :(得分:1)
也使用静态标签声明:
public static DataGridView dgv = new DataGridView();
这将使它在类之间(全局)保留数据。
在你的其他课堂上称之为:
MyClassName.dgv.DataSource = prevEx.ToList();
答案 1 :(得分:0)
使用静态标签制作:
public static DataGridView dgv = new DataGridView();
假设此控件属于Class Foo,要访问它,另一个类只需使用
Foo.dgv.DataSource = prevEx.ToList();
如果类Foo已在需要调用它的类中实例化,即
Foo bar = new Foo();
然后你不需要静态标签,它将被访问:
bar.dgv.DataSource = prevEx.ToList();
但是我的推荐是建立一个公共静态列表,并将数据源设置在与dgv相同的类中,而不是将dgv设置为public和static。
最后一个建议是,首先尝试将dataSource设置为null。
dgv.DataSource = null;
dgv.DataSource = prevEx.ToList();