【c#基础 - 主窗体】主界面属性,方法

记录一些常用到的功能

标题添加版本号

 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值