静态变量的问题

本文探讨了在多次调用数据显示窗体时出现的“数据表已存在于数据集中”的错误,并提供了详细的解决方案。关键在于理解static变量的生命周期及其在不同窗体间的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在主窗体中多次调用数据显示窗体时会提示: 此数据表已经存在数据集中.
  
在数据显示窗体类中定义有:
       
private static DataTable table = new DataTable("myTable");  // 数据表
        private static DataSet dataset = new DataSet("datasetInfo");  // 数据集
  
   private  void AddData()
{
          ...
       dataset.Tables.Add(table);
 }
 
主窗体中调用:
        private void btnShowList_Click(object sender, EventArgs e)
        {
            FormShowGridView frmShowGridView = new FormShowGridView();
            try
            {
                frmShowGridView.StartPosition = FormStartPosition.CenterScreen;
                frmShowGridView.ShowDialog();
            }
            finally
            {
                frmShowGridView.Dispose();
            }
        } 
当多次调用数据显示窗体就会报错, 究其原因就是因为 dataset 和 table 定义为 static 变量, 而这条语句不能多次执行:
dataset.Tables.Add(table);
解决办法: 去掉变量定义前的 static 即可.
        private DataTable table = new DataTable("myTable");  // 数据表
        private DataSet dataset = new DataSet("datasetInfo");  // 数据集
通过此例, 对 static 加深了一点印象.

转载于:https://www.cnblogs.com/csMapx/archive/2011/05/26/2057942.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值