You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
3.9 KiB
C#

9 months ago
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;
namespace POSV.Component
{
[ToolboxItem(true)]
public partial class KeyboardExt : BaseUserControl
{
/// <summary>
/// 是否允许输入小数点
/// </summary>
bool allowDecimalSeparator = true;
public KeyboardExt()
{
InitializeComponent();
}
public bool AllowDecimalSeparator
{
get
{
return allowDecimalSeparator;
}
set
{
allowDecimalSeparator = value;
this.touchButtonX17.Lock = !this.allowDecimalSeparator;
this.touchButtonX17.SymbolSize = 10;
}
}
/// <summary>
/// 锁定
/// </summary>
public void LockCancel()
{
foreach (Control btn in this.layoutPanel.Controls)
{
if (btn is TouchButtonX && !"关闭".Equals(btn.Text))
{
TouchButtonX button = (TouchButtonX)btn;
button.SymbolSize = 10;
button.Lock = true;
}
}
this.touchButtonX17.Lock = !this.allowDecimalSeparator;
}
/// <summary>
/// 解除锁定
/// </summary>
public void UnLockCancel()
{
foreach (Control btn in this.layoutPanel.Controls)
{
if (btn is TouchButtonX && !"关闭".Equals(btn.Text))
{
TouchButtonX button = (TouchButtonX)btn;
button.SymbolSize = 10;
button.Lock = false;
}
}
this.touchButtonX17.Lock = !this.allowDecimalSeparator;
}
/// <summary>
/// 锁定
/// </summary>
public void Lock()
{
foreach (Control btn in this.layoutPanel.Controls)
{
if (btn is TouchButtonX)
{
TouchButtonX button = (TouchButtonX)btn;
button.SymbolSize = 10;
button.Lock = true;
}
}
this.touchButtonX17.Lock = !this.allowDecimalSeparator;
}
/// <summary>
/// 解除锁定
/// </summary>
public void UnLock()
{
foreach (Control btn in this.layoutPanel.Controls)
{
if (btn is TouchButtonX)
{
TouchButtonX button = (TouchButtonX)btn;
button.SymbolSize = 10;
button.Lock = false;
}
}
this.touchButtonX17.Lock = !this.allowDecimalSeparator;
}
public event KeyboardExtEventHandler KeyboardBefore;
protected virtual void OnKeyboardBefore(KeyboardExtEventArgs e)
{
KeyboardBefore?.Invoke(this, e);
}
public event KeyboardExtEventHandler KeyboardAfter;
protected virtual void OnKeyboardAfter(KeyboardExtEventArgs e)
{
KeyboardAfter?.Invoke(this, e);
}
private void OnTouchBeforeClick(object sender, TouchEventArgs e)
{
this.OnKeyboardBefore(new KeyboardExtEventArgs(e.Value));
}
private void OnTouchClick(object sender, TouchEventArgs e)
{
this.OnKeyboardAfter(new KeyboardExtEventArgs(e.Value));
}
}
public delegate void KeyboardExtEventHandler(object sender, KeyboardExtEventArgs e);
public class KeyboardExtEventArgs : EventArgs
{
public readonly string KeyCode;
public KeyboardExtEventArgs(string keyCode)
{
this.KeyCode = keyCode;
}
}
}