C#Winform开发杂项记录

1.Button按钮确定时提示

  if (MessageBox.Show("确定删除?", "确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
            {
                //具体代码

            }        

 

2.当页面Textbox控件过多需要判断非空时

    foreach (Control item in Controls)//遍历控件
            {
                if (item is TextBox &&string.IsNullOrWhiteSpace(item.Text))//遍历TextBox类型控件  根据需求可以增加条件跳过某个控件不遍历
                    {
                        item.Focus();
                        MessageBox.Show("请输入信息!", "信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                        return;
                    }                        
            }     

 

3.CheckBox全选和反选

        /// <summary>
        /// 点击全选
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void checkall_Click(object sender, EventArgs e)
        {
            if (checkall.CheckState == CheckState.Checked)
            {
                foreach (CheckBox ck in authoritygroup.Controls)
                    ck.Checked = true;
                checkall.Text = "反选";
            }
            else
            {
                foreach (CheckBox ck in authoritygroup.Controls)
                    ck.Checked = false;
                checkall.Text = "全选";
            }
        }

 

4.绑定下拉框时,第一行插入空项

   /// <summary>
        /// 绑定
        /// </summary>
        public void BindWarePosition1(int stid)
        {
            sql.sqlserver sql = new WarehouseManage.sql.sqlserver();
            DataTable dt = sql.GetWarepositionBywarehouseid(stid);
            DataRow dr = dt.NewRow();
            dr["warepositionname"] = null;
            dr["wid"] = 0;
            dt.Rows.InsertAt(dr, 0);//插入第一行        
            cmbwp.DataSource = dt;
            cmbwp.ValueMember = "wid";
            cmbwp.DisplayMember = "warepositionname";
            cmbwp.SelectedIndex = 0;
        }

Combox取值

int id=Convert.ToString(cmbwp.SelectedValue)//取到绑定的选项ID

string name=cmbwh.Text;//选项显示的值

 

5.关闭主窗口时退出进程

   private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

 

6.定义枚举按数字取值

             /// <summary>
            /// 选择操作类型
            /// </summary>
            public enum operationtype : int
                {                
                    请选择=0,
                    录入 = 1,
                    转移 = 2,
                    撤销 = 3,
                    增加 = 4,
                    修改 = 5,
                    删除 = 6                  
                }

     /// <summary>
            /// 操作记录
            /// </summary>
            /// <param name="content"></param>
            public static void OperationInser(string content, int OperationType)
            {
                //操作记录            
                string[] array1 = Enum.GetNames(typeof(common.CommonClass.operationtype));
                string operatype = array1[OperationType];//获得类型名
          //插入数据库
          
sql.insert(content,operatype);
}

调用时

 string content = "增加成功,姓名:" + name;
 OperationInser(content, 4);

 

7.创建线程执行方法

   Control.CheckForIllegalCrossThreadCalls = false;
            ThreadStart thStart = new ThreadStart(Repair);//threadStart委托 ,方法名:Repair
            Thread thread = new Thread(new ThreadStart(thStart));
            thread.Priority = ThreadPriority.Highest;
            thread.SetApartmentState(ApartmentState.STA);
            thread.IsBackground = true; //关闭窗体继续执行
            thread.Start();

 

8.使用SqlBulkCopy (注意DataTable里面顺序、标题名字、类型必须和表完全一致才行)

        /// <summary>
        /// 批量插入
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="tableName">表名</param>
        public string BatchInsertBySqlBulkCopy(DataTable dt, string tableName)
        {
            using (SqlBulkCopy sbc = new SqlBulkCopy(connectionString))
            {
                sbc.BatchSize = dt.Rows.Count;
                sbc.BulkCopyTimeout = 100;
                sbc.DestinationTableName = tableName;
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, i);
                }
                //全部写入数据库
                sbc.WriteToServer(dt);
                return "导入完成";
            }
        }  

附上sqlserver连接语句

   #region 数据库连接信息    
        //public static string connectionString = "server=XX.XX.XX.XX;database=XXXXX;uid=XXXX;pwd=XXX;";
        public static string connectionString = "server=localhost;database=ReportServer;Integrated Security = true;";
        #endregion

        #region 基础方法
        //查询,返回DataTable
        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    DataTable datatable = new DataTable();
                    adapter.Fill(datatable);
                    return datatable;
                }
            }
        }

        //执行update insert delete语句,失败了返回-1,成功了返回影响的行数,注意:自动commit
        public static int ExecuteNonQuery(string SQLString)
        {

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                int val = -1;
                try
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand(SQLString, connection);
                    val = cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                }
                catch (SqlException ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    if (connection.State != ConnectionState.Closed)
                    {
                        connection.Close();
                    }
                }
                return val;
            }
        }
        #endregion

 

posted on 2021-01-21 16:39  XinRuiIIII  阅读(163)  评论(0编辑  收藏  举报