Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我更改文本框的背景色时,文本框的前景色将重置,反之亦然(使用回发)_C#_Asp.net_Postback_Viewstate - Fatal编程技术网

C# 当我更改文本框的背景色时,文本框的前景色将重置,反之亦然(使用回发)

C# 当我更改文本框的背景色时,文本框的前景色将重置,反之亦然(使用回发),c#,asp.net,postback,viewstate,C#,Asp.net,Postback,Viewstate,我有一个带有多行文本模式的主文本框,还有两个带有彩色文本模式的文本框,一个用于更改文本颜色,另一个用于更改主文本框的背景色 问题是,如果在更改文本颜色后更改背景颜色,则文本颜色将被黑色覆盖(我猜这是默认颜色),或者如果在更改背景颜色后更改文本颜色,则背景颜色将被白色覆盖(我猜是默认颜色) 我知道textbox值是通过回发请求发布的,但我认为ViewState应该存储textbox的控件信息。如果我为主文本框显式启用ViewState,它仍然不起作用 无论如何我可以解决这个问题。但是,为什么会这样

我有一个带有多行文本模式的主文本框,还有两个带有彩色文本模式的文本框,一个用于更改文本颜色,另一个用于更改主文本框的背景色

问题是,如果在更改文本颜色后更改背景颜色,则文本颜色将被黑色覆盖(我猜这是默认颜色),或者如果在更改背景颜色后更改文本颜色,则背景颜色将被白色覆盖(我猜是默认颜色)

我知道textbox值是通过回发请求发布的,但我认为ViewState应该存储textbox的控件信息。如果我为主文本框显式启用ViewState,它仍然不起作用

无论如何我可以解决这个问题。但是,为什么会这样呢

更新

我已检查此资源:

当我使用单选按钮时,它会工作。如果我使用文本框作为颜色选择器,那么它不起作用

当与设置为颜色的TextMode一起使用时,这是textbox的错误吗

以下是主文本框:

    <asp:TextBox ID="txt_Editor"
        TextMode="MultiLine"
        Columns="50" Rows="10"
        EnableViewState="true"
        runat="server"></asp:TextBox>

您需要在隐藏字段或视图状态中捕获颜色,并在回发后进行检查。

明白了,问题与文本框或视图状态无关,它是color.FromName,如果您改用ColorTranslator.FromHtml,它工作得很好,因此我认为从color.FromName返回的颜色确实无效

真是一只奇怪的虫子


编辑:好的,所以我检查了结果颜色,它不是一个真正的bug,FromName只能用于命名颜色红色、蓝色等,如果你这样使用它,它会创建一种具有这些属性值的颜色,例如{Name=6bea55,ARGB=0,0,0,0},正如您所看到的,名称前面有一个前缀,RGB值都是零,因为它无法解析它,但是如果使用转换器,它会创建一种类似于{name=ff6bea55,ARGB=255,107,234,85}的颜色,因此,HTML渲染器使用Name属性填充style属性的值,但是ViewState存储ARGB值,当您进行回发时,它会恢复这些ARGB值,因此颜色会丢失。

我的主要问题是:它为什么会这样做?它应该可以工作,这个例子正是这样做的,并且有效:我已经检查过了。不完全是这样,如果我一直只更改文本颜色或背景颜色,它就可以工作了。但是,如果我先更改文本颜色,然后更改背景颜色,则文本颜色将重置,反之亦然。示例同时更改背景颜色和背景颜色,看不出区别,可能我太累了:D@Gusman你是对的,这是一样的,当我使用单选按钮时它工作,但它不与textbox textmode=color一起工作。我100%确定它是相同的代码。如果删除textmode=color并插入纯文本,它会工作吗?非常有趣的是,它会重置另一个:np,我很好奇为什么会发生这种情况:我可以问一下您是如何查看此代码的:Name=6bea55,ARGB=0,0,0,0刚刚暂停了调试器,将光标放在变量上,它将至少在VS2013中显示这些值
    <div class="text-muted">Color Options:</div>
    Text-color:
    <asp:TextBox ID="txt_TextColor" 
        AutoPostBack="true" TextMode="Color"
        Text="#000000" runat="server" OnTextChanged="txt_TextColor_TextChanged">
    </asp:TextBox>

    Background-color:
    <asp:TextBox ID="txt_BackColor"
        TextMode="Color" AutoPostBack="true"
        Text="#FFFFFF" runat="server" OnTextChanged="txt_BackColor_TextChanged"></asp:TextBox>
    protected void txt_TextColor_TextChanged(object sender, EventArgs e)
    {
        txt_Editor.ForeColor = Color.FromName(txt_TextColor.Text);
    }

    protected void txt_BackColor_TextChanged(object sender, EventArgs e)
    {
        txt_Editor.BackColor = Color.FromName(txt_BackColor.Text);
    }