Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .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,639
Репутация: 3613
По умолчанию

Код:

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


04:26.


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

RusProfile.ru


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