Nano Hash - криптовалюты, майнинг, программирование

Раскрашивание определенной строки текста в richTextBox С#

Я новичок здесь и новичок в С#. В основном я хочу раскрасить только максимальные температуры (одну строку) в своем отчете, но я пробовал все коды здесь, и ничего не работает. Кто-нибудь может мне помочь? Это моя кодировка, чтобы сравнить прогноз двух городов. Если есть другой более простой способ сделать это с помощью другой функции, такой как listBox, сообщите мне об этом.

Если вы видите картинку, я просто использовал звездочки, чтобы показать более высокую температуру.

Выход:

Новый вывод

Мой код:

private void getComparison()
{

    this.richTextBox1.Text = ("Start Date:  " + dateTimePicker3.Value.ToString());
    this.richTextBox1.Text = ("COMPARE MULTIPLE CITIES FOR THE WEEK" + Environment.NewLine + "\n\n");

    for (int j = 0; j < 7; j++)
    {
        tempCity1 = Convert.ToInt32(a.getMaxi()[comboBox2.SelectedIndex, j].ToString());
        tempCity2 = Convert.ToInt32(a.getMaxi()[comboBox1.SelectedIndex, j].ToString());

        //City 1
        this.richTextBox1.Text = ("------------------------------------------");
        this.richTextBox1.Text = ("Day:  " + a.getDate(j).ToString());
        this.richTextBox1.Text = ("------------------------------------------");
        this.richTextBox1.Text = ("City:  " + arrCities[comboBox2.SelectedIndex]);
        this.richTextBox1.Text = ("Minimum Temperature:  " + a.getMini()[comboBox2.SelectedIndex, j].ToString() + "°C");
        
        
        
        if (tempCity1 < tempCity2)
        {
            this.richTextBox1.Text =("Maximum Temperature: " + a.getMaxi()[comboBox2.SelectedIndex, j].ToString() + "°C");
            //richTextBox1.SelectionColor = Color.Red;
        }
        else
        {
            this.richTextBox1.Text = ("***Maximum Temperature: " + a.getMaxi()[comboBox2.SelectedIndex, j].ToString() + "°C");
            //richTextBox1.SelectionBackColor = Color.Blue;
        }

        this.richTextBox1.Text = ("Precipitation:  " + a.getPrecip()[comboBox2.SelectedIndex, j].ToString() + "%");
        this.richTextBox1.Text = ("Humidity:  " + a.getHumid()[comboBox2.SelectedIndex, j].ToString() + "%");
        this.richTextBox1.Text = ("Wind speed:  " + a.getWindspeed()[comboBox2.SelectedIndex, j].ToString() + "km / h");
        this.richTextBox1.Text = ("" + Environment.NewLine + "\n\n");

        //City 2
        this.richTextBox1.Text = ("City:  " + arrCities[comboBox1.SelectedIndex]);
        this.richTextBox1.Text = ("Minimum Temperature:  " + a.getMini()[comboBox1.SelectedIndex, j].ToString() + "°C");

        if (tempCity1 > tempCity2)
        {
            this.richTextBox1.Text=("Maximum Temperature: " +  a.getMaxi()[comboBox1.SelectedIndex, j].ToString() + "°C");
            //richTextBox1.SelectionColor = Color.Red;
        }
        else
        {
            this.richTextBox1.Text = ("**Maximum Temperature:" + a.getMaxi()[comboBox1.SelectedIndex, j].ToString() + "°C");
            //richTextBox1.SelectionColor = Color.Blue;
        }


        //("Maximum Temperature:  " + a.getMaxi()[comboBox1.SelectedIndex, j].ToString() + "°C");
        this.richTextBox1.Text = ("Precipitation:  " + a.getPrecip()[comboBox1.SelectedIndex, j].ToString() + "%");
        this.richTextBox1.Text = ("Humidity:  " + a.getHumid()[comboBox1.SelectedIndex, j].ToString() + "%");
        this.richTextBox1.Text = ("Wind speed:  " + a.getWindspeed()[comboBox1.SelectedIndex, j].ToString() + "km / h");

    }

Спасибо :)

26.08.2020

  • Возможно, это поможет: stackoverflow. ком/вопросы/1926264/ 27.08.2020
  • example1 - пример 2 27.08.2020
  • Код никоим образом не может создать такой вывод со стандартным RichTextBox. У вас есть this.richTextBox1.Text = повсюду. Каждый из этих вызовов полностью заменяет существующий текст ТОЛЬКО строкой для этого вызова. Фактический вывод кода, который вы разместили, будет иметь только самую последнюю строку скорости ветра и ничего больше. Кроме того, каждый раз, когда вы устанавливаете свойство .Text таким образом, вы полностью удаляете любое существующее форматирование (например, цвета!). Если у вас нет пользовательского элемента управления, унаследованного от RichTextBox и имеющего унаследованное и переопределенное свойство .Text? 27.08.2020
  • Вы умны :) Да, как я уже сказал, если я могу сделать это с помощью listBox, дайте мне знать, вывод на фото с listBox, но кто-то сказал мне покончить с listBox и вместо этого использовать richTextBox. Моя кодировка такая же, как и для listBox, просто заменено имя richTextbox. Я пробовал эти ссылки, но безуспешно :( 27.08.2020

Ответы:


1

Чтобы раскрасить элементы в списке, вам нужно переписать событие ListBox.DrawItem.

Просто скопируйте это в свой класс:

private readonly List<Color> colors = new List<Color>();
private readonly List<string> texts = new List<string>();
private void ListBox_Draw(object sender, DrawItemEventArgs e)
{
    if (e.Index == -1) return;
    e.DrawBackground();
    Graphics g = e.Graphics;
    //if the item is the maximum temperature item, draw with your color
    g.FillRectangle(new SolidBrush(colors[e.Index]), e.Bounds);
    g.DrawString(texts[e.Index], e.Font, new SolidBrush(e.ForeColor), e.Bounds);
    e.DrawFocusRectangle();
}

private void AddItem(string text, Color color)
{
    colors.Add(color);
    texts.Add(text);
    listBox1.Items.Add("");
}

И скопируйте это в функцию Form_Load:

listBox1.DrawMode = DrawMode.OwnerDrawVariable;//draw items manually
listBox1.DrawItem += ListBox_Draw;//subscribe to draw event

Как это использовать:

Вместо использования listBox1.Items.Add() вы просто используете AddItem(your_text, the_color_of_this_item)

Пример:

AddItem("Item 1", Color.Red);
AddItem("This is item 2", Color.White);
AddItem("Hello from item 3", Color.Blue);
AddItem("I am item 4", Color.Purple);
AddItem("is it item 5?", Color.Yellow);
AddItem("Im the last item :(", Color.Green);

А вот как выглядит пример:

Надеюсь это поможет!

27.08.2020
  • Итак, если я затем использую этот метод в своем цикле, как мне его написать? На основании приведенного выше кода? Также будет ли проще использовать listBox? 27.08.2020
  • Под списком вы подразумеваете, что вместо того, чтобы писать в richTextBox построчно, вы хотите добавлять элементы в список для каждой строки? Если да, хотите ли вы также раскрасить элемент в списке? 27.08.2020
  • Да, я уже добавил элементы в listBox, как и в этом выводе, но мне просто нужна раскрашивающая часть. Я хочу покрасить вывод в части цикла для максимальной температуры. 27.08.2020
  • @YumnaDesai Я только что обновил свой ответ. 27.08.2020
  • Большое спасибо, это работает для моего обычного текста (как я выбрал, чтобы показать на фотографии), но когда я вызываю массив, чтобы отобразить мои значения, он не будет работать там. Как я должен реализовать это там? AddItem(--------------------------------------------------------, Color.Red); AddItem(Город: , Color.Blue + arrCities[comboBox2.SelectedIndex]); PS, я отредактировал свой оригинальный пост с новой фотографией, потому что я не мог прикрепить ее сюда. 28.08.2020
  • Я не вижу новую фотографию, которую вы разместили. Все, что я вижу, это оригинал. 28.08.2020
  • Извините, сейчас показывает :/ 28.08.2020
  • Что такое АррСитис? Вы пытаетесь отобразить содержимое arrCities[comboBox2.SelectedIndex]? Если да, попробуйте это: AddItem("City: " + arrCities[comboBox2.SelectedIndex], Color.Blue); Кстати, поместите это --› ` вокруг кода, когда вы комментируете :) 28.08.2020
  • Большое спасибо, и это, наконец, работает! Даааа! Я действительно очень благодарен за вашу помощь, не могу отблагодарить вас в достаточной мере - я перепробовал все методы, но не смог :( . Я знаю, что я плохой кодер, я запомню это в следующий раз :D 28.08.2020
  • @YumnaDesai Нет проблем! Программирование быстро осваивается, поэтому вы быстро освоите его. :) 28.08.2020
  • Надеюсь, и быть таким же умным, как вы: D. Спасибо еще раз ::) 30.08.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..