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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2018, 17:50   #1
Alex Pavlov
Новичок
Джуниор
 
Регистрация: 10.04.2018
Сообщений: 2
По умолчанию Отображение позиция в 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, 20:47   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Код:
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;
            }
        }

    }
pu4koff вне форума Ответить с цитированием
Старый 11.04.2018, 10:32   #3
Alex Pavlov
Новичок
Джуниор
 
Регистрация: 10.04.2018
Сообщений: 2
По умолчанию

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение списка в 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 18:17