hej, Ifall färgen inte är skapad ifrån ett namn så får du ju inte ut ett namn när du använder ToString på den. Eftersom du inte får ett namn så kan du ju inte återskapa färgen med metoden FromName.System.ArgumentNullException
Jag får system.ArgumentNullException och förstår inte varför;
Här är min bas klass:
-----------------------------------------------------------------------------
public class BaseDynamicUC : System.Web.UI.UserControl
{
private string _myText;
private string _myColor;
public BaseDynamicUC(){ }
[Personalizable(), WebBrowsable()]
public string MyText
{
get { return _myText; }
set { _myText = value; }
}
[Personalizable(), WebBrowsable()]
public string MyColor
{
get { return _myColor; }
set { _myColor = value; }
}
}
----------------------------------------------------------------------------
Här är min klass som ärver från bas klassen.
public partial class ChangingUC : BaseDynamicUC, IWebEditable
{
protected void Page_Load(object sender, EventArgs e)
{
base.MyColor = Label1.ForeColor.ToString();
base.MyText = Label1.Text;
}
protected void Page_Prerender(object sender, EventArgs e)
{
Label1.Text = base.MyText;
Label1.ForeColor = Color.FromName(base.MyColor); ----> här får jag exception.
}
protected void Page_Init(object sender, EventArgs e)
{
.......
}
osv....
}
--------------------------------------------------------------------------------------
Jag måste säga när jag initierar _myColor="Red" då får jag inte felet men problemet är att det går inte längre ändra den , för att den ändras tillbaka till red igen.
System.ArgumentNullException was unhandled by user code
Message="Key cannot be null.\r\nParameter name: key"
Source="mscorlib"
ParamName="key"
StackTrace:
at System.Collections.Hashtable.get_Item(Object key)
at System.Drawing.ColorConverter.GetNamedColor(String name)
at System.Drawing.Color.FromName(String name)
at ChangingUC.Page_Prerender(Object sender, EventArgs e) in c:\IgnitoVirtualSite\IgnitoVirtualDirectory\Ignito\WebSiteWebPart\ChangingUC.ascx.cs:line 24
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnPreRender(EventArgs e)
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.WebControls.WebParts.WebPart.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)Sv: System.ArgumentNullException
Varför försöker du lagra färgen som en sträng? Lagra den som Color istället. Eller om du vill ha ett enkelt värde, använd ToArgb för att få färgvärdet som en int, och FromArgb för att återskapa en färg med samma färgvärde.