Files
lserp_cs_6.0/插件库/Lskj.Control/BaseUserControl.cs
T
2026-07-02 10:11:39 +00:00

178 lines
5.8 KiB
C#

/******************************
* 说明:自定义控件基类
* 创建人:龚宇超
* 创建日期:2017-08-04
* 修改人:
* 修改日期:
* 修改备注:
* 版本:1.0.0.0
******************************/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Lskj.Control.Model;
using Lskj.Business;
namespace Lskj.Control
{
/// <summary>
/// 基类控件
/// </summary>
public partial class BaseUserControl : UserControl
{
/// <summary>
/// Label填充值
/// </summary>
protected int PaddingLeft = 7;
/// <summary>
/// 一个字符占用宽度
/// </summary>
private int CharWidth = 22;
private float DefaultFontSize = 12;
/// <summary>
/// 只读颜色
/// </summary>
protected Color ReadOnlyLabelForceColor = Color.FromArgb(160, 160, 160);
/// <summary>
/// 必填颜色
/// </summary>
protected Color RequiredLabelForceColor = string.IsNullOrEmpty(SystemInfo.Instance.ControlRequiredColor) ? Color.Blue : ColorTranslator.FromHtml(SystemInfo.Instance.ControlRequiredColor);
/// <summary>
/// Label 默认颜色
/// </summary>
protected Color DefaultLabelForceColor = Color.Black;
/// <summary>
/// Gets or sets the is empty.
/// </summary>
/// <value>The is empty.</value>
public virtual bool IsEmpty()
{
return this.Model != null && this.Model.IsEmpty && string.IsNullOrWhiteSpace(this.EditText);
}
/// <summary>
/// <para>说明:数据是否修改</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-11-06 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <returns><c>true</c> if this instance is update; otherwise, <c>false</c>.</returns>
public virtual bool IsUpdate()
{
string UpdContrast = this.EditText;
switch (Model.FieldType)
{
case ControlType.LabDate:
case ControlType.LabDateTime:
case ControlType.LabDateTimeShort:
case ControlType.LabTime:
case ControlType.LabShortTime:
// 日期控件
LabelDateEdit dateEdit = this as LabelDateEdit;
UpdContrast = dateEdit.TextEdit.EditValue == null ? dateEdit.EditText : dateEdit.TextEdit.EditValue.ToString();
break;
}
return this.Model == null || this.Model.Text == null || !this.Model.Text.Equals(UpdContrast, StringComparison.OrdinalIgnoreCase);
}
/// <summary>
/// LebelText
/// </summary>
public virtual string LabelText { get; set; }
/// <summary>
/// Label、TextEdit Size
/// </summary>
/// <value>The size of the control.</value>
public virtual float FontSize { get; set; }
/// <summary>
/// 控件值
/// </summary>
public virtual string EditText { get; set; }
/// <summary>
/// 控件提示信息
/// </summary>
public virtual string NullText { get; set; }
/// <summary>
/// 只读控件是否可编辑
/// </summary>
/// <value>The color of the read only label.</value>
public virtual bool ReadOnly { get; set; }
/// <summary>
/// 必填文本颜色
/// </summary>
/// <value>The color of the required label.</value>
public virtual bool Required { get; set; }
/// <summary>
/// 控件Model
/// </summary>
public virtual ControlModel Model { get; set; }
/// <summary>
/// 控件背景颜色
/// </summary>
public virtual Color BackgroundColor { get; set; }
/// <summary>
/// 控件前景色
/// </summary>
public virtual Color ForeColor { get; set; }
/// <summary>
/// 控件内容是否加粗
/// </summary>
public virtual bool ContentBold { get; set; }
protected int GetCharWidth()
{
return Convert.ToInt32(CharWidth + (FontSize > DefaultFontSize ? FontSize - DefaultFontSize : 0));
}
/// <summary>
/// 设置了非中文的语言后,重新计算控件Label外层大小
/// </summary>
/// <param name="label"></param>
/// <param name="text"></param>
/// <param name="panel"></param>
protected void GetCharWidthMultilingual(Label label, string text, Panel panel)
{
//之前只对非中文模式生效,后发现GetCharWidth()方法计算不准确,就改成通用设置
//Business.Impl.LanguageTranslation.Translatable &&
if (text.Length > 0)
{
using (Graphics graphics = label.CreateGraphics())
{
// 使用TextRenderer而不是Graphics.MeasureString,以匹配Label的文本渲染方式
Size textSize = TextRenderer.MeasureText(graphics, text, label.Font);
panel.Width= textSize.Width;
}
}
}
public BaseUserControl()
{
InitializeComponent();
}
public void ModifyDefaultColors(Color color)
{
DefaultLabelForceColor = color;
}
public void ModifyAuditDefaultColors(Color color)
{
DefaultLabelForceColor = color;
ReadOnlyLabelForceColor = color;
}
}
}