如何通过 属性 设置按钮的启用状态
How to set enabled state of button via property
我有一个充满按钮的用户控件,我想做的是依次告诉每个按钮是否禁用,所以我使用了 public enumProperty 来允许我 dertmin按钮。
public enum iandENUM
{
Personal =0,
Property = 1,
iande = 2,
Vechiles = 3
}
public iandENUM actvieButton { get; set; }
<telerik:RadButton ID="rbPersonalDetails" runat="server" CssClass="btn btn-info" Text="Property Details">
<ContentTemplate>
<i class="fa fa-user" style="color: #5bc0de;"></i>Personal Details
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbPropertyDetails" runat="server" CssClass="btn btn-info" Text="Property Details" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-home" style="color: #5bc0de;"></i>Property Details
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbVechicleDetails" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default" btn-defaultText="Vechicle Details">
<ContentTemplate>
<i class="fa fa-car" style="color: #5bc0de;"></i>Vechicle Details
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbincomee" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-gbp" style="color: #5bc0de;"></i>Income & Expenditures
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbPensions" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-bank" style="color: #5bc0de;"></i>Pensions
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbMeetings" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-calendar" style="color: #5bc0de;"></i>Meetings
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbOtherAssets" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-share" style="color: #5bc0de;"></i>Other Assets
</ContentTemplate>
</telerik:RadButton>
这是 class 代码,我的主要问题是如何给出 属性 值,以便我可以根据 iandeEnum
设置活动按钮
protected void Page_Load(object sender, EventArgs e)
{
if(actvieButton==casesToolbar.iandENUM.Personal)
{
}
}
private bool _enabledState;
public bool EnabledState
{
get { return _enabledState; }
set {
rbMeetings.Enabled = _enabledState;
rbOtherAssets.Enabled = _enabledState;
rbPensions.Enabled = _enabledState;
rbPropertyDetails.Enabled = _enabledState;
rbVechicleDetails.Enabled = _enabledState;
rbincomee.Enabled = _enabledState;
}
}
public enum iandENUM
{
Personal =0,
Property = 1,
iande = 2,
Vechiles = 3
}
public iandENUM actvieButton { get; set; }
public void disableSectionsTillSave(Boolean isEnabled)
{
try
{
rbMeetings.Enabled = isEnabled;
rbOtherAssets.Enabled = isEnabled;
rbPensions.Enabled = isEnabled;
rbPropertyDetails.Enabled = isEnabled;
rbVechicleDetails.Enabled = isEnabled;
rbincomee.Enabled = isEnabled;
}
catch (Exception ex)
{
string inner = string.Empty;
if (ex.InnerException != null)
{
inner = ex.InnerException.ToString();
}
logger.Error("Error in disableSectionsTillSave function edit modules cases " + ex.ToString() + " " + inner);
}
}
也许只有我一个人,但我看到了对 属性 用法的误解。这里的错误是您没有在 setter 中设置 属性 值。如果您需要访问 属性 的字段,您可以这样写 属性:
private bool _enabledState;
public bool EnabledState
{
get { return _enabledState; }
set { _enabledState = value; }
}
但是,现在这种声明和使用 属性 的方式已经过时。更好的方法是通过所谓的 auto-属性:
public bool EnabledState { get; set; }
在此 MSDN article
中阅读有关属性的更多信息
稍后您可以通过访问 属性 本身来访问 属性 值 - 即 EnabledState
- 而不是 属性 支持字段 - 即 _enabledProperty
在这种情况下。
您通过将 EnabledState
分配给它们的 Enabled
属性:
来设置按钮的启用状态,在代码的其他地方
rbMeetings.Enabled = EnabledState;
rbOtherAssets.Enabled = EnabledState;
rbPensions.Enabled = EnabledState;
rbPropertyDetails.Enabled = EnabledState;
rbVechicleDetails.Enabled = EnabledState;
rbincomee.Enabled = EnabledState;
遗憾的是,如果没有关于业务逻辑的更多详细信息,我无法就何时以及如何确定 EnabledState
向您提供建议。显然它应该在您设置按钮之前发生。一种方法是 运行 在 Page_Load
中确定 EnabledState
的逻辑,然后在 Page_PreRender
中设置按钮。
当 ActiveButton
属性 的值被修改时,您可以启用适当的按钮:
public enum MyEnum
{
Val1,
Val2,
Val3
}
private MyEnum m_ActiveButton = MyEnum.Val1;
public MyEnum ActiveButton
{
get
{
return m_ActiveButton;
}
set
{
m_ActiveButton= value;
btn1.Enabled = false;
btn2.Enabled = false;
btn3.Enabled = false;
switch (value)
{
case MyEnum.Val1:
{
btn1.Enabled = true;
break;
}
case MyEnum.Val2:
{
btn2.Enabled = true;
break;
}
case MyEnum.Val3:
{
btn3.Enabled = true;
break;
}
}
}
}
也可以在标记中使用属性,设置初始状态:
<userCtl:WebCtl1 runat="server" ActiveButton="Val3" />
我有一个充满按钮的用户控件,我想做的是依次告诉每个按钮是否禁用,所以我使用了 public enumProperty 来允许我 dertmin按钮。
public enum iandENUM
{
Personal =0,
Property = 1,
iande = 2,
Vechiles = 3
}
public iandENUM actvieButton { get; set; }
<telerik:RadButton ID="rbPersonalDetails" runat="server" CssClass="btn btn-info" Text="Property Details">
<ContentTemplate>
<i class="fa fa-user" style="color: #5bc0de;"></i>Personal Details
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbPropertyDetails" runat="server" CssClass="btn btn-info" Text="Property Details" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-home" style="color: #5bc0de;"></i>Property Details
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbVechicleDetails" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default" btn-defaultText="Vechicle Details">
<ContentTemplate>
<i class="fa fa-car" style="color: #5bc0de;"></i>Vechicle Details
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbincomee" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-gbp" style="color: #5bc0de;"></i>Income & Expenditures
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbPensions" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-bank" style="color: #5bc0de;"></i>Pensions
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbMeetings" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-calendar" style="color: #5bc0de;"></i>Meetings
</ContentTemplate>
</telerik:RadButton>
<telerik:RadButton ID="rbOtherAssets" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">
<ContentTemplate>
<i class="fa fa-share" style="color: #5bc0de;"></i>Other Assets
</ContentTemplate>
</telerik:RadButton>
这是 class 代码,我的主要问题是如何给出 属性 值,以便我可以根据 iandeEnum
设置活动按钮 protected void Page_Load(object sender, EventArgs e)
{
if(actvieButton==casesToolbar.iandENUM.Personal)
{
}
}
private bool _enabledState;
public bool EnabledState
{
get { return _enabledState; }
set {
rbMeetings.Enabled = _enabledState;
rbOtherAssets.Enabled = _enabledState;
rbPensions.Enabled = _enabledState;
rbPropertyDetails.Enabled = _enabledState;
rbVechicleDetails.Enabled = _enabledState;
rbincomee.Enabled = _enabledState;
}
}
public enum iandENUM
{
Personal =0,
Property = 1,
iande = 2,
Vechiles = 3
}
public iandENUM actvieButton { get; set; }
public void disableSectionsTillSave(Boolean isEnabled)
{
try
{
rbMeetings.Enabled = isEnabled;
rbOtherAssets.Enabled = isEnabled;
rbPensions.Enabled = isEnabled;
rbPropertyDetails.Enabled = isEnabled;
rbVechicleDetails.Enabled = isEnabled;
rbincomee.Enabled = isEnabled;
}
catch (Exception ex)
{
string inner = string.Empty;
if (ex.InnerException != null)
{
inner = ex.InnerException.ToString();
}
logger.Error("Error in disableSectionsTillSave function edit modules cases " + ex.ToString() + " " + inner);
}
}
也许只有我一个人,但我看到了对 属性 用法的误解。这里的错误是您没有在 setter 中设置 属性 值。如果您需要访问 属性 的字段,您可以这样写 属性:
private bool _enabledState;
public bool EnabledState
{
get { return _enabledState; }
set { _enabledState = value; }
}
但是,现在这种声明和使用 属性 的方式已经过时。更好的方法是通过所谓的 auto-属性:
public bool EnabledState { get; set; }
在此 MSDN article
中阅读有关属性的更多信息稍后您可以通过访问 属性 本身来访问 属性 值 - 即 EnabledState
- 而不是 属性 支持字段 - 即 _enabledProperty
在这种情况下。
您通过将 EnabledState
分配给它们的 Enabled
属性:
rbMeetings.Enabled = EnabledState;
rbOtherAssets.Enabled = EnabledState;
rbPensions.Enabled = EnabledState;
rbPropertyDetails.Enabled = EnabledState;
rbVechicleDetails.Enabled = EnabledState;
rbincomee.Enabled = EnabledState;
遗憾的是,如果没有关于业务逻辑的更多详细信息,我无法就何时以及如何确定 EnabledState
向您提供建议。显然它应该在您设置按钮之前发生。一种方法是 运行 在 Page_Load
中确定 EnabledState
的逻辑,然后在 Page_PreRender
中设置按钮。
当 ActiveButton
属性 的值被修改时,您可以启用适当的按钮:
public enum MyEnum
{
Val1,
Val2,
Val3
}
private MyEnum m_ActiveButton = MyEnum.Val1;
public MyEnum ActiveButton
{
get
{
return m_ActiveButton;
}
set
{
m_ActiveButton= value;
btn1.Enabled = false;
btn2.Enabled = false;
btn3.Enabled = false;
switch (value)
{
case MyEnum.Val1:
{
btn1.Enabled = true;
break;
}
case MyEnum.Val2:
{
btn2.Enabled = true;
break;
}
case MyEnum.Val3:
{
btn3.Enabled = true;
break;
}
}
}
}
也可以在标记中使用属性,设置初始状态:
<userCtl:WebCtl1 runat="server" ActiveButton="Val3" />