Primo Chalice Ответов: 3

Как вызвать аргумент из метода в событие в C#?


Привет,

У меня есть метод со строковым аргументом. Я хочу вызвать этот метод в событии, но когда я пытаюсь передать аргумент, он говорит мне, что переменная не присутствует в контексте.

Пожалуйста помочь.

С уважением
Аман Чаурасия

Что я уже пробовал:

Метод(функция):

private void GetZoneTag(string ZoneArea)
        {
            ZoneCmbZoneTag.Items.Clear();
            if (ListView1.Items.Count > 1)
            {
                for (var iCount = 0; iCount < ListView1.Items.Count; iCount++)
                {
                    if (ListView1.Items[iCount].SubItems[1].Text == ZoneArea)
                    {
                        ZoneCmbZoneTag.Items.Add(ListView1.Items[iCount].SubItems[0].Text);
                    }
                }
            }
        }


Событие:

private void ListView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                GetZoneTag(ZoneArea);
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

3 Ответов

Рейтинг:
2

Member 13843821

частная ListView1_SelectedIndexChanged недействительным(объект отправителя, EventArgs в электронной)
{
String str = listView1.SelectedItems[0].Text;
пробовать
{
Ул. GetZoneTag();
}
поймать(исключение бывший)
{
Ящик для сообщений.Показать(напр.сообщение);
}
}

Здесь вы передаете значение, которое является зоной, но зона отсутствует в ListView, и вам нужно сначала получить это значение, а после передать его функции, у вас нет
объявление или инициализация для зоны, поэтому она дает ошибку "переменная отсутствует в контексте" попробуйте это сделать.


Primo Chalice

Теперь я получаю эту ошибку 'InvalidArgument=Value of '0' is not valid for 'index', at line String str = ListView1.SelectedItems[0].Text, когда я нажимаю на ListView

Рейтинг:
0

OriginalGriff

Когда вы вызываете метод, вы передаете ему значение, которое он получает в переменной, объявленной в заголовке метода:

private void GetZoneTag(string ZoneArea)
Внутри метода значение называется "ZoneArea", но эта переменная не существует вне самого метода. Чтобы вызвать его, вы передаете ему фактическое значение:
GetZoneTag("Hello world");
Или
string zoneName = "Hello World";
...
GetZOneTag(zoneName);
Откуда вы получаете это значение, я не знаю - у меня нет доступа к остальной части вашего кода!


Primo Chalice

Теперь я получаю эту ошибку 'InvalidArgument=Value of '0' is not valid for 'index', at line String str = ListView1.SelectedItems[0].Text, когда я нажимаю на ListView

OriginalGriff

Затем воспользуйтесь отладчиком и выясните, что находится в коллекции - тем более что код не тот, что вы изначально показывали...
Я не могу видеть ваш экран, я не могу получить доступ к вашему жесткому диску - и у меня нет никакого доступа к вашим данным! :смеяться:

Рейтинг:
0

Member 13843821

частный listView1_SelectedIndexChanged недействительным(объект отправителя, EventArgs в электронной)
{
Строка str = "";


если (мыши listview1.Свойство selecteditems.Count > 0)
{
if (listView1.SelectedItems[0].Tag != null)
{
стр = мыши listview1.Свойство selecteditems[0].Бирка.Метод toString();
Ул. GetZoneTag();
}
еще
{
ул = "";
}
}
}