CSFrameworkV6 - 设置公共字段文本框只读或禁用
目录
解决方案
对比优化后代码规范。
优化前代码参考
优化后代码参考
CommonTools.cs 添加方法
C# 全选
/// <summary>
/// 设置公共字段只读或禁用
/// </summary>
/// <param name="container">文本框容器</param>
/// <param name="isReadonly"></param>
/// <param name="isEnable"></param>
/// <param name="fields"></param>
public static void SetCommonEditorEnable(Control container, bool isReadonly, bool isEnable, params string[] fields)
{
if (container == null) return;
if (fields == null || fields.Length == 0)
{
fields = CommonFields.Fields.ToArray();
}
Control ctr; String fieldName;
for (int i = 0; i < container.Controls.Count; i++)
{
ctr = container.Controls[i];
//txt/chk:开发框架默认的组件命名前缀标识。
if (ctr.Name.StartsWith("txt") || ctr.Name.StartsWith("chk"))
{
fieldName = ctr.Name.Substring(3, ctr.Name.Length - 3);
if (fields.Any(a => a == fieldName))
{
ctr.Enabled = isEnable;
ctr.SetReadOnly(isReadonly);//扩展方法
}
}
}
}
DevExpressExtensions.cs 添加扩展方法
C# 全选
/// <summary>
/// 扩展方法:设置组件的ReadOnly属性值,支持.NET原生组件和DevExpress组件
/// </summary>
/// <param name="ctr">组件、控件</param>
/// <param name="isReadOnly">true:只读</param>
public static void SetReadOnly(this Control ctr, bool isReadOnly)
{
if (ctr is TextBoxBase text)//.NET原生组件
{
text.ReadOnly = isReadOnly;
}
else if (ctr is BaseEdit edit)//DevExpress组件
{
edit.ReadOnly = isReadOnly;
}
else//获取ReadOnly属性,赋值
{
var p = ctr.GetType().GetProperty("ReadOnly", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
if (p != null)
{
p.SetValue(ctr, isReadOnly);
}
}
}
公共字段常量定义
获取系统定义的公共字段
C# 全选
/// <summary>
/// 获取定义的公共字段清单
/// </summary>
public static List<String> Fields { get { return _Fields; } }
开发框架公共字段定义:
https://www.cscode.net/archive/newdoc/cs-210903193604490-27.html
参考:CommonFields.cs
若要定义其他公共字段,在CommonFields类添加 public const 常量。
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网