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

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

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

Ответ
 
Опции темы
Старый 14.11.2017, 18:49   #1
Fronzi
Пользователь
 
Регистрация: 11.03.2017
Сообщений: 22
Репутация: 10
По умолчанию Вывести данные из TextBox - C#

Нужно при записи в текстбоксы получить координаты и преобразовать их в Point. Вроде все правильно делаю, код компилируется, но при запуске выдает ошибку (на скрине). Как сделать так, чтобы вводимые координаты были точками треугольника? Должно работать, как на втором скрине.
Код:

public partial class Form1 : Form
    {
        int x1, y1, x2, y2, x3, y3;
        private Figure fig1;
        private Figure fig2;
        bool b = false;
        private Graphics gr;
        public Form1()
        {
            InitializeComponent();
            gr = pictureBox1.CreateGraphics();
            //string[] s1 = textBox1.Text.Split(' ');
           // int x1 = int.Parse(s1[0]);
           // string[] s2 = textBox2.Text.Split(' ');    //150,200 300,100 500,200
           // int x2 = int.Parse(s2[0]);
            /* x1 = Convert.ToInt32(textBox1.Text); //тут какой-то косяк
             y1 = Convert.ToInt32(textBox2.Text);
             x2 = Convert.ToInt32(textBox3.Text);
             y2 = Convert.ToInt32(textBox4.Text);
             x3 = Convert.ToInt32(textBox5.Text);
             y3 = Convert.ToInt32(textBox6.Text);
            x4 = Convert.ToInt32(textBox7.Text);
             y4 = Convert.ToInt32(textBox8.Text);
             x5 = Convert.ToInt32(textBox9.Text);
             y5 = Convert.ToInt32(textBox10.Text);
             x6 = Convert.ToInt32(textBox11.Text);
             y6 = Convert.ToInt32(textBox12.Text);
           
             Point[] PR1 = { new Point(x1, y1), new Point(x2, y2), new Point(x3, y3) }; */ //как надо чтобы работало
            //Point[] PR2 = { new Point(x4, y4), new Point(x5, y5), new Point(x6, y6) };  
            Point[] PR1 = { new Point(150, 200), new Point(300, 100), new Point(500, 200) };//как оно работает
 
            Point[] PR2 = { new Point(150, 400), new Point(300, 140), new Point(500, 400) };
            fig1 = new Figure() { FillColor = Color.Red };
            fig1.Path.AddPolygon(PR1);
            fig2 = new Figure() { FillColor = Color.Blue };
            fig2.Path.AddPolygon(PR2);
            
            
        }
       
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            
            using (var brush = new SolidBrush(Color.Wheat)) //рисование
            {
                
                    brush.Color = fig1.FillColor;
                    
                    gr.FillPath(brush, fig1.Path);
 
                    brush.Color = fig2.FillColor;
                    gr.FillPath(brush, fig2.Path);
                
            }
 
 
 
        }
        private void pictureBox1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void label14_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            using (var brush = new SolidBrush(Color.Yellow)) //закрашивание пересечения
            {
 
                var r = fig1.Region;
                r.Intersect(fig2.Region);
                gr.FillRegion(brush, r);
            }
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
           
        }
    }
}
class Figure
    {
        public GraphicsPath Path = new GraphicsPath();
        public Color FillColor;
 
        public PointF Center
        {
            get
            {
                var rect = Path.GetBounds();
                return new PointF(rect.X + rect.Width/2, rect.Y + rect.Height/2);
            }
        }
 
        public Region Region
        {
            get { return new Region(Path); }
        }
    }

Изображения
Тип файла: jpg ошибка.jpg (114.3 Кб, 1 просмотров)
Тип файла: jpg как должно.jpg (79.5 Кб, 1 просмотров)
Fronzi вне форума   Ответить с цитированием
Старый 14.11.2017, 21:57   #2
pu4koff
ПрофессионалФорумчанин
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,458
Репутация: 3616
По умолчанию

У вас конвертация строки в число идёт в конструкторе формы, а когда он выполняется, то в текстбоксах пустота и ни в какое число она превратиться не может. Суйте это в обработчик нажатия на кнопку и будет вам счастье.
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не удаётся вывести CRC16 в textBox suraba Помощь студентам 5 24.01.2017 18:58
WinForms: Не выводит данные в textbox Jeckor C# (си шарп) 1 16.10.2015 06:24
вывести дату в textbox Алла94 Microsoft Office Excel 4 08.10.2014 15:57
Внести данные из Textbox Form2 в TextBox Form1 uralshans Microsoft Office Excel 1 07.01.2013 17:15
Из базы вывести в textbox.. Jonaitis Общие вопросы .NET 6 20.03.2010 14:57


23:48.


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

RusProfile.ru


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