主窗体常用
记录一些常用到的功能
标题添加版本号
this.Text += " V" + Application.ProductVersion;//添加版本号
跳转新的界面
Form1 l_FormSetting = new Form1();
l_FormSetting.ShowDialog();//跳转到设置界面
禁止调整大小
FormBorderStyle属性 指示窗体的边框和标题栏的外观和行为
None 无边框。
FixedSingle 固定的单行边框。
Fixed3D 固定的三维边框。
FixedDialog 固定的对话框样式的粗边框。
Sizable 可调整大小的边框。
FixedToolWindow 不可调整大小的工具窗口边框。工具窗口不会显示在任务栏中也不会显示在当用户按 Alt+Tab 时出现的窗口中。尽管指定 FixedToolWindow 的窗体通常不显示在任务栏中,还是必须确保 ShowInTaskbar 属性设置为 false,因为其默认值为 true。
SizableToolWindow 可调整大小的工具窗口边框。工具窗口不会显示在任务栏中也不会显示在当用户按 Alt+Tab 时出现的窗口中。
最大/小化
Form.MaximizeBox 属性
如果为 true,则显示窗体的 “最大化”按钮;否则为 false。 默认值为 true。
“最大化”按钮使用户得以将窗口放大为全屏大小。 若要显示 “最大化”按钮,还必须将窗体的 FormBorderStyle 属性设置为: FormBorderStyle.FixedSingle、 FormBorderStyle.Sizable、 FormBorderStyle.Fixed3D 或 FormBorderStyle.FixedDialog。
说明:
在运行时最大化窗体会生成 Resize 事件。 WindowState 属性反映窗口的当前状态。 如果将 WindowState 属性设置为 FormWindowState.Maximized,则窗体是最大化的,而不论对于 MaximizeBox 和 FormBorderStyle 属性什么设置生效。
设置初始的窗体大小
Form.WindowState 属性
图标
Icon添加*.ico文件,找图片在线转Iico
检测按键发现无效注意这个属性
KeyPreview属性
当此属性设置为 true 时,窗体将接收所有 KeyPress、 KeyDown 和 KeyUp 事件。 在窗体的事件处理程序处理完该击键后,然后将该击键分配给具有焦点的控件。例如,如果 KeyPreview 属性设置为 true,而且当前选定的控件是 TextBox,则在窗体的事件处理程序处理了击键后, TextBox 控件将接收所按的键。 要仅在窗体级别处理键盘事件并且不允许控件接收键盘事件,请将窗体的 KeyPress 事件处理程序中的 KeyPressEventArgs.Handled 属性设置为 true。
窗体初始出现的位置
Form.StartPosition 属性
自定义窗体按键处理
想要改变原有的按键处理,比如dgv改原本的回车向下跳为回车向右一格跳
Form.ProcessCmdKey 方法
返回值
类型: System.Boolean
如果控件处理并使用击键,则为 true;否则为 false,以允许进一步处理。
备注:
ProcessCmdKey 方法重写基 ContainerControl.ProcessCmdKey 实现,用于提供对主菜单命令键和 MDI 快捷键的附加处理。
/// <summary>
/// ProcessCmdKey重写处理消息
/// </summary>
/// <param name="msg"></param>
/// <param name="keyData"></param>
/// <returns></returns>
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Enter && (this.dataGridView1.Focused == true || this.dataGridView1.IsCurrentCellInEditMode == true))
{
int iRow = this.dataGridView1.CurrentRow.Index;
int iCol = this.dataGridView1.CurrentCell.ColumnIndex;
int iLastTrueRowIndex = 0;//最后一行的索引
List<bool> LTbolDGVCheckBox = new List<bool>(); //dgv选择框
//
if (iCol == 2 && iRow == iLastTrueRowIndex)//编辑到了最后一行
{
if (l_bolIsSingleThreadRun == true)
{ MessageBox.Show("当前线程正在运行", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); }
if (l_bolIsCtrlSource == true)
{ MessageBox.Show("正在进行控源", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); }
if (l_bolIsSingleThreadRun == false && l_bolIsCtrlSource == false)
{
//通信
}
}
}
//继续原来base.ProcessCmdKey中的处理
return base.ProcessCmdKey(ref msg, keyData);
}
界面加载
Form1_Load
按键KeyDown
Form1_KeyDown
注意KeyPreview
主界面重启
主要是在一些配置参数有变化时,重启更新这些配置
#region ReOpenSoft重启软件
/// <summary>
/// 功能描述:重启软件
/// 输入参数:无
/// 输出参数:无
/// 返 回 值:无
/// 修改时间:2021.11.14
/// </summary>
public void ReOpenSoft()
{
try
{
Application.ExitThread();
Thread thtmp = new Thread(new ParameterizedThreadStart(run));
object appName = Application.ExecutablePath;
Thread.Sleep(1);
thtmp.Start(appName);
}
catch (Exception) { };
}
/// <summary>
///功能描述:重启
///修改时间:sth20211109
/// </summary>
private static void run(Object obj)
{
Process ps = new Process();
ps.StartInfo.FileName = obj.ToString();
ps.Start();
}
#endregion
委托实现在线程中更新主界面控件
#region 委托方法结果界面实时显示
private delegate void UpdateDGVresult(int iRow, List<string> strColumnName, int iColumn, string strConclusion, Color color);
//刷新结果界面
private void RefreshDGVRes(int iRow, List<string> strColumnName, int iColumn, string strConclusion, Color color)
{
if (g_DGVMeterResult.InvokeRequired)
{
g_DGVMeterResult.Invoke(new UpdateDGVresult(RefreshDGVRes), new object[] { iRow, strColumnName, iColumn, strConclusion, color });
}
else
{
try
{
g_DGVMeterResult.Rows[iRow].Cells[strColumnName[iColumn].ToString()].Value = strConclusion;
g_DGVMeterResult.Rows[iRow].Cells[strColumnName[iColumn].ToString()].Style.ForeColor = color;
g_DGVMeterResult.CurrentCell = g_DGVMeterResult.Rows[iRow].Cells[strColumnName[iColumn]];
}
catch (Exception)
{ }
}
}
#endregion