名称'';枚举器';在当前上下文中不存在

本文关键字:上下文 不存在 枚举 名称 | 更新日期: 2023-09-27 17:52:18

使用系统;使用System.Data;使用System.Windows.Forms;使用System.Data.SqlClient;使用System.Linq;

namespace ProiectBDD
{
    public partial class AdaugaIntrebari : UserControl
    {
        private string connstring;
        public string Connstring
        {
            get { return connstring; }
            set { connstring = value; }
        }
        public AdaugaIntrebari(string p_connstring)
        {
            connstring = p_connstring;
            InitializeComponent();
            IncarcaCategorii();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (enumerator.MoveNext())
            {
                label1.Text = enumerator.Current.Categorie;
            }
        }
        public void IncarcaCategorii()
        {
            DataClasses1DataContext dc = new DataClasses1DataContext();
            var q = from a in dc.GetTable<Categorii>()
                    select a;
            var enumerator = q.AsEnumerable().GetEnumerator();
        }
    }
}

我得到的名称enumerator不存在于我的按钮事件处理程序中的当前上下文错误中方法

名称'';枚举器';在当前上下文中不存在

button1_Click不知道enumerator,因为它只存在于IncarcaCategorii中你需要使它成为一个类字段

using System;
using System.Data;
using System.Windows.Forms;
using System.Linq;
namespace ProiectBDD
{
    public partial class AdaugaIntrebari : UserControl
    {
        private string connstring;
        private IEnumerator<DataRow> _enumerator;
        public string Connstring
        {
            get { return connstring; }
            set { connstring = value; }
        }
        public AdaugaIntrebari(string p_connstring)
        {
            connstring = p_connstring;
            InitializeComponent();
            IncarcaCategorii();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (_enumerator == null) return;
            if (enumerator.MoveNext())
            {
                label1.Text = _enumerator.Current.Categorie;
            }
        }
        public void IncarcaCategorii()
        {
            DataClasses1DataContext dc = new DataClasses1DataContext();
            var q = from a in dc.GetTable<Categorii>()
                    select a;
            _enumerator = q.AsEnumerable().GetEnumerator();
        }
    }
}

作用域中不存在enomerator变量

参见此方法:

public void IncarcaCategorii()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();
    var q = from a in dc.GetTable<Categorii>()
            select a;
    var enumerator = q.AsEnumerable().GetEnumerator();
} // This is where "enumerator" become subject to garbage collection

enumerator变量需要以某种方式传入此处:

private void button1_Click(object sender, EventArgs e)
{
    if (enumerator.MoveNext())
    {
        label1.Text = enumerator.Current.Categorie;
    }
}
label1.Text = enumerator.Current.Categorie.[FieldName];

或者IEnumerator的当前位置可能断章取义,请再次选择对象