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 に答える