zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    PAT甲级——1095 Cars on Campus (排序、映射、字符串操作、题意理解)
    PAT甲级——1096 Consecutive Factors (数学题)
    PAT甲级——1097 Deduplication on a Linked List (链表)
    博客作业06--图
    博客作业05--查找
    博客作业04--树
    博客作业03--栈和队列
    博客作业2---线性表
    博客作业01-抽象数据类型
    C语言最后一次作业--总结报告
  • 原文地址:https://www.cnblogs.com/XinruiIIiiiii/p/14308837.html
Copyright © 2011-2022 走看看