Деталь C# ListView, Выделение отдельная ячейка

Вы не можете напрямую создавать экземпляры Activity или напрямую ссылаться на методы Activity, если ваш ссылочный класс не был создан целевым Activity.

В вашем случае вы не можете сделать это:

private MainGame mainGame = new MainGame();

Однако вы создаете экземпляр ScoreSetter из своей деятельности в MainGame, что означает, что у вас есть нужная ссылка. Вместо использования Context в конструкторе ScoreSetter, используйте MainGame:

private MainGame mainGame; //don't instantiate it here

public ScoreSetter(MainGame mainGame) {
        this.mainGame = mainGame; //do it here instead
}

Теперь вы можете ссылаться на фактический экземпляр вашей активности.

Если вы когда-либо сталкивались со случаем, когда ваш класс не содержит в Деятельности, которую необходимо обновить, вам следует обратиться к трансляциям .

10
задан Mike Christiansen 18 October 2008 в 16:43
поделиться

2 ответа

Можно сделать это без рисования владельца список:

// create a new list item with a subitem that has white text on a blue background
ListViewItem lvi = new ListViewItem( "item text" );
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add( new ListViewItem.ListViewSubItem( lvi,
    "subitem", Color.White, Color.Blue, lvi.Font ) );

Цветные аргументы конструктору ListViewSubItem управляют основным цветом и цветом фона подэлемента. Критическая вещь сделать здесь установлена UseItemStyleForSubItems ко Лжи на элементе списка иначе будут проигнорированы Ваши цветные изменения.

Я думаю, что Ваше решение ничьей владелец работало бы также, но необходимо не забыть изменять текст (приоритетный) цвет при изменении предпосылок к синему иначе текст будет трудно видеть.

14
ответ дан 3 December 2019 в 21:24
поделиться

Понятый это. Вот код для переключения выделения определенного подэлемента.

listView1.Items[1].UseItemStyleForSubItems = false;
if (listView1.Items[1].SubItems[10].BackColor == Color.DarkBlue)
{
    listView1.Items[1].SubItems[10].BackColor = Color.White;
    listView1.Items[1].SubItems[10].ForeColor = Color.Black;
}
else
{
    listView1.Items[1].SubItems[10].BackColor = Color.DarkBlue;
    listView1.Items[1].SubItems[10].ForeColor = Color.White;
}
2
ответ дан 3 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: