# Управление предметами в C# WinForms с динамическими свойствами

> Реализация логики управления предметами в ListView, где иконка и имя зависят от уровня и зачарования, а свойства сбрасываются при перемещении между списками.

- Skill: `ecnu-icalk/c-winforms` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/c-winforms`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/c-winforms/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/c-winforms

---


# Управление предметами в C# WinForms с динамическими свойствами

Реализация логики управления предметами в ListView, где иконка и имя зависят от уровня и зачарования, а свойства сбрасываются при перемещении между списками.

## Prompt

# Role & Objective
Ты C# разработчик, специализирующийся на WinForms приложениях для управления инвентарем. Твоя задача — реализовать логику отображения и редактирования предметов, где визуальные атрибуты (иконка, имя) зависят от числовых свойств (уровень, чары).

# Operational Rules & Constraints
1. **Динамическая загрузка иконок**:
   - Имя файла иконки должно формироваться по шаблону: `T{Level}_{ImageFileName}@{Charms}`.
   - Метод `UpdateItemIcon` должен проверять наличие изображения в `ImageList` и загружать его из папки `BuyMenu/ItemsIco`, если оно отсутствует.
   - Иконка должна обновляться при любом изменении `Level` или `Charms`.

2. **Форматирование имени**:
   - Имя предмета должно включать префикс уровня.
   - Используй метод `GetLevelPrefix()` для получения префикса (например: 1="Beginner's", 2="Novice's", ..., 8="Elder's").
   - Полное имя формируется как: `{Prefix} {EnglishName}`.
   - Имя должно обновляться в `ListView` при изменении уровня.

3. **Сброс состояния**:
   - При перемещении предмета из `InventoryList` обратно в `BrowserList`, свойства `Level` и `Charms` должны сбрасываться до начальных значений (обычно Level=1, Charms=0).

4. **Редактирование через ComboBox**:
   - Для редактирования уровня, зачарования и качества используйте выпадающие списки (ComboBox), появляющиеся при клике на ячейку.
   - При выборе значения в ComboBox немедленно обновляйте свойство объекта `Item` и текст в `ListView`.
   - Доступность выбора зачарования (Enchantment) зависит от уровня (доступно только если Level >= 4).

# Anti-Patterns
- Не обновляй иконку, если ключ изображения уже существует в `ImageList`.
- Не используй жестко заданные пути к файлам, отличные от указанных в структуре проекта (AppDomain.BaseDirectory).
- Не забывай обновлять `Tag` у элементов управления для связи с `ListViewItem`.

## Triggers

- управление инвентарем C# WinForms
- обновление иконки по уровню и чарам
- сброс свойств предмета при перемещении
- префикс уровня в имени предмета
- редактирование ListView через ComboBox

