C# 常用 winfrom 常用 属性

TextBox:

//拉动条
   ///s设置下拉条
            txtSend.Multiline = true;
            txtSend.ScrollBars = ScrollBars.Both;
            

ComboBox:

            // 插入值  设置默认值
            cmbBaudRate.Items.Add("110");
            cmbBaudRate.Items.Add("300");
            cmbBaudRate.Items.Add("1200");
            cmbBaudRate.Items.Add("2400");
            cmbBaudRate.Items.Add("4800");
            cmbBaudRate.Items.Add("9600");
            cmbBaudRate.Items.Add("19200");
            cmbBaudRate.Items.Add("38400");
            cmbBaudRate.Items.Add("57600");
            cmbBaudRate.Items.Add("115200");
            cmbBaudRate.Items.Add("230400");
            cmbBaudRate.Items.Add("460800");
            cmbBaudRate.Items.Add("921600");
            cmbBaudRate.SelectedIndex = 5;

Button:

        //点击确定 比如确定配置
        DialogResult = DialogResult.OK;
        DialogResult = DialogResult.Cancel;
          
        //调用窗体 会获取到是点击的OK还是Cancel
        ComSet dlg = new ComSet();
        if (dlg.ShowDialog() == DialogResult.OK)
         {
           //  ok
         }
        else
        {
            //Cancel
        }
            //按钮打开文件
            OpenFileDialog open = new OpenFileDialog();
            open.InitialDirectory = "c\\";
            open.RestoreDirectory = true;
            open.FilterIndex = 1;
            open.Filter = "txt文件(*.txt)|*.txt";
            if (open.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    if (open.OpenFile() != null)
                    {
                        txtFileName.Text = open.FileName;
                    }
                }
                catch (Exception err1)
                {
                    MessageBox.Show("文件打开错误!  " + err1.Message, "提示信息",                     
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
           

string 转换

(1)转换为大写:string UpTestStr=testStr.ToUpper();

转换后UpTestStr结果为:ABCDEFG

(2)转换为小写:string LowTestStr=testStr.ToLower();
转换后LowTestStr结果为:abcdefg
取字符串 字段
 string str="123456789";
 str.Substring(0, 1)

string 位数不够补0

C#位数不足补零
C#位数不足补零:
int i=10;
方法1:Console.WriteLine(i.ToString("D5"));
方法2:Console.WriteLine(i.ToString().PadLeft(5,'0'));//推荐
方法3:Console.WriteLine(i.ToString("00000"));

在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位。

PadLeft(int totalWidth, char paddingChar) //在字符串左边用 paddingChar 补足 totalWidth 长度
PadLeft(int totalWidth, char paddingChar) //在字符串右边用 paddingChar 补足 totalWidth 长度
示例:
h = h.PadLeft(2, '0');
注意第二个参数为 char 类型,所以用单引号,也可以用 Convert.ToChar(string value) 把字符串转换成 char 类型。如果字符串长度大于 1,则使用 str.ToCharArray()[index]。

string 反转

string str1 = "abcdefg";

            char[] cs = str1.ToCharArray();
            Array.Reverse(cs);

            string res = new string(cs);

            Console.WriteLine(res);
            MessageBox.Show(res);

app.config 配置修改

<appSettings>
    <!--开机自启动-->
    <add key="SelfStarting" value="0"/>
  </appSettings>
//读取
string str = ConfigurationManager.AppSettings["SelfStarting"];
//修改
ConfigText.UpdateAppConfig("SelfStarting", "0");

多线程

在多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,
这个时候如果你想要访问窗口的控件,那么你可以将窗口构造函数
中的CheckForIllegalCrossThreadCalls设置为false.这是线程就
能安全的访问窗体控件了.

如果捕获了对错误线程的调用,则为 true;否则为 false

        public Frm_Main()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;
        }
        /// <summary>
        /// 启动线程
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_StartupThread_Click(object sender, EventArgs e)
        {
            // 线程方法1发卡记录上传接口(vn_base_card)
            thread1 = new Thread(new ThreadStart(doSomethingBase_Card));
         //启动线程
            thread1.Start();
        
        }
DataTable 读写
写入:
  DataTable table = new DataTable();  table.Rows.Count; 行数
  table.Columns.Add("Name", Type.GetType("System.String"));//添加Name列,存储数据类型为string
  table.Columns.Add("Id", Type.GetType("System.Int32"));//添加Id列,存储数据类型为Int

  DataRow newRow = table.NewRow();
  newRow["Name"] = "张三";
  newRow["Id"] = 11;

  table.Rows.Add(newRow);
读取:
方法一:

DataTable dt = dataSet.Tables[0];   

for(int i = 0 ; i < dt.Rows.Count ; i++)   

{   

   string strName = dt.Rows[i]["字段名"].ToString();   

}   
  
方法二:   

foreach(DataRow myRow in myDataSet.Tables["temp"].Rows)   
{   
      var str = myRow[0].ToString();   
}   
  
方法三:   

foeach(DataRow dr in dt.Rows)      
{      
     object value = dr["ColumnsName"];      
}   
  
方法四:   

DataTable dt=new DataTable();      
foreach(DataRow dr in dt.Rows)      
{    
   for(int i=0;i<dt.Columns.Count;i++)    
   {    
        dr[i];    
   }      
}   
 有时候我们需要对数据表进行筛选,微软为我们封装了一个公共方法, DataTable.Select(),其用法如下:

Select()

Select(string filterExpression)

Select(string filterExpression, string sort)

Select(string filterExpression,string sort, DataViewRowState record States)

1)  Select()——获取所有 System.Data.DataRow 对象的数组;

2)  Select(string filterExpression)——按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 System.Data.DataRow 对象的数组;

3)  Select(string filterExpression, string sort)——获取按照指定的排序顺序且与筛选条件相匹配的所有System.Data.DataRow 对象的数组;

4)  Select(string filterExpression, string sort, DataViewRowState recordStates)——获取与排序顺序中的筛选器以及指定的状态相匹配的所有。

 

举例说明:

有一个用户表,名称为 dtUsers,有id、姓名name、性别sex、年龄age

1.筛选所有的用户  

         DataRow[] drs1 =dtUsers.Select();

2.筛选所有性别为男的用户

         DataRow[] drs2 =dtUsers.Select("sex = '男' ");

3.筛选所有性别为男且年龄在18岁以上的用户

         DataRow[] drs3 =dtUsers.Select("sex = '男' and age >= 18");

4.筛选所有性别为男或者年龄在18岁以上的用户

         DataRow[] drs4 =dtUsers.Select("sex = '男' or age >= 18");

5.筛选所有姓“夏”的用户

         DataRow[] drs5 =dtUsers.Select("name like '夏%'");

6.筛选所有18岁以上的用户且按从大到小的顺序排序

         DataRow[] drs5 =dtUsers.Select("age >=18","age desc");

7.上面最后一种用法没试过,有机会再列举出来。
 
c# DataRow[]转Datatable
方法一:

Datatable dt=new Datatable();

//添加列和数据(代码省略)

DataRow[] drs = dt.Select("DeviceID='123'");
_dt = drs.CopyToDataTable();
dgvList.DataSource = _dt;

方法二:

DataRow[] dr = dt.Select("DeviceID='"+DeviceID+"'");
DataTable d = dt.Clone();
for (int i=0;i<dr.Length;i++)
{
d.ImportRow(dr[i]);
}


注意事项

1.上面的Select操作是不区分大小写的(表字段不敏感,如pl-sql语法),如果需要区分大小写,需要将DataTable的caseSensitive属性设为true,例如上表的

dtUsers.CaseSensitive = true;//区分大小写

dataGridView 样式

解决数据库datatime数据在DataGridView里不显示秒的解决
 在数据库中正确显示有分有秒,到dataset里的时候也有,但绑定到DataGridView里的时候就没有秒,解决办法:

dataGridView1.Columns["record_time"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";

DataGridView 单元格内容格式内柔发生变化

  private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == 3)
            {
                switch (Convert.ToInt32(e.Value))
                {
                    case 0: e.Value = "现金支付";
                        e.CellStyle.ForeColor = Color.White;//更改颜色
                        e.CellStyle.BackColor= Color.Red; 
                        break;
                    case 1: e.Value = "加油卡支付";
                        break;
                    case 2: e.Value = "微信支付";
                        break;
                    case 3: e.Value = "POS机支付";
                        break;
                    case 4: e.Value = "现金账户支付";
                        break;
                    default:
                        break;
                }
            }
 

toolStrip1控件样式

toolStrip 按钮图片大小的修改

toolStrip 按钮图片大小的修改

1.按钮大小不能修改 //这个问题比较困扰我们,为什么不能修改呢,可能到时没考虑到我们要修改按钮大小

只需改变toolStrip 的一个属性autosize为false即可修改按钮的高度

2.按钮的图片不能修改//这也是很大的一个问题

imagescaling设置为none即可修改图片大小了

3.toolStripDropDownButton1.TextAligon=BottomCenter

4.toolStripDropDownButton1.TextlmageRelation=Overlay

5.displaystyle可以控制显示文本还是图片还是兼得

6.实现鼠标悬停时图标变大吧。

这样写:
toolStripButton1.ImageScaling = ToolStripItemImageScaling.None;
此属性默认是SizeToFit,也就是自动将图标图像缩放到toolStrip合适的大小,
这个数值在toolStrip的AutoSize为false且自己指定了toolStrip的长宽时用比较合适。而None则是指示图标使用原始大小的Image,如果Image高过/宽过toolStrip,超出部分不可见。

所以在运行时想放大图标图像的话,你还需要准备一个大小比较合适的Image。
举例,系统默认添加toolStrip高度是25,你可以关闭toolStrip的AutoSize然后调整高度到31,图标都使用24x24的,当SizeToFit时它会变成16x16的,当需要放大时,改这个项的ImageScaling到None就会还原回24x24。

最后,布局最好配合toolStrip的Padding和LayoutStyle属性来做。

最后的最后,如果想要任意换图标……还是改了ImageScaling后自己找几组大小不同的图标,需要的时候写给子项的Image属性好了。

自定义控件 代码调用多个排序

    /// <summary>
        /// 加油机控件
        /// 
        /// </summary>
        public void Control()
        {
            try
            {
                int nber = Convert.ToInt32(Config.OilNumber);
                if (nber > 9)
                {
                    for (int i = 0; i < 9; i++)
                    {
                        Control.Refueller r1 = new Control.Refueller();
                        r1.Name = "jy" + i;
                        r1.Size = new Size(220, 281);
                        //r1.ResetText = "123123123123";
                        r1.Location = new Point(220 * i, 0);
                        r1.Show();
                        splitContainer1.Panel1.Controls.Add(r1);
                    }
                    nber = nber - 9;
                    if (nber > 0)
                    {
                        for (int i = 0; i < nber; i++)
                        {
                            Control.Refueller r1 = new Control.Refueller();
                            r1.Name = "jy" + i;
                            r1.Size = new Size(220, 281);
                            //r1.ResetText = "123123123123";
                            r1.Location = new Point(220 * i, 281);
                            r1.Show();
                            splitContainer1.Panel1.Controls.Add(r1);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
发布了134 篇原创文章 · 获赞 13 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_36074218/article/details/103461076