110,566
社区成员
发帖
与我相关
我的任务
分享
//初始化表格
private void init()
{
SplashScreen.BeginDisplay();
myDgvNoAdjInPara.AutoGenerateColumns = false;
myDgvNoAdjInPara.Controls.Add(paraNumericUpDown);
myDgvNoAdjInPara.Controls.Add(paraComboBox);
myDgvNoAdjInPara.Controls.Add(paraRadioButton);
paraControl.Visible = false;
paraNumericUpDown.Visible = false;
paraComboBox.Visible = false;
paraRadioButton.Visible = false;
paraNumericUpDown.ValueChanged += frmTestItem_ValueChanged;
paraComboBox.SelectedIndexChanged += frmTestItem_SelectedIndexChanged;
paraRadioButton.CheckedChanged += frmTestItem_CheckedChanged;
}
//点击一个单元格,显示不同的编辑器
private void myDgvNoAdjInPara_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataGridView dgv = sender as DataGridView;
if (e.RowIndex < 0) return;
if (dgv.Rows[e.RowIndex].Cells["colId"].Value == null) return;
paraControl.Visible = false;
int id = Convert.ToInt32(dgv.Rows[e.RowIndex].Cells["colId"].Value);
Rectangle rect;
if (dgv.Columns[e.ColumnIndex].HeaderText == "参数值")
{
var itemPara = TestItemEquipIOParaService.SelectById(id);
if (itemPara == null || itemPara.ParaCode == null) return;
var equipPara = EquipParaService.SelectByCode(itemPara.ParaCode);
if (equipPara == null || equipPara.ParaValueType == null) return;
getParaControl((int)equipPara.ParaValueType, equipPara.RefValue, dgv.CurrentCell.Value.ToString());
//get the rectangle of the current cell in the datagridview
rect =
dgv.GetCellDisplayRectangle(dgv.CurrentCell.ColumnIndex, dgv.CurrentCell.RowIndex, false);
//show the control in the rectangle
paraControl.Top = rect.Top;
paraControl.Left = rect.Left;
paraControl.Height = rect.Height;
paraControl.Width = rect.Width;
paraControl.Visible = true;
}
}
//获得不同的编辑器
private void getParaControl(int paraVauleType,string refValue,string currentValue)
{
paraControl = new Control();
switch (paraVauleType)
{
case 0:
decimal inc;
decimal value;
try
{
if (string.IsNullOrEmpty(refValue)) inc = 1;
else inc = Convert.ToDecimal(refValue);
if (string.IsNullOrEmpty(currentValue)) value = 0;
else value = Convert.ToDecimal(currentValue);
paraNumericUpDown.Increment = inc;
paraNumericUpDown.Value = value;
}
catch (Exception ex)
{
log.Debug(String.Format("{0}\t{1}", ex.Source, ex.Message));
return;
}
paraControl = paraNumericUpDown;
if (paraNumericUpDown.Value!=null)
paraControl.Text = paraNumericUpDown.Value.ToString();
break;
default:
break;
}
}
//NumericUpDown值变化事件函数
private void frmTestItem_ValueChanged(object sender, EventArgs e)
{
if (paraControl is NumericUpDown)
myDgvNoAdjInPara.CurrentCell.Value = ((NumericUpDown)paraControl).Value;
}