首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的richtextbox不能改变颜色?

为什么我的richtextbox不能改变颜色?
EN

Stack Overflow用户
提问于 2020-06-24 03:37:07
回答 2查看 31关注 0票数 0

我尝试为我的子网计算器赋予richtextbox中的字母不同的颜色,但是richtextbox直到第26个字母才改变颜色。

它看起来怎么样:

代码语言:javascript
复制
        int iValueSm = trackBarSmMask.Value;
        rtbScroll.Text = "";
        rtbScroll.SelectionStart = rtbScroll.TextLength;
        rtbScroll.SelectionLength = 0;

        for (int i = 1; i <= iValueSm; i++)
        {
            rtbScroll.SelectionColor = Color.Blue;
            rtbScroll.AppendText("N");              

            if (i%8==0 && i != 32)
            {
                rtbScroll.Text = rtbScroll.Text + "."; 
            }
        }

        for (int i = iValueSm+1; i <= 32; i++)
        {
            rtbScroll.SelectionColor = Color.Red;
            rtbScroll.AppendText("H");              

            if (i % 8 == 0 && i != 32)
            {
                rtbScroll.Text = rtbScroll.Text + ".";
            }
        }

        labelAmountNetID.Text = "/" + iValueSm.ToString();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-24 05:06:28

嗯,可以有很多方法来处理这个问题,但这里有一个建议:

代码语言:javascript
复制
// Track bar definitions...
 private void SetTrackBarVals()
 {
     trackBar1.Minimum = 0;
     trackBar1.Maximum = 31;
 }

 private void trackBar1_Scroll(object sender, EventArgs e)
 {
     var counter = 0;
     var dotsCounter = 0;
     rtbScroll.Text = "";
     int iValueSm = trackBar1.Value + 1; // +1 because we start counting from 0

     for (int i = 1; i <= 32; i++)
     {
         if (counter > 0 && counter % 8 == 0)
         {
             // new octet
             rtbScroll.AppendText(".");
             dotsCounter++;
         }

         if (i > iValueSm)
         {
             // It is red
             rtbScroll.AppendText("H");
             rtbScroll.SelectionStart = (i - 1) + dotsCounter;
             rtbScroll.SelectionLength = 1 ;
             rtbScroll.SelectionColor = Color.Red;
         }
         else
         {
             rtbScroll.AppendText("N");
         }

         counter++;
     } 
 }
票数 1
EN

Stack Overflow用户

发布于 2020-06-24 04:37:14

每次设置.Text()属性时,都会将所有格式重置为黑白。

下面是我使用SelectedText编写它的方法:

代码语言:javascript
复制
private void Form1_Load(object sender, EventArgs e)
{
    updateRTB();
}

private void trackBarSmMask_ValueChanged(object sender, EventArgs e)
{
    updateRTB();
}

private void trackBarSmMask_Scroll(object sender, EventArgs e)
{
    updateRTB();
}

private void updateRTB()
{            
    rtbScroll.Text = "";
    rtbScroll.SelectionStart = 0;
    rtbScroll.SelectionLength = 0;
    int iValueSm = trackBarSmMask.Value;
    labelAmountNetID.Text = "/" + iValueSm.ToString();
    for (int i = 1; i <= 32; i++)
    {
        rtbScroll.SelectionColor = (i <= iValueSm) ? Color.Blue : Color.Red;
        rtbScroll.SelectedText = (i <= iValueSm) ? "N" : "H";
        if (i % 8 == 0 && i != 32)
        {
            rtbScroll.SelectionColor = Color.Black;
            rtbScroll.SelectedText = ".";
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62542488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档