Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > .NET > Windows Forms
Регистрация

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

Ответ
 
Опции темы
Старый 10.04.2018, 18:50   #1
Alex Pavlov
Новичок
 
Регистрация: 10.04.2018
Сообщений: 2
Репутация: 10
По умолчанию Отображение позиция в comboBox

В Windows Forms есть: comboBox, два numericupdown и два textBox.
В comboBox, коллекция элементов из трех позиций - A4, A3, Custom (формат бумаги).
При выборе А4 или А3, в обоих numericupdown выводится высота и ширина листа в мм, а textBox высота и ширина листа в дюймах.
Здесь код для comboBox:
(диапазон для numericupdown от 1 до 5000)

Код:

void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            double h, w, h_d, w_d; // высота, ширина, высота в дюймах, ширина в дюймах
            if (comboBox1.SelectedIndex == 0) // в comboBox выбрано А4
            {
                numericUpDown1.Value = 210; // в поле numericUpDown1 выводится значение 210
                numericUpDown2.Value = 297; // в поле numericUpDown2 выводится значение 297
 
                w = (double)numericUpDown1.Value; 
                h = (double)numericUpDown2.Value;
                // значеия из numericUpDown1 и numericUpDown2 присваиваются переменным w и h
 
                w_d = w/25.4;
                h_d = h/25.4;
                // расчет высоты и ширины листа в дюймах
 
                w_d = Math.Round(w_d, 4);
                h_d = Math.Round(h_d, 4);
                // округление до 4 занков после запятой
 
                textBox1.Text = w_d.ToString();
                textBox2.Text = h_d.ToString();
                // вывод значений в дюймах в textBox1 и textBox2
            }
            if (comboBox1.SelectedIndex == 1) // в comboBox выбрано А3
            {
                numericUpDown1.Value = 297;
                numericUpDown2.Value = 420;
                w = (double)numericUpDown1.Value;
                h = (double)numericUpDown2.Value;
                w_d = w/25.4;
                h_d = h/25.4;
                w_d = Math.Round(w_d, 4);
                h_d = Math.Round(h_d, 4);
                textBox1.Text = w_d.ToString();
                textBox2.Text = h_d.ToString();
            }

Помогите сделать так что-бы при изменении значений в numericupdown (при нажатии стрелок вверх или вниз), в comboBox выводилось позиция Custom.
Alex Pavlov вне форума   Ответить с цитированием
Старый 10.04.2018, 21:47   #2
pu4koff
ПрофессионалФорумчанин
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,458
Репутация: 3616
По умолчанию

Код:

public partial class Form1 : Form
    {
        public class PaperSize
        {
            public string Name { get; set; }
            public int Width { get; set; }
            public int Height { get; set; }

            public static PaperSize Custom = new PaperSize { Name = "Custom" };
        }

        private List<PaperSize> papers = new List<PaperSize>
            {
                new PaperSize { Name = "A4", Width = 210, Height = 297},
                new PaperSize { Name = "A3", Width = 297, Height = 420},
                PaperSize.Custom
            };

        public Form1()
        {
            InitializeComponent();
            
            comboBox1.DataSource = papers;
            comboBox1.DisplayMember = "Name";
            comboBox1.SelectedItem = null;
        }

        private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
        {
            PaperSize selectedItem = comboBox1.SelectedItem as PaperSize;

            if (selectedItem != null && selectedItem != PaperSize.Custom)
            {
                numWidth.Value = selectedItem.Width;
                numHeight.Value = selectedItem.Height;
            }
        }

        private void numWidth_ValueChanged(object sender, EventArgs e)
        {
            if (numWidth.Focused || numHeight.Focused)
            {
                int Width = (int)numWidth.Value;
                int Height = (int)numHeight.Value;

                var paperSize = papers.Find(p => p.Width == Width && p.Height == Height);

                if (paperSize == null)
                    comboBox1.SelectedItem = PaperSize.Custom;
                else
                    comboBox1.SelectedItem = paperSize;
            }
        }

    }

__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 11.04.2018, 11:32   #3
Alex Pavlov
Новичок
 
Регистрация: 10.04.2018
Сообщений: 2
Репутация: 10
По умолчанию

Большое спасибо
Alex Pavlov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение списка в ComboBox, позиция курсора palevg Компоненты Delphi 3 05.08.2014 11:26
отображение значения Combobox из выбранной ячейки pirat2k Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 1 03.03.2014 11:27
comboBox отображение Darth_Vader C# (си шарп) 0 07.11.2012 16:44
Отображение данных из базы SQL в MFC ComboBox al072 C/C++ Базы данных 0 06.05.2012 19:14
отображение результата запроса в combobox mile4ka БД в Delphi 3 20.12.2010 19:17


14:08.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru