Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как можно менять отображение в форме ("О предмете"), в зависимости от нужды (типа предмета)? (WinForms)

Eternally Against Искусственный Интеллект (239074), закрыт 2 года назад
Только учусь, делаю примитивную игру, сделал инвентарь и форму для него. Там сделал кнопку "О предмете", по нажатии которой открывается новое окно и в него передается экземпляр класса Item (изначально сами экземпляры - объекты классов наследников от абстрактного класса Item):
AboutItem about = new AboutItem(item);
about.ShowDialog();
Но у разных Item есть разные поля (наследники Item - это типа классы Armor, Weapon, Garbage и тд.), нужно что-бы в появившемся окне отображалось то, что есть у каждого наследника, если Armor - нужно отображать все что важно для объекта Armor, для Weapon - Weapon (ну типа у брони есть защита, а у оружия есть атака).
Т. к. я не знал других способов, для упрощения определения типа объекта у меня в Item есть поле string TypeInt, которое имеет соответствующее значение (Armor, Weapon и тд.), можно привести Item к Weapon\Armor и тд. используя это, но что делать дальше - не очень пока понимаю, как сделать отображение необходимых полей и что-бы это можно было нормально отформатировать? (что-бы не было пустых мест и все располагалось "красиво").

Спасибо.

P.s. еще вопросик, можно-ли как-то сделать всплывающую подсказку в ListView у названий столбцов, например, на скриншоте столбец "У / З" - неинформативен, там отображается урон или защита (для брони или оружия), но он не должен быть широким, а "Урон / защита" не влезают.
Лучший ответ
Konstantanter Просветленный (22513) 3 года назад
по поводу первого вопроса довольно расплывчатая формулировка.

но если правильно вас понял то вам прийдётся рисовать компоненты формы самому (для этого можно будет кинуть пару панелей или split container и опреировать им)
а по поводу второго

попробуйте так

// Display a tooltip for the animal under the mouse.
private void lstWeirdAnimals_MouseMove(
object sender, MouseEventArgs e)
{
// See what item is under the mouse.
int index = lstWeirdAnimals.IndexFromPoint(e.Location);

// Just use the item's value for the tooltip.
string tip = lstWeirdAnimals.Items[index].ToString();

// Display the item's value as a tooltip.
if (tipWeirdAnimals.GetToolTip(lstWeirdAnimals) != tip)
tipWeirdAnimals.SetToolTip(lstWeirdAnimals, tip);
}
Остальные ответы
Похожие вопросы