Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Назначение классам иконки для Панели элементов, Назначение классам иконки для Панели эле 
:(
    Опции темы
Compositum
Дата 27.2.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

Репутация: 0
Всего: 1



я создал пространство имен, которое, в свою очередь, содержит др. пространства имен. классы созданные мною распределены по пространствам... Каждый класс имеет свое назначение. Хотелось бы, чтобы каждый класс имел свою иконку, после того, как он оказывается на панели элементов...
Если просто свою библиотеку добавлять - контролы отображаются одинаковым значком (шестеренкой).
Каким образом прописывается, какому классу какая иконка соответствует?

user posted image
PM   Вверх
Voyager
Дата 6.3.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 3
Всего: 18



Установить картинку контрола в Toolbox можно следующеми способами:

Код

   // Specifies the bitmap associated with the Button type.
    [ToolboxBitmap(typeof(Button))]
    class MyControl1 : UserControl  { }
    // Specifies a bitmap file.
    [ToolboxBitmap(@"C:\Documents and Settings\Joe\MyPics\myImage.bmp")]
    class MyControl2 : UserControl  { }
    // Specifies a type that indicates the assembly to search, and the name 
    // of an image resource to look for.
    [ToolboxBitmap(typeof(MyControl), "MyControlBitmap")]
    class MyControl : UserControl  {}


Пора уже на главную страницу вешать. smile

Это сообщение отредактировал(а) Voyager - 6.3.2008, 17:58
PM   Вверх
Compositum
Дата 6.3.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

Репутация: 0
Всего: 1



спасибо. сейчас пробую сижу. 
вопрос:
я ведь создаю свою отдельную библиотеку классов. 
т.о. целесообразней было бы, как мне кажется, хранить все изображения в файле ресурсов.
Было бы здорово, если бы можно было ссылаться на них, а не думать о том, что нужно прежде кинуть куда-то на комп изображение...
Пробовал так:
Код

[ToolboxBitmap(Resource1.ho0027_48)]

Но не хочет. т.к. параметром должна быть строка с указанием расположения файла картинки...
Можно ли это обойти, и юзать изображения из ресурсов?
PM   Вверх
HellMasterHaiL
Дата 6.3.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

Репутация: 1
Всего: 1



а чем тебе не нравится третий приведенный пример?
PM MAIL ICQ   Вверх
Compositum
Дата 6.3.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

Репутация: 0
Всего: 1



Млин... не получилось:
Код

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Drawing;

namespace ExampleLibrary
{
    [ToolboxBitmap(@"H:\C# 2005\Projects\ExampleLibrary\ExampleLibrary\Resources\ho0027-48.gif")]
    public class DocumentInfo
    {
        #region поля класса...
        int nomber;//номер документа
        string name;//наименование документа
        const string grName1 = "1. Основная инфа";
        #endregion

        #region Свойства и методы класса...
        [DisplayName("№ док.")]
        [Description("Номер документа")]
        [Category(grName1)]
        [ReadOnly(true)]
        /// <summary>
        /// Номер документа
        /// </summary>
        public int Nomber
        {
            get { return nomber; }
            set { nomber = value; }
        }
        /// <summary>
        /// Наименование документа
        /// </summary>
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public override string ToString()
        {
            return "Документ № " + Nomber.ToString() + " - " + Name;
        }
        #endregion
    }
}

откомпилировал. получил dll-файл.
пытаюсь его кинуть на туллбар (в др. проекте), через Choose toolbox items...
не хочет. дает это:

---------------------------
Microsoft Visual Studio
---------------------------
There are no components in 'H:\C# 2005\Projects\ExampleLibrary\ExampleLibrary\bin\Release\ExampleLibrary.dll' that can be placed on the toolbox.
---------------------------
ОК   
---------------------------

Что я не так сделал?


Это сообщение отредактировал(а) Compositum - 6.3.2008, 19:05
PM   Вверх
HellMasterHaiL
Дата 6.3.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

Репутация: 1
Всего: 1



говорит типа нету контролов в твоей дллке...
точно DocumentInfo наследует UserConterol

мну делал так:
Код

<ToolboxBitmap(GetType(DataGridContextMenu), "Des.ico")> _
Public Class DataGridContextMenu

, где Des.ico явно включен в проект, а класс DataGridContextMenu наследует юзерконтрол, о чем в файле дизайнера написано:
Код

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class DataGridContextMenu
    Inherits System.Windows.Forms.UserControl


еще мну не нравитс, что ты ему даешь входный гиф файл, попробуй бмп или исо... хотя может я сильно ошибаюсь

PM MAIL ICQ   Вверх
Compositum
Дата 6.3.2008, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

Репутация: 0
Всего: 1



спасибо, я как раз только обнаружил, что если изменю класс, сделав его наследуемым от юзер-контрола, то могу его кинуть на туллбокс
Код

public class DocumentInfo : UserControl

user posted image
но... тут есть загвоздка: на тулбоксе-то картинка показывается, а вот как оно на форме выглядит...
хотелось бы научиться реализовывать 2 варианта: внизу, в отдельной панели (как ДатаСеты, ДатаАдаптеры и т.п.), а так же в правом верхнем углу кнопка разворачивания (как у ДатаГридВью). дабы можно было настраивать объект.
Как это делается?
___________________________
п.с. третьего примера я, если честно, не понял. к тому же никогда не работал с юзер-контролом. 
английского не знаю, ковыряю книги, да переводчики электронные...

Добавлено через 14 минут и 5 секунд
Цитата(HellMasterHaiL @  6.3.2008,  19:13 Найти цитируемый пост)
(GetType(DataGridContextMenu), "Des.ico")

этого не понял
PM   Вверх
HellMasterHaiL
Дата 6.3.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

Репутация: 1
Всего: 1



по поводу третьего примера:
в папку с проектом кидаешь свою картинку. потом в Solution Explorer'e (там где у тебя отображается твой проект и все его файлы) через Add -> Existing Item включаешь свою картинку в проект и пишешь ее как показано в третьем примере

как засунуть контрол в панель, как датасет, то надо его наследовать не от юзерконтрола, который есть виндавс контрол, а скажем от контролов типа System.Windows.Forms.ContextMenuStrip, либо создавать изначально CustomControl, тогда и появится кнопка разворачивания

PM MAIL ICQ   Вверх
Compositum
Дата 6.3.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

Репутация: 0
Всего: 1



Цитата(HellMasterHaiL @ 6.3.2008,  19:46)
по поводу третьего примера:
в папку с проектом кидаешь свою картинку. потом в Solution Explorer'e (там где у тебя отображается твой проект и все его файлы) через Add -> Existing Item включаешь свою картинку в проект и пишешь ее как показано в третьем примере

как засунуть контрол в панель, как датасет, то надо его наследовать не от юзерконтрола, который есть виндавс контрол, а скажем от контролов типа System.Windows.Forms.ContextMenuStrip, либо создавать изначально CustomControl, тогда и появится кнопка разворачивания

user posted image
но не получилось
user posted image
картинка не отображается.

С юзер-контролами не работал, к сожалению,  не подскажете, где на русском можно почитать как работать с ними?

Это сообщение отредактировал(а) Compositum - 6.3.2008, 20:03
PM   Вверх
HellMasterHaiL
Дата 6.3.2008, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

Репутация: 1
Всего: 1



странно, у мну таким образом все отлично работаеть!
PM MAIL ICQ   Вверх
Compositum
Дата 7.3.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

Репутация: 0
Всего: 1




Ока, пока что чёрт с ней (с шестеренкой), мне не нравится еще вот какой момент:
чтобы мой класс мог отображаться  на панели toolbox, он обязательно должен быть наследуемым от юзерКонтрола. но это не есть хорошо, поскольку объекты моего класса будут использоваться в качестве источника для PropertyGrid. А в том, случае, когда я его сделаю наследуемым от класса юзерКонтрола помимо нужных мне свойств ПропертиГрид отобразит туеву хучу свойств, наследуемых от Юзерконтрола - а это мне не нужно. Как можно это решить?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0923 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.