【问题标题】:How do I highlight a string that is an attribute of an object?如何突出显示作为对象属性的字符串?
【发布时间】:2019-08-28 01:38:00
【问题描述】:

我有一个具有四个属性(颜色、型号、里程、年份)的汽车类,我从四个文本框中获取这些属性。然后我将这些属性分配给汽车类的一个新对象,并将这个新对象分配给汽车类中的一个对象数组。我需要能够突出显示里程属性,但我在这样的字符串生成器中输出,如下所示:

private void button1_Click(object sender, EventArgs e)
{
    carColourIN = colour.Text;
    carModelIN = model.Text;
    carMileageIN = Double.Parse(mileage.Text);
    carYearIN = Int32.Parse(year.Text);

    Car user = new Car(carColourIN, carModelIN, carMileageIN, carYearIN);

    Car.vehicles[i] = user;
    StringBuilder sb = new StringBuilder();


    sb.Append("Colour: " + Car.vehicles[i].CarColour + "\nModel: " + Car.vehicles[i].CarModel + "\nMileage: " + Car.vehicles[i].CarMileage
                    + "\nYear: " + Car.vehicles[i].CarYear + "\n\n");

    displayLabel.Text = sb.ToString();
    i++;
}

如何在附加的字符串构建器中突出显示里程属性,以便该特定文本部分的背景是不同的颜色或实际文本是。

【问题讨论】:

  • 您需要使用 RichTextBox 而不是 Label 才能使部分文本着色。
  • 如果我使用 RichTextBox,如果我像这样将属性添加到字符串生成器中,我该如何高亮显示该属性:Car.vehicles[i].CarMileage
  • 或者你可以自己绘制标签。
  • @dusk42 - 在分配.Text 属性后,您可以根据位置设置颜色。这有点烦人。没有可以应用的标记。
  • 我认为你可以这样做 displayLabel.BackColor = System.Drawing.Color.Green 或 Car.vehicles[i].CarColour;

标签: c# winforms stringbuilder


【解决方案1】:

我看到了一些不同的选择。这个问题的答案Multiple Colors in C# Label解释了前两个选项。

选项 1: 不要使用您的 StringBuilder,而是使用富文本框。然后遍历属性并使用提供的链接中的rtb_AppendText 函数一次添加一个。

选项 2: 创建自定义标签控件并覆盖 OnPaint 方法。在 OnPaint 方法中,您可以使用 MeasureText 和 DrawString 来实现您的目标。

选项 3:创建一个包含四个不同标签的用户控件,这样您就可以控制每个标签的颜色/字体/外观,从长远来看,您可以获得最大的灵活性。 p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多