为与左侧字符空间相关的文本字段的背景着色

时间:2015-02-13 08:45:37

标签: c# textbox background-color

有没有人知道是否可以根据剩下的字符空间为场地的背景着色? 你从一个空场开始,整个背景,例如浅蓝色。现在当你输入字符时,浅蓝色部分会减少,所以当背景中没有浅蓝色时,你知道你已经达到了最大字符数。

我使用C#作为我的编程语言。 我希望并非常感谢任何帮助。 在此先感谢,Erik

2 个答案:

答案 0 :(得分:0)

这样,你在WPF中更改了背景),在winForm中是backColor):

textBox1.Background = Brushes.Blue;

你还需要在xaml中设置MaxLenght属性(我推测你正在使用wpf)。

对于maxLenght剩余部分的背景,我认为你必须自定义文本框的类,并在这里做一些原始工作。

答案 1 :(得分:0)

我更喜欢通过javascript来做到这一点,以避免回发。 此示例在用户书写时淡化文本框的背景颜色,并在删除任何字符时使颜色变暗。

标记:

 <input type="text" id="txt1" onkeyup="setBoxColor(this,20);" maxlength="10"/>

使用Javascript:

//Define startcolor for textbox.
    var startColor = "rgb(0, 148, 255)";

    $(function () {
        $("#txt1").css("background-color", startColor);
    });

    function setBoxColor(ctrl, light)
    {
        if (ctrl.value.length == 0)
        {
            $("#" + ctrl.id).css("background-color", startColor);
            return;
        }

        var color = startColor; 
        color = color.replace(/[^0-9,]+/g, "");
        var red = color.split(",")[0];
        var gre = color.split(",")[1];
        var blu = color.split(",")[2];

        $("#" + ctrl.id).css("background-color", Lighthen(red, gre, blu, light * ctrl.value.length));
    }


    function Lighthen(red, green, blue, light) {
        var max = ([red, green, blue].sort(function (l, r) { return r - l }))[0];
        var multiplier = max;
        multiplier = (multiplier / 255) + light;
        if (multiplier < 1.5) multiplier = 1.9;

        if ((max * multiplier) > 255) {
            multiplier = (multiplier / 230) + 1;
        }

        var r = Math.round(red * multiplier);
        var g = Math.round(green * multiplier);
        var b = Math.round(blue * multiplier);

        if (r > 255) r = 255;
        if (g > 255) g = 255;
        if (b > 255) b = 255;

        return "rgb(" + r + "," + g + "," + b + ")";
    }