-4

使用系统;使用 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();
        }
    }
}

我在按钮事件处理程序方法中得到 Name enumeratordoes not exist in current context 错误。

4

3 回答 3

1

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();

        }
    }
}
于 2013-01-13T11:05:38.410 回答
0

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;
    }
}
于 2013-01-13T11:03:37.143 回答
0
label1.Text = enumerator.Current.Categorie.[FieldName];

或者您IEnumerator的当前位置可能与上下文无关,请再次选择对象

于 2013-01-13T11:06:26.317 回答