using GeneralLib;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace SunVoteARSPPT
{
public partial class FrmKeypadCountSet : Form
{
public FrmKeypadCountSet()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
//参与者人数要小于可用键盘数
if (GlobalInfo.response.EnableList)
{
if (MessageBox.Show(GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "SaveKeypadCountSet", "当前已启用名单,该操作将禁用名单,是否继续?"), GlobalInfo.GetAppName(), MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.No)
return;
}
GlobalInfo.response.EnableList = false;
int personNum = Convert.ToInt32(nudMemberNumber.Value);
//int avilableNum=GetAvilableKeyNum(txtKeypadZone.Text);
if (txtKeypadZone.Text.Trim() != "")
{
int avilableNum = GlobalInfo.hardwareManage.GetKeyNum(txtKeypadZone.Text);
if (avilableNum == -1)
{
MessageBox.Show(GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Message1", "输入的范围格式有误,请重新输入"), GlobalInfo.GetAppName());
return;
}
if (avilableNum == -2)
{
MessageBox.Show(GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Message2", "输入的键盘范围超出键盘ID的范围"), GlobalInfo.GetAppName());
return;
}
if ((avilableNum < personNum) && (avilableNum != 0))
{
MessageBox.Show(GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Message3", "您设置的键盘数小于参与人数,请重新设置"), GlobalInfo.GetAppName());
return;
}
}
GlobalInfo.hardwareManage.PersonNum = personNum;
GlobalInfo.hardwareManage.RangeOfKey = txtKeypadZone.Text;
//存到幻灯片Tag值中
TagSet presTagSet = new TagSet();
presTagSet.Tags = Globals.SunVoteARSAddIn.PPTEdit.PPT.ActivePresentation.Tags;
presTagSet.SetValue(TagKey.Response_PersonNum, personNum);
presTagSet.SetValue(TagKey.Response_KeyRange, txtKeypadZone.Text);
//写配置文件 杨斌 2015-09-18
GlobalInfo.sysConfig.WriteSysConfig("Device", "PersonNum", nudMemberNumber.Value);
GlobalInfo.sysConfig.WriteSysConfig("Device", "RangeOfKey", txtKeypadZone.Text);
this.Close();
}
///
/// 键盘数量
/// 杨斌 2015-09-18
///
public static int PersonNum
{
get
{
return INIControl.GetInstances(GlobalInfo.SYSTEM_CONFIG_PATH).ReadInt("Device", "PersonNum", 100);
}
}
///
/// 键盘范围
/// 杨斌 2015-09-18
///
public static string RangeOfKey
{
get
{
return GlobalInfo.hardwareManage.RangeOfKey = INIControl.GetInstances(GlobalInfo.SYSTEM_CONFIG_PATH).ReadString("Device", "RangeOfKey", "1-100");
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void nudMemberNumber_ValueChanged(object sender, EventArgs e)
{
}
private void FrmKeypadCountSet_Load(object sender, EventArgs e)
{
GlobalInfo.SysLanguage.SetLanguage(this.Name, this);
nudMemberNumber.Value = GlobalInfo.hardwareManage.PersonNum;
txtKeypadZone.Text = GlobalInfo.hardwareManage.RangeOfKey;
}
///
/// 获得可用键盘数量
///
///
private int GetAvilableKeyNum(string rangeOfKey)
{
int sectionNum = 0;
//没有设置键盘有效范围
if (rangeOfKey == "") { return 0; }
string[] aryAvilableKey = null;
//检验格式是否正确
//if (!PublicFunction.IsMatchWith(rangeOfKey, @"^((\d)[,](\d))|((\d)[-](\d))"))
//{
// return -1;
//}
aryAvilableKey = rangeOfKey.Split(',');
for (int i = 0; i < aryAvilableKey.Length; i++)
{
if (aryAvilableKey[i].IndexOf('-') != -1)
{
int minKey = Convert.ToInt32(aryAvilableKey[i].Substring(0, 1));
int pos = aryAvilableKey[i].LastIndexOf('-') + 1;
int maxKey = Convert.ToInt32(aryAvilableKey[i].Substring(pos, aryAvilableKey[i].Length - pos));
if (minKey > maxKey)
{
sectionNum = -1;
break;
}
for (int j = minKey; j <= maxKey; j++)
{
sectionNum += 1;
}
}
else
{
sectionNum += 1;
}
}
return sectionNum;
}
private void txtKeypadZone_KeyPress(object sender, KeyPressEventArgs e)
{
//限制只能输入数字,,,-
//阻止从键盘输入键
e.Handled = true;
//当输入为0-9的数字、小数点、回车和退格键时不阻止
if (e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == ',' || e.KeyChar == ',' || e.KeyChar == '-' || e.KeyChar == 13 || e.KeyChar == (char)8)
{
if (e.KeyChar == ',')
e.KeyChar = ',';
e.Handled = false;
}
}
}
}