/*-------------------------------------------------------------------------------------------
* 数字反馈参数面板
* 修改:杨斌 2012-03-13
* ----------------------------------------------------------------------------------------*/
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 Microsoft.Office.Interop.PowerPoint;
using GeneralLib;
namespace SunVoteARSPPT
{
public partial class PanelNumber : UserControl, IPanel
{
TagSet mTagSet = null;
public TagSet TagSet
{
get { return mTagSet; }
set
{
mTagSet = value;
ucResponsePara.TagSet = value;
ucKeypadPara.TagSet = value;
}
}
///
/// 是否填空题
/// 杨斌 2015-01-12
///
private bool IsTextInput = false;
public PanelNumber(bool isTextInput)
{
IsTextInput = isTextInput;
InitializeComponent();
FrmSystemSet.LanguageSetEvent += new FrmSystemSet.LanguageSetEventHander(FrmSystemSet_LanguageSetEvent);
FrmVoteBar.PanelEnabledEvent += new FrmVoteBar.PanelEnabledEventHander(FrmVoteBar_PanelEnabledEvent);
pnlScoreAnswer.Resize += pnlScoreAnswer_Resize;
//设置控件大小
//杨斌 2015-04-10
//ucResponsePara.HideVoteRate();
ucResponsePara.ShowSet(true, false);
ucKeypadPara.Top = ucResponsePara.Bottom + 6;
this.Height = ucKeypadPara.Bottom;
GlobalInfo.SysLanguage.SetLanguage(this.Name, this);
//杨斌 2012-06-11
switch (GlobalInfo.OEMLogo)
{
case OEMLogos.oem3eAnalyzer:
//ucKeypadPara.Visible = false;
//if (ucKeypadPara.cboSubmitMode.SelectedIndex != 0)
// ucKeypadPara.cboSubmitMode.SelectedIndex = 0;
//this.Height = ucResponsePara.Bottom;
break;
case OEMLogos.SunVote:
default:
break;
}
//杨斌 2012-06-25
ResizePanel();
}
void pnlScoreAnswer_Resize(object sender, EventArgs e)
{
int pos = pnlScoreAnswer.ClientSize.Width / 2;
int w = pos - 3;
lblScoreWrong.Left = pos;
//lblScoreWrong.Width = w;
nudScoreWrong.Left = pos;
//nudScoreWrong.Width = w;
}
public PanelNumber()
: this(false)
{
}
private void ResizePanel()
{
ucKeypadPara.cboOptionMode.SelectedIndex = -1;
//ucKeypadPara.cboOptionMode.Enabled = false;
//ucKeypadPara.cboOptionMode.Visible = false;
//ucKeypadPara.lblOptionMode.Visible = false;
//ucKeypadPara.gbxKeypadSet.Height = ucKeypadPara.cboModifyMode.Height + 30;
ucKeypadPara.ReSetSize(false, true, false, true);//杨斌 2015-02-27
}
void FrmVoteBar_PanelEnabledEvent(bool enabled)
{
this.Enabled = enabled;
}
void FrmSystemSet_LanguageSetEvent()
{
GlobalInfo.SysLanguage.SetLanguage(this.Name, this);
//修改标志 2012-04-17 赵丽 语言切换数据刷新不准确
string Unrestrict = GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Unrestricted", "不限");
cboDec.Text = TagSet.GetValue(TagKey.Number_DecimalFormat).Value.ToString() == ""
? Unrestrict : TagSet.GetValue(TagKey.Number_DecimalFormat).Value.ToString();
cboMin.Text = TagSet.GetValue(TagKey.Number_LowRange).Value.ToString() == ""
? Unrestrict : TagSet.GetValue(TagKey.Number_LowRange).Value.ToString();
cboMax.Text = TagSet.GetValue(TagKey.Number_HighRange).Value.ToString() == ""
? Unrestrict : TagSet.GetValue(TagKey.Number_HighRange).Value.ToString();
}
private void btnChartSet_Click(object sender, EventArgs e)
{
new FrmChartSet().ShowDialog();
}
///
/// 加载参数面板数据
///
public void LoadData()
{
ucResponsePara.LoadData();
ucKeypadPara.LoadData();
ResponseType type = ResponseTypeName.GetEnum(TagSet.GetValue(TagKey.ResponseType).Value);
IsTextInput = (type == ResponseType.Text);
txtCorrectAnswer.MaxLength = IsTextInput ? 255 : 10;//杨斌 2019-07-08
cboMax.SelectedIndex = 0;
cboMin.SelectedIndex = 0;
cboDec.SelectedIndex = 0;
string Unrestrict = GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Unrestricted", "不限");
string sMaxValue = TagSet.LoadValue(TagKey.Number_HighRange, "").Value;
string sMinValue = TagSet.LoadValue(TagKey.Number_LowRange, "").Value;
cboMax.Text = sMaxValue == "" ? Unrestrict : sMaxValue;
cboMin.Text = sMinValue == "" ? Unrestrict : sMinValue;
cboDec.Text = TagSet.LoadValue(TagKey.Number_DecimalFormat, "").Value;
ControlOper.TrySetNumericUpDownValue(nudScoreRight, TagSet.LoadValue(TagKey.Number_ScoreRight, nudScoreRight.Value).ToInt);
ControlOper.TrySetNumericUpDownValue(nudScoreWrong, TagSet.LoadValue(TagKey.Number_ScoreWrong, nudScoreWrong.Value).ToInt);
LoadCorrectAnswer();
}
private void SaveCorrectAnwser()
{
TagSet.SetValue(TagKey.Number_CorrectAnswer, txtCorrectAnswer.Text);
}
private void LoadCorrectAnswer()
{
txtCorrectAnswer.Text = TagSet.LoadValue(TagKey.Number_CorrectAnswer, "").Value;
}
private void PanelNumber_Load(object sender, EventArgs e)
{
GlobalInfo.SysLanguage.SetLanguage(this.Name, this);
}
private void txtCorrectAnswer_TextChanged(object sender, EventArgs e)
{
SaveCorrectAnwser();
Globals.SunVoteARSAddIn.PPTEdit.RefreshLabelEdit(DataLabelType.ANSWER);//杨斌 2012-03-15
//2012-10-08 赵丽 全角半角转换
int cpos = txtCorrectAnswer.SelectionStart;
txtCorrectAnswer.Text = PublicFunction.ToDBC(txtCorrectAnswer.Text);
this.txtCorrectAnswer.Select(this.txtCorrectAnswer.TextLength, 0);
txtCorrectAnswer.SelectionStart = cpos;
PPTOper.SetTableNumberRankCorrect(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);//杨斌 2015-01-16
}
private void nudScoreRight_ValueChanged(object sender, EventArgs e)
{
TagSet.SetValue(TagKey.Number_ScoreRight, nudScoreRight.Value);
}
private void nudScoreWrong_ValueChanged(object sender, EventArgs e)
{
TagSet.SetValue(TagKey.Number_ScoreWrong, nudScoreWrong.Value);
}
private void cboMax_TextChanged(object sender, EventArgs e)
{
//修改标志 2012-04-17 赵丽 语言切换数据刷新不准确
TagSet.SetValue(TagKey.Number_HighRange, cboMax.Text == GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Unrestricted", "不限") ? "" : cboMax.Text);
if (TagSet.GetValue(TagKey.Number_HighRange).Value.ToString() == "")
cboMax.Text = GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Unrestricted", "不限");
}
private void cboMin_TextChanged(object sender, EventArgs e)
{
//修改标志 2012-04-17 赵丽 语言切换数据刷新不准确
TagSet.SetValue(TagKey.Number_LowRange, cboMin.Text == GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Unrestricted", "不限") ? "" : cboMin.Text);
if (TagSet.GetValue(TagKey.Number_LowRange).Value.ToString() == "")
cboMin.Text = GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Unrestricted", "不限");
}
private void cboDec_SelectedIndexChanged(object sender, EventArgs e)
{
TagSet.SetValue(TagKey.Number_DecimalFormat, cboDec.Text == GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Unrestricted", "不限") ? "" : cboDec.Text);
if (TagSet.GetValue(TagKey.Number_DecimalFormat).Value.ToString() == "")
cboDec.Text = GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Unrestricted", "不限");
}
private void cboMax_KeyPress(object sender, KeyPressEventArgs e)
{
//阻止从键盘输入键
e.Handled = true;
//当输入为0-9的数字、小数点、回车和退格键时不阻止
//允许最小分数和最大分数只能是整数
if (e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == 13 || e.KeyChar == (char)8)
{
e.Handled = false;
}
if (e.KeyChar == '.')
{
for (int i = 0; i < cboMax.Text.Length; i++)
{
if (cboMax.Text.Substring(i, 1) == ".")
{
e.Handled = false;
break;
}
}
}//只允许有一个“.”
}
private void txtCorrectAnswer_KeyPress(object sender, KeyPressEventArgs e)
{
if (IsTextInput)//杨斌 2015-01-12
return;
try
{
// 特殊键, 不处理
if ((int)e.KeyChar <= 31) return;
if (txtCorrectAnswer.Text.Split('.')[1].Length > 3)
{
e.Handled = true;
return;
}
if (txtCorrectAnswer.Text.Split('.').Count() > 4)
{
e.Handled = true;
return;
}
}
catch { }
// 非数字键, 放弃该输入
if ((e.KeyChar != '.') && (e.KeyChar != '-'))
{
if (!char.IsDigit(e.KeyChar))
{
e.Handled = true;
return;
}
}
if (txtCorrectAnswer.Text.IndexOf('.') > 0)
{
if ((txtCorrectAnswer.Text.Length - txtCorrectAnswer.Text.IndexOf('.') - 1) == 4)
{
e.Handled = true;
return;
}
}
}
private void ucResponsePara_Load(object sender, EventArgs e)
{
}
}
}