Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2011, 14:55   #1
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию Скиньте пример добавления смарт-тегов к пользовательскому компоненту ( кода)

Доброго времени суток)
Уважаемые программисты ,нет ли у кого примера создания смарт-тега ?
если есть - просьба выложить. Потому как я пытался повторить пример из книги Павла Агурова "Разработак компонентов на си шарп"
но у меня компонент вообще перестаёт отрисовыться ,когда я добавляю собственный дизайнер (точнее тот, который приведён в пример в книге) -
Код:
namespace WindowsFormsApplication1
{
    class ExampleComponentDesigner : System.ComponentModel.Design.ComponentDesigner
    {
        private DesignerActionListCollection actionList;
        public DesignerActionListCollection ActionList
        {
            get
            {
                // если ActionList ещё не был создан
                if (actionList == null)
                {
                    actionList = new DesignerActionListCollection();
                    // добавляем в коллекцию тег
                    actionList.Add(new myActionList(this.Component));
                }

                return actionList;
            }

        }
      /* public override DesignerVerbCollection Verbs
        {
            get { throw new NotImplementedException(); }
        }
        public System.ComponentModel.Design.DesignerVerbCollection get_Verbs()
        {
            return new DesignerVerbCollection(new DesignerVerb[]
            { new DesignerVerb("Example Designer Verb Command",
            new EventHandler(this.OnVerb)) });
        } //get_Verbs 
        protected void OnVerb(object sender, EventArgs e)
        {
            
        }
        */
    }
    //-----------------------------далее ActionList - 
    public class myActionList : DesignerActionList
    {
        myComponent mcom;
        // конструктор
        public myActionList(IComponent component)
            : base(component)
        {
            mcom = component as myComponent; // сохраняем ссылку на компонент

        }
    
        public Color StartColor
        {
            get { return this.mcom.StartColor; }
            set { this.GetPropertyByName("StartColor").SetValue(mcom, value); }
        }
        public Color EndColor
        {
            get { return this.mcom.EndColor; }
            set { this.GetPropertyByName("EndColor").SetValue(mcom, value); }
        }
        public void InvertColors()  
        {
            Color tmp = mcom.StartColor;
            StartColor = mcom.EndColor;
            EndColor = tmp;
        }
        private PropertyDescriptor GetPropertyByName(string propName)
        {
            PropertyDescriptor prop;
            prop = TypeDescriptor.GetProperties(mcom)[propName];

            if (null == prop)
            {
                throw new ArgumentException("Указаное свойство не найдено.", propName);
            }
            else
            {
                return prop;
            }
        }

        

    }
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 27.06.2011, 20:35   #2
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

вот прикреплю проект - если кто может - подскажите в чём ошибка пожалуйста)
Вложения
Тип файла: zip WindowsFormsApplication1.zip (75.7 Кб, 10 просмотров)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 27.06.2011, 21:25   #3
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Замечательный пример с MSDN, на примере которого я сам знакомился со смарт-тегами.

Да, кстати, Вы в своём примере отнаследовались от UserControl'а и пытаетесь ему дизайнер переопределить, что делать крайне не советую. Наследоваться надо от Control'а. К тому же определитесь, Вам компонент или контрол всё-таки нужен?
Spawn™Production® вне форума Ответить с цитированием
Старый 27.06.2011, 21:55   #4
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

вообще мне нужен -
Цитата:
2. Разработать раскрывающийся редактор типа для кисти. Необходимо поддерживать, как минимум, Solid и Gradient-кисти.
причём это -
Цитата:
элемент управления.
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 27.06.2011, 21:58   #5
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

судя по корню слова - это должен быть контрол....да? но экспресс эдишн только контрол и позволяет в проект добавить....вообще ,конечно, я явно не секу тему))
спасибо за пример)) но там наследование происходит от Label , насколько я понимаю)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 27.06.2011, 22:09   #6
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Spawn™Production® ,
просто я хочу добавить такой вот смарт тег где можно будет выбрать тип кисти и несколько цветов - ну и чтобы компонент перекрашивался в режиме разработки в зависимости от этих настроек.......получает, что мне нужен компонент всё-таки......контрол - он же не имеет визуальной части....короче ужас..
так вот просьба -
скажите - от чего мне нужно наследоваться и какой тип проекта создавать ? ))
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 27.06.2011, 22:11   #7
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Тип проекта - Class Library.
Наследоваться от обычного Control'а.
Component не имеет визуальной составляющей как раз, а Control имеет.
Spawn™Production® вне форума Ответить с цитированием
Старый 27.06.2011, 22:23   #8
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Spawn™Production® big thanks ))
вас понял)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 28.06.2011, 15:13   #9
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

не могу понять в этом примере - откуда такой код -
выделенные строки получает вручную надо добавлять?
или это должна была система добавить, опираясь на атрибуты?
Код:
private ColorLabel colorLabel2;

    public Form1()
    {
        InitializeComponent();
    }

    // VS Forms Designer generated method
    private void InitializeComponent()
    {
        this.colorLabel2 = new SmartTags.ColorLabel();
        this.SuspendLayout();
        // 
        // colorLabel2
        // 
        this.colorLabel2.BackColor = System.Drawing.Color.Gold;
        this.colorLabel2.ColorLocked = false;
        this.colorLabel2.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        this.colorLabel2.Location = new System.Drawing.Point(41, 42);
        this.colorLabel2.Name = "colorLabel2";
        this.colorLabel2.Size = new System.Drawing.Size(117, 25);
        this.colorLabel2.TabIndex = 0;
        this.colorLabel2.Text = "colorLabel2";
        // 
        // Form1
        // 
        this.ClientSize = new System.Drawing.Size(292, 273);
        this.Controls.Add(this.colorLabel2);
        this.Name = "Form1";
        this.ResumeLayout(false);

    }
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 28.06.2011, 16:01   #10
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

ага. получается , что я наследовался от дизайнера компонента.....потому он и не был видим.....
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скиньте у кого есть Angel_of_Death Общие вопросы Delphi 2 19.02.2011 16:37
Inline Method пример кода..? Masarr Общие вопросы C/C++ 5 03.12.2010 13:55
Вопрос по пользовательскому меню. КаМММ Microsoft Office Excel 3 16.02.2010 19:52
SMTP + SSL пример кода dimonbest Работа с сетью в Delphi 8 15.08.2008 10:56
Скиньте литературу vicdon Паскаль, Turbo Pascal, PascalABC.NET 1 07.12.2007 16:15