如何在鼠标按下事件中更改两行的颜色?

时间:2014-01-31 16:37:50

标签: c# winforms

我有这段代码:

private void scrollLabel1_MouseDown(object sender, MouseEventArgs e)
        {
            for (int i = 0; i <  ScrollLabel._lines.Length; i++)
            {

            }
        }

_lines是string []

的类型

_lines格式是这样的:

第一个索引0包含一些文字:“你好” 索引1包含一行日期和时间:星期五,2014年1月31日18:31:12 +0200

然后索引2是空行空格:“”

然后索引3再一个文字:“嗨” 索引4再次是日期和时间:星期五,2014年1月31日18:31:30 +0200

os上有151行。

我想要做的是,当我点击(向下)任意一行,它是两行文字+日期和时间的一部分时,它会为这两行着色。

例如,我在这一行的任何地方点击了索引0的行,如果我点击索引2中为空的行,它将为索引0和索引1着色。

如果我点击索引3或4中的行,则着色线3和4。 如果我在第3行或第4行上单击第3行和第4行。

如果我在线上点击例如123或124颜色123和124。

我该怎么做?

ScrollLabel是我拖动到form1设计器的UserControl类型标签。并且它有指数选择事件或类似的东西。

1 个答案:

答案 0 :(得分:1)

如果i是所点击行的索引,请执行以下操作:

int j = ((int)(i / 3)) * 3;
colorLine(j);
colorLine(j + 1);
// colorLine(j + 2); // not needed, that line is an empty string

colorLine()方法应该着色为给定索引的行着色。它应该做这样的事情:

private void colorLine(int j)
{
    ScrollLabel._lines[j] // put here code to color the line
}

如何实际为线条着色完全取决于线条实际是什么。按实例后面的.(点)打开Intellisense,查看哪些方法和属性可用。一个将允许着色线。如果没有,着色是不可能的,整个尝试是不可能的。