M
MattC
Hi,
I'm trying to extend the image button webcontrol to allow it to have an
on/off status rendering a different image for each state.
Problem is when i drag it into the design view it just says error creating
control.
Here's my code so far for the control:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace UIControls
{
/// <summary>
/// Summary description for OnOffImageButton.
/// </summary>
[Designer("UIControls"),
ToolboxData("<{0}:OnOffImageButton runat=server></{0}:OnOffImageButton>")]
public class OnOffImageButton : System.Web.UI.WebControls.ImageButton
{
private bool status;
private string onimageurl;
private string savedimage;
public OnOffImageButton(){}
[Category("Appearance"),
DefaultValue(""),
Description("Image to be displayed before clicking and when clicking off")]
public string OnImageURL
{
set
{
onimageurl = value;
}
get
{
return onimageurl;
}
}
public bool Status
{
get
{
return status;
}
}
public void Switch()
{
if(status)
{
TurnOff();
}
else
{
TurnOn();
}
status = !status;
}
public void TurnOff()
{
savedimage = base.ImageUrl;
base.ImageUrl = onimageurl;
}
public void TurnOn()
{
base.ImageUrl = savedimage;
}
public bool IsButtonOn()
{
return status;
}
protected override void OnPreRender(EventArgs e)
{
this.EnableViewState = true;
base.OnPreRender (e);
}
protected override void LoadViewState(object savedState)
{
onimageurl = (String)ViewState["onimageurl"];
status = (bool)ViewState["status"];
base.LoadViewState (savedState);
}
}
/// <summary>
/// Provides a moderate level of fidelity for the CategorizedCheckBoxList
control in the VS.net IDE.
/// </summary>
internal class OnOffImageButtonControlDesigner :
System.Web.UI.Design.ControlDesigner
{
/// <summary>
/// Provides easy access the properties set in the IDE.
/// </summary>
protected OnOffImageButton ooib;
/// <summary>
/// Initializes the designer
/// </summary>
/// <param name="component"></param>
public override void Initialize(IComponent component)
{
// Make sure that this designer is attached to a OnOffImageButton
if(component is OnOffImageButton)
{
base.Initialize (component);
ooib = (OnOffImageButton)component;
}
}
}
}
I'm trying to extend the image button webcontrol to allow it to have an
on/off status rendering a different image for each state.
Problem is when i drag it into the design view it just says error creating
control.
Here's my code so far for the control:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace UIControls
{
/// <summary>
/// Summary description for OnOffImageButton.
/// </summary>
[Designer("UIControls"),
ToolboxData("<{0}:OnOffImageButton runat=server></{0}:OnOffImageButton>")]
public class OnOffImageButton : System.Web.UI.WebControls.ImageButton
{
private bool status;
private string onimageurl;
private string savedimage;
public OnOffImageButton(){}
[Category("Appearance"),
DefaultValue(""),
Description("Image to be displayed before clicking and when clicking off")]
public string OnImageURL
{
set
{
onimageurl = value;
}
get
{
return onimageurl;
}
}
public bool Status
{
get
{
return status;
}
}
public void Switch()
{
if(status)
{
TurnOff();
}
else
{
TurnOn();
}
status = !status;
}
public void TurnOff()
{
savedimage = base.ImageUrl;
base.ImageUrl = onimageurl;
}
public void TurnOn()
{
base.ImageUrl = savedimage;
}
public bool IsButtonOn()
{
return status;
}
protected override void OnPreRender(EventArgs e)
{
this.EnableViewState = true;
base.OnPreRender (e);
}
protected override void LoadViewState(object savedState)
{
onimageurl = (String)ViewState["onimageurl"];
status = (bool)ViewState["status"];
base.LoadViewState (savedState);
}
}
/// <summary>
/// Provides a moderate level of fidelity for the CategorizedCheckBoxList
control in the VS.net IDE.
/// </summary>
internal class OnOffImageButtonControlDesigner :
System.Web.UI.Design.ControlDesigner
{
/// <summary>
/// Provides easy access the properties set in the IDE.
/// </summary>
protected OnOffImageButton ooib;
/// <summary>
/// Initializes the designer
/// </summary>
/// <param name="component"></param>
public override void Initialize(IComponent component)
{
// Make sure that this designer is attached to a OnOffImageButton
if(component is OnOffImageButton)
{
base.Initialize (component);
ooib = (OnOffImageButton)component;
}
}
}
}