0

我遇到了 VS2010 C# 的问题:

我在我的表单上创建了一个名为“chkVehicles”的复选框,在我的 Form1.cs 中我试图确定是否选中了该复选框,但我收到错误消息:“名称 'xVehicles' 在当前上下文中不存在”

(除了复选框之外,我的代码工作正常......)

Form1.cs:

namespace plottingMap
{
    public partial class MapForm : Form
    {
        Map mapData = new Map();

        public MapForm()
        {
            InitializeComponent();
            <..snip...>
        }

        <...snip...>

        private void chkVehicles_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox xVehicles = (CheckBox)sender;
        }
}

class Map
{
    <...snip...>

    if (carpool.Contains(name) && xVehicles.Checked)
    {
        <...snip...>
    }
    <...snip...>
}

谢谢

4

2 回答 2

2

你已经xVehicles在你的chkVehicles_CheckedChanged事件中定义了。您将无法在方法/事件之外访问它。

不太确定为什么在类之外需要它,但是如果必须,您可以将其作为参数传递给调用方法或通过构造函数传递给类,或者xVehicles在类级别定义,例如:

public partial class MapForm : Form
    {
        Map mapData = new Map();
        public CheckBox xVehicles; //Like here

        public MapForm()
        {
            InitializeComponent();
            <..snip...>
        }

        <...snip...>

        private void chkVehicles_CheckedChanged(object sender, EventArgs e)
        {
            xVehicles = (CheckBox)sender; //assign it the sender
        }
 //.....your rest of the code
于 2013-04-30T12:32:32.900 回答
1

您需要将xVehicles参数作为参数传递给Map使用它的类的方法。

如果有意义,另一种选择是将其传递给构造函数。Map类看不到表单的属性。

于 2013-04-30T12:32:40.020 回答