📄 frmmanualsmooth.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace MCA
{
public partial class FrmManualSmooth : Form
{
#region "私有变量"
internal FrmMain frmmain;
internal DataTable paratable;
#endregion
#region "构造函数"
/// <summary>
/// 构造函数
/// </summary>
public FrmManualSmooth()
{
InitializeComponent();
paratable = new DataTable("paras");
paratable.Columns.Add("C(i-1)", typeof(int));
paratable.Columns.Add("C(i)", typeof(int));
paratable.Columns.Add("C(i+1)", typeof(int));
DataRow row;
row = paratable.NewRow();
row["C(i-1)"] = 0;
row["C(i)"] = 0;
row["C(i+1)"] = 0;
paratable.Rows.Add(row);
gridPara.DataSource = paratable;
ParaGrid_CurrentCellChanged(this, new EventArgs());
}
#endregion
#region "完成参数输入"
/// <summary>
/// 完成参数输入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ibtOK_MouseUp(object sender, MouseEventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
#endregion
#region "初始化"
/// <summary>
/// 窗口载入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmManualSmooth_Load(object sender, EventArgs e)
{
this.Top = frmmain.Top + (frmmain.Height - this.Height) / 2;
this.Left = frmmain.Left + (frmmain.Width - this.Width) / 2;
}
#endregion
#region "取消"
/// <summary>
/// 取消参数输入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ibtCancel_MouseUp(object sender, MouseEventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
#endregion
#region "保存参数"
/// <summary>
/// 保存参数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ibtSave_MouseUp(object sender, MouseEventArgs e)
{
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
if (!saveFileDialog.FileName.ToLower().EndsWith(".ps"))
{
saveFileDialog.FileName += ".ps";
}
try
{
paratable.WriteXml(saveFileDialog.FileName, XmlWriteMode.WriteSchema);
MessageBox.Show("参数保存成功。", "信息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}
catch (Exception)
{
MessageBox.Show("参数保存失败。", "信息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
return;
}
}
}
#endregion
#region "读入参数"
/// <summary>
/// 读入参数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ibtOpen_MouseUp(object sender, MouseEventArgs e)
{
try
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
paratable.Columns.Clear();
paratable.Rows.Clear();
paratable.ReadXml(openFileDialog.FileName);
paratable.AcceptChanges();
MessageBox.Show("参数读入成功。", "信息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}
}
catch (Exception)
{
MessageBox.Show("参数读入失败。", "信息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
paratable.Columns.Add("C(i-1)", typeof(int));
paratable.Columns.Add("C(i)", typeof(int));
paratable.Columns.Add("C(i+1)", typeof(int));
DataRow row = paratable.NewRow(); ;
row["C(i-1)"] = 0;
row["C(i)"] = 0;
row["C(i+1)"] = 0;
paratable.Rows.Add(row);
paratable.AcceptChanges();
return;
}
finally
{
DataGridCell cell = gridPara.CurrentCell;
nUpDownvalue.Value = (int)gridPara[cell.RowNumber, cell.ColumnNumber];
}
}
#endregion
#region "获得参数值"
/// <summary>
/// 获得参数值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ParaGrid_CurrentCellChanged(object sender, EventArgs e)
{
DataGridCell cell = gridPara.CurrentCell;
nUpDownvalue.Value = (int)gridPara[cell.RowNumber, cell.ColumnNumber];
}
#endregion
#region "设置参数值"
/// <summary>
/// 设置参数值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void nUpDownvalue_ValueChanged(object sender, EventArgs e)
{
DataGridCell cell = gridPara.CurrentCell;
gridPara[cell.RowNumber, cell.ColumnNumber] = (int)nUpDownvalue.Value;
}
#endregion
#region "增加参数值"
/// <summary>
/// 增加参数值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ibtAdd_MouseUp(object sender, MouseEventArgs e)
{
int n = paratable.Columns.Count;
//保留原有数据信息
DataColumn[] column = new DataColumn[n + 2];
object[] row = paratable.Rows[0].ItemArray;
//生成新数据
column[(n - 1) / 2 + 1] = new DataColumn("C(i)", typeof(int));
for (int i = 0; i < (n - 1) / 2 + 1; i++)
{
column[(n - 1) / 2 + 1 - (i + 1)] = new DataColumn("C(i-" + Convert.ToString(i + 1) + ")", typeof(int));
column[(n - 1) / 2 + 1 + (i + 1)] = new DataColumn("C(i+" + Convert.ToString(i + 1) + ")", typeof(int));
}
//重设表
paratable.Columns.Clear();
paratable.Rows.Clear();
//加入新数据
paratable.Columns.AddRange(column);
DataRow newrow = paratable.NewRow();
newrow[0] = 0;
newrow[n + 1] = 0;
for (int i = 0; i < n; i++)
{
newrow[i + 1] = row[i];
}
paratable.Rows.Add(newrow);
paratable.AcceptChanges();
}
#endregion
#region "移动窗体"
private bool moveenable;
private int px;
private int py;
private void panelCaption_MouseDown(object sender, MouseEventArgs e)
{
moveenable = true;
//保存原始的坐标点,便于移动时计算相对距离
px = e.X;
py = e.Y;
}
private void panelCaption_MouseMove(object sender, MouseEventArgs e)
{
if (moveenable)
{
this.Left += e.X - px;
this.Top += e.Y - py;
this.Refresh();
frmmain.Refresh();
}
}
private void panelCaption_MouseUp(object sender, MouseEventArgs e)
{
moveenable = false;
}
#endregion
#region "删除参数值"
/// <summary>
/// 删除参数值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ibtDelect_MouseUp(object sender, MouseEventArgs e)
{
if (paratable.Columns.Count > 3)
{
paratable.Columns.RemoveAt(0);
paratable.Columns.RemoveAt(paratable.Columns.Count - 1);
paratable.AcceptChanges();
}
}
#endregion
#region "控制输入面板"
private void nUpDownvalue_GotFocus(object sender, EventArgs e)
{
inputPanel.Enabled = true;
}
private void nUpDownvalue_LostFocus(object sender, EventArgs e)
{
inputPanel.Enabled = false;
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -