TypechoJoeTheme

Yuuuuuu

C#

Winform中一些常用方法

持续更新吧

向DataSet中添加多个DataTable

//  新建一个DataSet
DataSet ds = new DataSet();  

//  获取第一个DataTable中的数据
DataTable dt_info = GetUserInfo();
dt_info.TableName = "info";  // 给表重命名
ds.Tables.Add(dt_info.Copy());

//  获取第二个DataTable中的数据
DataTable dt_Perm = GetUserPerm();
dt_Perm.TableName = "perm";  // 给表重命名
ds.Tables.Add(dt_Perm.Copy());

//  得到的DataSet
return ds;

关于这个有一个链接讲的特别好,可以看一下

清空DataGridView

C# DataGridView控件绑定数据后清空数据
在清除DataGridview的数据时:

1.DataSource为NULL(DataGridView.DataSource= null;)这样会将DataGridView的列也删掉。

2.用DataGridview.Rows.Clear(); 提示“不能清除此列表”!!!!!

以上都不是想要的结果。想要满足保持原有的列,就是重新绑定之前的DataTable,然后清除DataTable中的数据,如下:

DataTable  dt  =  (DataTable)dataGridView1.DataSource;
dt.Rows.Clear();
dataGridView1.DataSource  =  dt;  

问题解决。

下拉框绑定数据(DataTable)

可以用其属性中的ValueIndex等保存数据

//  下拉框绑定
DataTable dt_group = GetUserGroup();
if (dt_group.Rows.Count > 0)
{
    ComboBox.DisplayMember = "Name";    //  要展示的字段
    ComboBox.ValueMember = "id";    //  对应的值字段,一般为id
    ComboBox.DataSource = dt_group;    //  数据源
    //ComboBox.SelectedIndex = -1;    //  设置所选项,-1为不选中

    //ComboBox.Items.Clear();    //  清空ComboBox
}

查询DataTable中的字段

DataTable中自带了Select方法,返回值为DataRow
比如我想查询dtname列为guo的那一行,用这种方法

dt.Select("name='guo'");

其中name为字段,等号后面是要查询的值,需要用单引号括起来。

提取字符串中的数字

int num = System.Text.RegularExpressions.Regex.Replace(str, @"[^0-9]+", "");

控制台

        //  控制台打印DataSet
        public void PrintDataSet(DataSet ds)
        {
            for(int j = 0; j < ds.Tables.Count; j++)
            {
                Console.WriteLine("第 "+ j + " 张表 " + ds.Tables[j].TableName +" :");
                for (int q = 0; q < ds.Tables[j].Rows.Count; q++)
                {
                    for (int i = 0; i < ds.Tables[j].Columns.Count; i++)
                    {
                        Console.Write(ds.Tables[j].Rows[q][i].ToString() + "    ");
                    }
                    Console.WriteLine();
                }
            }
        }

设置TextBox只能输入数字

要达到这个效果的方法有很多,都可以亲自试一下

//    这种方法需要创建TextBox的 **KeyPress** 方法,如果不是数字会有声音提示,且不会输入到TextBox中
private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
     if (e.KeyChar == 0x20) e.KeyChar = (char)0;  //禁止空格键  
     if ((e.KeyChar == 0x2D) && (((TextBox)sender).Text.Length == 0)) return;   //处理负数  
     if (e.KeyChar > 0x20)
     {
         try
         {
             double.Parse(((TextBox)sender).Text + e.KeyChar.ToString());
         }
         catch
         {
            e.KeyChar = (char)0;   //处理非法字符  
         }
     }
}

或者也可以禁止输入空格

private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
     if (" ".IndexOf(e.KeyChar) != -1)
     {
          e.Handled = true;
     }
}
赞(0)
评论 (0)