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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменения размеров CheckBox 
:(
    Опции темы
nmn
Дата 16.2.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть такой компонент CheckBox, используя свойства Size, Width, Height (может еще какие, я проверял только эти) невозможно изменить размеры, размеры можно изменить только используя свойство MinimumSize. Эти все свойства CheckBox наследует от Control не переопределяя. Вопрос: каким образом можно добиться подобной функциональности в собственном компоненте не переопределяя свойства, т.е. используя тот же механизм, который использует CheckBox?
PM Skype   Вверх
diadiavova
Дата 16.2.2009, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Указанные свойства чекбокса можно изменять, если утановить AutoSize = false. Понимаю: это не ответ на вопрос, но, думаю, копать надо в этом направлении.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
unicuum
  Дата 16.2.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(nmn @  16.2.2009,  18:00 Найти цитируемый пост)
Есть такой компонент CheckBox, используя свойства Size, Width, Height (может еще какие, я проверял только эти) невозможно изменить размеры, размеры можно изменить только используя свойство MinimumSize. 


Код
private void Form1_Load(object sender, System.EventArgs e)
{
    // Делаем задний фон видимым на фоне формы.
    this.checkBox1.BackColor = System.Drawing.SystemColors.Info;
    // Растягиваем объект класса CheckBox в два раза по ширине
    this.checkBox1.Size = new Size
        (this.checkBox1.Size.Width * 2, this.checkBox1.Size.Height);
}


Цитата(nmn @  16.2.2009,  18:00 Найти цитируемый пост)
Вопрос: каким образом можно добиться подобной функциональности в собственном компоненте не переопределяя свойства, т.е. используя тот же механизм, который использует CheckBox? 

А какой по твоему механизм использует CheckBox?


--------------------
user posted image
обычный день на винграде
PM   Вверх
nmn
Дата 16.2.2009, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(unicuum @  16.2.2009,  19:45 Найти цитируемый пост)
private void Form1_Load(object sender, System.EventArgs e)
{
    // Делаем задний фон видимым на фоне формы.
    this.checkBox1.BackColor = System.Drawing.SystemColors.Info;
    // Растягиваем объект класса CheckBox в два раза по ширине
    this.checkBox1.Size = new Size
        (this.checkBox1.Size.Width * 2, this.checkBox1.Size.Height);
}

не знаю что делает этот код у вас, но у меня он размер не меняет, вернее меняет Size становится равным тому что присваивается, но тут же становится прежним (проверить можно подписавшись на событие SizeChanged или ClientSizeChanged)
механизм, используя который можно было бы запретить изменение размеров контрола не переопределяя соответствующие свойства, я про них писал выше

Это сообщение отредактировал(а) nmn - 16.2.2009, 20:24
PM Skype   Вверх
unicuum
  Дата 16.2.2009, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(nmn @  16.2.2009,  20:22 Найти цитируемый пост)
не знаю что делает этот код у вас, но у меня он размер не меняет, вернее меняет Size становится равным тому что присваивается, но тут же становится прежним (проверить можно подписавшись на событие SizeChanged или ClientSizeChanged)

Не надо заморачиваться на всяких мелочах. Если тебе сказали поставить авторазмер в false, так поставь. А я вот другой пример написал.

Код
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace ResizeCheckbox
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.CheckBox checkBox1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.checkBox1 = new System.Windows.Forms.CheckBox();
            this.SuspendLayout();
            // 
            // checkBox1
            // 
            this.checkBox1.BackColor = System.Drawing.SystemColors.Info;
            this.checkBox1.Location = new System.Drawing.Point(8, 24);
            this.checkBox1.Name = "checkBox1";
            this.checkBox1.Size = new System.Drawing.Size(88, 24);
            this.checkBox1.TabIndex = 0;
            this.checkBox1.Text = "single";
            this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(200, 77);
            this.Controls.Add(this.checkBox1);
            this.Name = "Form1";
            this.Text = "Resize CheckBox";
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }

        private void checkBox1_CheckedChanged(object sender, System.EventArgs e)
        {
            if (checkBox1.Checked)
            {
                this.checkBox1.Size = new Size
                    (this.checkBox1.Size.Width * 2, this.checkBox1.Size.Height);
                this.checkBox1.Text = "double";
            }
            else
            {
                this.checkBox1.Size = new Size
                    (this.checkBox1.Size.Width / 2, this.checkBox1.Size.Height);
                this.checkBox1.Text = "single";
            }
        }

    }
}


Скачать откомпилированную версию...


--------------------
user posted image
обычный день на винграде
PM   Вверх
nmn
Дата 19.2.2009, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



если Autosize=true, то откуда берется размер?
PM Skype   Вверх
lam0x7C4
Дата 22.2.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 1.6.2007
Где: Киев

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



Цитата(nmn @ 19.2.2009,  12:31)
если Autosize=true, то откуда берется размер?
 

Тогда размер рассчитывется исходя из размера текста на ТекстБоксе.
В примере unicuum перепиши код события таким образом:

Код

        private void checkBox1_CheckedChanged(object sender, System.EventArgs e)
        {
            if (checkBox1.Checked)
            {
                this.checkBox1.Size = new Size
                    (this.checkBox1.Size.Width * 2, this.checkBox1.Size.Height);
                this.checkBox1.Text = "double";
            }
            else
            {
                this.checkBox1.Size = new Size
                    (this.checkBox1.Size.Width / 2, this.checkBox1.Size.Height);

                // генерируем какой-то там текст
                StringBuilder sb = new StringBuilder();
                sb.Append("Generated: ");
                for (int i = 0; i < new Random().Next(20); i++)
                {
                    sb.Append(i);
                }
                 
                this.checkBox1.Text = sb.ToString();//"single";
            }
        }

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


Опытный
**


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

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



от текста зависит... понятно, что от текста
мне необходимо сделать такое же в собственном компоненте, если AutoSize=true, размеры не изменяются, но если AutoSize=false изменить размеры и включить AutoSize то размеры в CheckBox становятся прежними, а моем элементе управления остаются теми же, а мне нужно чтобы становились такимим какими надо

тут понаписывал smile, на самом деле у меня компонент как то не очень реагирует на AutoSize, хочется что бы было как у CheckBox

Это сообщение отредактировал(а) nmn - 22.2.2009, 17:49
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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