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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2017, 17:49   #1
Fronzi
Пользователь
 
Регистрация: 11.03.2017
Сообщений: 23
По умолчанию Вывести данные из 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 Кб, 129 просмотров)
Тип файла: jpg как должно.jpg (79.5 Кб, 130 просмотров)
Fronzi вне форума Ответить с цитированием
Старый 14.11.2017, 20:57   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

У вас конвертация строки в число идёт в конструкторе формы, а когда он выполняется, то в текстбоксах пустота и ни в какое число она превратиться не может. Суйте это в обработчик нажатия на кнопку и будет вам счастье.
pu4koff вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не удаётся вывести CRC16 в textBox suraba Помощь студентам 5 24.01.2017 17:58
WinForms: Не выводит данные в textbox Jeckor C# (си шарп) 1 16.10.2015 05: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 13:57