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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2021, 17:41   #1
ProLink
Новичок
Джуниор
 
Регистрация: 02.06.2021
Сообщений: 2
По умолчанию Проблема с табуляцией в таблице

Первоначальная сетка получилась, но как привести к общей табличной сетке не понимаю. При изменении съезжают цифры и сама сетка.
Код:
using System;
using System.Windows.Forms;
 
namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = "-1";
            textBox2.Text = "1";
            textBox3.Text = "0,2";
            textBox4.Text = "-1";
            textBox5.Text = "1";
            textBox6.Text = "0,2";
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            double a = double.Parse(textBox1.Text);
            double b = double.Parse(textBox2.Text);
            double dx = double.Parse(textBox3.Text);
            double c = double.Parse(textBox4.Text);
            double d = double.Parse(textBox5.Text);
            double dy = double.Parse(textBox6.Text);
            double x = a;
            double y = c;
            double z;
            string st;
            
            label6.Text = "Результат\n x \\ y |";
            while (y <= d)
            {
                
                st = string.Format("{0:0.00}", y);
                label6.Text += "\t   " + st.PadLeft(6); //Тут табуляция
                y += dy;
            }
            label5.Text = "------------------------------------------------------------------------------------------------------------\n";
            while (x <= b)
            {
                st = string.Format("{0,6:0.00}", x);
                
                label5.Text += st + " |";
                y = c;
                while (y <= d)
                {
                   // label5.Text += " | ";
                    if ((Math.Abs(x) <= 0.0001) || (Math.Abs(y) <= 0.0001))
                    {
                        st = "* ";
                        label5.Text += "\t" + st.PadLeft(9);
                       
                    }
                    else
                    {
                        z = (x + y) / (x * y);
                        
                        st = string.Format("{0,9:0.00}", z);
                        //label5.Text += st + " | ";
                        label5.Text += st;
                    }
                    y += dy;
                }
                x += dx;
                label5.Text += Environment.NewLine;
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void label7_Click(object sender, EventArgs e)
        {
 
        }
    }
Изображения
Тип файла: png CP4_dWaHjoMChg.png (19.7 Кб, 0 просмотров)
ProLink вне форума Ответить с цитированием
Старый 11.11.2021, 21:35   #2
NeLirik
Пользователь
 
Регистрация: 09.11.2021
Сообщений: 11
По умолчанию

Из спортивного интереса пытался добиться требуемого результата. Однако, почему одинаковая длина выводимых полей сбивается при появлении двузначного значения в целой части.
Вместо простого label использовал richTextBox. Думал может там не собьются строки.
НЕ ПОЛУЧИЛОСЬ. Слишком много написано про форматирование с первого раза не освоить
Код:
namespace Что_то_с_выводом_таблиц
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = "-1";
            textBox2.Text = "1";
            textBox3.Text = "0,2";
            textBox4.Text = "-1";
            textBox5.Text = "1";
            textBox6.Text = "0,2";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            double a = double.Parse(textBox1.Text);
            double b = double.Parse(textBox2.Text);
            double dx = double.Parse(textBox3.Text);
            double c = double.Parse(textBox4.Text);
            double d = double.Parse(textBox5.Text);
            double dy = double.Parse(textBox6.Text);
            double x = a;
            double y = c;
            double z;
            string st;

            var sb = new System.Text.StringBuilder();
          
           
            sb.Append("Результат\n x \\ y     |");
          
            while (y <= d)
            {
                sb.Append(String.Format(" {0,10:f2} | ", y));
                y += dy;
            }
            sb.Append(" ___________________________________________________________________________________________________\n");
          
            while (x <= b)
            {
             sb.Append(String.Format("{0,10:f2}|", x));
                
                y = c;
                while (y <= d)
                {
                    // label5.Text += " | ";
                    if ((Math.Abs(x) <= 0.0001) || (Math.Abs(y) <= 0.0001))
                    {
                        st = "*";
                        //richTextBox1.Text += "\t" + st.PadLeft(9);
                        sb.Append(String.Format("{0,14}|", st));

                    }
                    else
                    {
                        z = (x + y) / (x * y);


                    sb.Append(String.Format(" {0,10:f2} |", z));
                       



                    }
                    y += dy;
                   // sb.Append(String.Format("\n"));
                }
                x += dx;
                sb.Append(String.Format("\n"));
                //richTextBox1.Text += Environment.NewLine;
            }

            richTextBox1.Text = sb.ToString();
        }
    }
}
NeLirik вне форума Ответить с цитированием
Старый 11.11.2021, 21:41   #3
NeLirik
Пользователь
 
Регистрация: 09.11.2021
Сообщений: 11
По умолчанию Окно приложения

Попробую еще позже
Изображения
Тип файла: png 2021-11-11_23-36-58.png (66.4 Кб, 0 просмотров)
NeLirik вне форума Ответить с цитированием
Старый 12.11.2021, 10:19   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

использован НЕ моноширинный шрифт.
разные символы имеют разную ширину.
Изображения
Тип файла: jpg 00.JPG (29.7 Кб, 20 просмотров)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с сохранением данных в таблице, QTableView + QSqlTableModel. firewate Qt и кроссплатформенное программирование С/С++ 1 24.07.2019 08:20
проблема отображения dialog в таблице kazakn JavaScript, Ajax 2 06.07.2012 13:18
Парсинг txt с разделителями табуляцией AlexKhol Общие вопросы Delphi 16 18.03.2012 18:33
Проблема в копировании данных в индексированной таблице БД tantema БД в Delphi 10 28.11.2010 15:57
помогите пожалуйста, задача с табуляцией, ошибка деление на 0.. как её убрать? Валюшка Помощь студентам 3 20.01.2009 21:01