using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
CheckBox.cs своими руками
Уже довольно давно и достаточно безуспешно бьюсь над следующей задачей:
Получить компонент, аналог CheckBox, у которого состояние не делится на помечено\не помечено\не определено, а представляет целое число - индекс, по которому из встроенного или внешнего ImageList берется рисунок пометки.
Наконец добрался до чудесной утилиты .NET Reflector.
http://www.red-gate.com/products/reflector/
Декомпилировал класс System.Windows.Forms.CheckBox и полученный код вставил в новый класс. Попытался откомпилировать. Однако, выяснилось, что директивы using нужно искать самому. Что делать - начал искать. Тем же reflector'ом выцепил половину. А вот дальше начались странности. Выглядили они, как море ошибок, в стиле: "недоступен из-за его уровня защиты" или "пропущена ссылка на сборку". И т.д.
Помогите, пожалуйста с этим разобраться.
Вот код, еще не испорченный моими ручками, который выдал reflector:
http://webfile.ru/4642381
А вот список ошибок, которые выдает компилятор (VS2010):
http://webfile.ru/4642389
Подключенные namespace'ы:
Код:
P.S. Интересует именно "родная", а не сторонняя реализация класса, потому что после CheckBox тоже самое придется делать с TreeView. И хотелось бы именно создать новый класс с исходными кодами старого, а не делать его наследником. Ибо сейчас это прежде всего опыт. Ну, а если это чудо все-таки откомпилируется, то от этого можно будет плясать, понемного исправляя код под свои нужды. Воть. Очень надеюсь на вашу помощь!
---Добавлено:
В "Depends On" Reflector'a написано:
microlib
System
System.Drawing
System.Windows.Form
Собственно, вот этот самый microlib у меня и не подключен, но если дело в нем, то вопрос - как его подцепить.
Господа матерые программисты, неужели никто не может помочь чайнику?:rolleyes: Очень нужно.:(
Цитата: EqKeeper
Господа матерые программисты, неужели никто не может помочь чайнику?:rolleyes: Очень нужно.:(
CheckBox это системный компонент. Его изготавливает и отрисовывает на экране сам Windows, а дотнет для него предоставлет только обертку.
Если хочешь и чекбокс клевый и три вью с таким же контролом, то быстрее всего сделать это на WPF.
---
Прочитал, попробовал. Очень необычно, непривычно и подозрительно (как и C# в свое время). Собственно вопрос - стоит ли переходить на него с Windows Form? Пока я вижу. что там очень мало стандартных компонентов, еще плохо себе представляю как с ними работать и т.д. Но если за WPF будущее - то в любом случае буду осваивать его. Собственно стоит ли?
А за наводку в любом случае спасибо. Прочитав о "картинках в кнопках" я с размаху стукнул себя по лбу. Ведь ничто не мешает мне использовать вместо чекбокса кнопку с меняющимися картинками! Тем более, что их состояния мне все равно хранить во вне. Огромное спасибо!