如何在c#中创建属性的字符串类型选项值列表? [英] How to create property in c# with the string type option values list for property ?

查看:91
本文介绍了如何在c#中创建属性的字符串类型选项值列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建自定义服务器控件。在此控件中,已为此控件创建了属性。我想用选项值列表创建一个属性。这个值将出现在属性窗口中,下拉状态,任何控件的边框样式都会出现在属性窗口中,其中包含NotSet,None,Dotted,Solid等选项...



 命名空间 MessageControl 
{
[DefaultProperty( MessageText)]
[ToolboxData( < {0}:MessageControl runat = server > )]
public class MessageControl:CompositeControl
{

public static string 错误= < span class =code-string> 错误;
public static string 警告= 警告;
public static string 成功= 成功;
public static string 信息= 信息;
public static 列表messagetypeOptions = new 列表{ 错误 成功 信息 警告};

Literal ltrMessage = new Literal();

[Bindable( true )]
[类别( 外观)]
[DefaultValue( 自定义MessageControl)]
[Localizable( true )]
public string MessageText
{
get
{
EnsureChildControls();
return ltrMessage.Text!= null ? ltrMessage.Text: string .Empty;

}

set
{
ltrMessage.Text = ;

}
}
public enum 选项
{
错误,
成功,
信息,
警告
}

公开 虚拟选项MessageType
{
get ;
set ;
}




受保护 覆盖 void CreateChildControls()
{
Controls.Clear();
ltrMessage.ID = ltrMessageText;
this .Controls.Add(ltrMessage);
base .CreateChildControls();
}
受保护 覆盖 void OnPreRender(EventArgs e)
{
Page.ClientScript.RegisterClientScriptInclude( MessageControl ,Page.ClientScript.GetWebResourceUrl( this .GetType(), MessageControl.css.MessageControlCss.css));
HtmlGenericControl cssLink = new HtmlGenericControl( link );
cssLink.ID = MessageControlCssFile;
cssLink.Attributes.Add( href,Page.ClientScript.GetWebResourceUrl(GetType( ), MessageControl.css.MessageControlCss.css));
cssLink.Attributes.Add( type text / css);
cssLink.Attributes.Add( rel StyleSheet);
Page.Header.Controls.Add(cssLink);
base .OnPreRender(e);
}
受保护 覆盖 void Render(HtmlTextWriter writer)
{
try
{
string type = MessageType.ToString()。ToLower();
switch (type)
{
case error
writer.AddAttribute(HtmlTextWriterAttribute.Class, 错误);
break ;
case info
writer.AddAttribute(HtmlTextWriterAttribute.Class, info);
break ;
case success
writer.AddAttribute(HtmlTextWriterAttribute.Class, success);
break ;
case warning
writer.AddAttribute(HtmlTextWriterAttribute.Class, warning);
break ;
默认
writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, #FFF);
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderColor, #000);
break ;
}
writer.RenderBeginTag(HtmlTextWriterTag.Div);
ltrMessage.RenderControl(writer);
writer.RenderEndTag();
}
catch (例外情况)
{


}

}
}
}





先生我正在为消息创建自定义服务器控件。在这个服务器控件中,我创建了一个属性MessageType,并为此属性的值列表创建了枚举。

但我想要这个属性的字符串列表,当我使用它时,我将从下拉列表中选择控制。或者我可以为此属性代码分配值behinde(c#)。

但是通过使用枚举我无法在cod




  void  Main()
{
// 创建任何类的实例
无论wt = new Whatever();
// 显示默认属性
Console.WriteLine( {0},wt.MessageProperty);
// 为MessageProperty设置新值
wt.MessageProperty = MessageType.Error ;
// 显示新值
Console.WriteLine( {0},wt.MessageProperty);

}

// MessageType的枚举
public enum MessageType
{
错误,
成功,
问题
}

// 使用Enum的类作为属性
public class 无论
{
private MessageType mt;

public Whatever()
{
// 默认MessageProperty值
mt = MessageType.Success;
}

// 这里!
< span class =code-keyword> public MessageType MessageProperty
{
get {返回 mt; }
set {mt = value ; }
}
}


I am creating Custom server control. In this control Have created properties for this control. I want create one property with the options value list. This values will be appear in property widow with drop down like border style of any control is appear in property window with the options like NotSet, None, Dotted, Solid...

namespace MessageControl
{
[DefaultProperty("MessageText")]
[ToolboxData("<{0}:MessageControl  runat="server">")]
public class MessageControl : CompositeControl
{

public static string Error = "Error";
public static string Warning = "Warning";
public static string Success = "Success";
public static string Info = "Info";
public static List messagetypeOptions = new List { "Error","Success","Info","Warning"};

Literal ltrMessage = new Literal();

[Bindable(true)]
[Category("Appearance")]
[DefaultValue("Custom MessageControl")]
[Localizable(true)]
public string MessageText
{
get
{
EnsureChildControls();
return ltrMessage.Text != null ? ltrMessage.Text: string.Empty;

}

set
{
ltrMessage.Text = value;

}
}
public enum Options
{
Error,
Success,
Info,
Warning
}

public virtual Options MessageType
{
get;
set;
}




protected override void CreateChildControls()
{
Controls.Clear();
ltrMessage.ID = "ltrMessageText";
this.Controls.Add(ltrMessage);
base.CreateChildControls();
}
protected override void OnPreRender(EventArgs e)
{
Page.ClientScript.RegisterClientScriptInclude("MessageControl", Page.ClientScript.GetWebResourceUrl(this.GetType(), "MessageControl.css.MessageControlCss.css"));
HtmlGenericControl cssLink = new HtmlGenericControl("link");
cssLink.ID = "MessageControlCssFile";
cssLink.Attributes.Add("href",Page.ClientScript.GetWebResourceUrl(GetType(),"MessageControl.css.MessageControlCss.css"));
cssLink.Attributes.Add("type","text/css");
cssLink.Attributes.Add("rel","StyleSheet");
Page.Header.Controls.Add(cssLink);
base.OnPreRender(e);
}
protected override void Render(HtmlTextWriter writer)
{
try
{
string type= MessageType.ToString().ToLower();
switch(type)
{
case "error":
writer.AddAttribute(HtmlTextWriterAttribute.Class, "error");
break;
case "info":
writer.AddAttribute(HtmlTextWriterAttribute.Class, "info");
break;
case "success":
writer.AddAttribute(HtmlTextWriterAttribute.Class, "success");
break;
case "warning":
writer.AddAttribute(HtmlTextWriterAttribute.Class, "warning");
break;
default:
writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "#FFF");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderColor, "#000");
break;
}
writer.RenderBeginTag(HtmlTextWriterTag.Div);
ltrMessage.RenderControl(writer);
writer.RenderEndTag();
}
catch (Exception ex)
{


}

}
}
}



Sir I am creating a custom server control for message. In this server control i have created one property MessageType and have created enum for the list of values for this property.
But I want list of strings for this property which i will select from dropdown when I use this control. or I can assign the value for this property code behinde(c#).
But by using enum I cant assign string value as MessageType="Error" or MessageType="Success" in cod

解决方案

For example:

void Main()
{
        //create instance of Whatever class
	Whatever wt = new Whatever();
        //display default property
	Console.WriteLine("{0}", wt.MessageProperty);
	//set new value for MessageProperty
	wt.MessageProperty = MessageType.Error;
        //display new value
	Console.WriteLine("{0}", wt.MessageProperty);

}

// Enum for MessageType
public enum MessageType
{
	Error,
	Success,
	Question
}

// class which uses Enum as a property
public class Whatever
{
	private MessageType mt;
	
	public Whatever()
	{
		//default MessageProperty value 
		mt = MessageType.Success;
	}

	//here!
	public MessageType MessageProperty
	{
		get{ return mt; }
		set{ mt = value; }
	}
}


这篇关于如何在c#中创建属性的字符串类型选项值列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆