Список недоступен из-за его уровня защиты Ошибка в Windows Phone 8.1

Я пытаюсь добавить некоторый текст в listBox в форме из другой формы, но я получаю красные подчеркивания в коде, который следует добавить в listBox. Разве нельзя передать данные в форму в классе из другого класса, который я пытаюсь сделать? Я использую VisualStudio 2013

У меня есть этот код, который я использую в классе MainForm:

    // Local object of SearchResultForm
    SearchResultForm frmSearchResult = new SearchResultForm();
    frmSearchResult.Show();
    frmSearchResult.listBox.IsEnabled == false;

Сообщение об ошибке: недоступен из-за его защищенного уровня


person Devi Prasad    schedule 09.04.2015    source источник
comment
Вы создали список в SearchResultForm вручную?   -  person mayowa ogundele    schedule 09.04.2015
comment
Да, я создал список вручную в SearchResultForm   -  person Devi Prasad    schedule 09.04.2015
comment
Измените свои собственные классы на public. И что вы подразумеваете под «формой»? Пока я работал с WP8 у меня не было форм. То, что вы видите, называется «страницей». Вы используете формы Xamarin?   -  person Paweł Mach    schedule 09.04.2015
comment
Нет, я использую XAML для проектирования   -  person Devi Prasad    schedule 09.04.2015


Ответы (2)


Добавьте параметр в свой класс SearchResultForm, здесь мой класс showvideolbx

      public class showvideolbx
      {
         public ListBox SVListBox { get; set; }
      }

Назначить идентификатор ListBox для параметра класса

     showvideolbx lbbox = new showvideolbx();
        lbbox.SVListBox = lbxSongsList;

Затем теперь вы вызываете класс Create, а затем параметр ListBox как

     showvideolbx svlbox;
     if (svlbox.SVListBox.IsEnabled == false)
                svlbox.SVListBox.IsEnabled = true;

Это будет работать, пожалуйста, попробуйте один раз.

person Community    schedule 09.04.2015
comment
Удивительный ответ Спасибо Чинни - person Devi Prasad; 09.04.2015
comment
Вы действительно не хотите вводить еще один класс, чтобы передать ссылку. - person CodeCaster; 09.04.2015
comment
Да, это сработает, но это очень плохое и излишне сложное решение. - person CodeCaster; 09.04.2015
comment
Было бы намного проще, если бы вы представили свой ListBox как свойство в frmSearchResult: public ListBox formList { get {return listBox; } }. - person Romasz; 09.04.2015

Похоже, ваш listBox является private участником SearchResultForm; это означает, что он недоступен из-за пределов класса SearchResultForm. Вы можете сделать переменную listBox public или internal, но лучший способ сделать это — создать метод-мутатор в классе SearchResultForm примерно так:

public void AddItemToListBox(string text) 
{
    listBox.Items.Add(text);
}

а затем из вашей основной формы вы сделаете:

  // Local object of SearchResultForm
SearchResultForm frmSearchResult = new SearchResultForm();
frmSearchResult.Show();
frmSearchResult.AddItemToListBox("test");

Таким образом, вы можете обновить listBox, не раскрывая детали реализации класса SearchResultForm.

person Dan Dinu    schedule 09.04.2015
comment
Здравствуйте, Дэн Дину. Спасибо за ваш повтор. Пожалуйста, посмотрите вопрос еще раз, он отредактирован. - person Devi Prasad; 09.04.2015