根据提供的文件信息,以下是从标题、描述以及部分内容中提取并扩展出的相关知识点: ### C# .NET项目开发中的小技巧 #### 1. 使用DataGrid显示数据表 在C# WinForms开发中,`DataGrid`是显示表格数据的一个非常实用的控件。通过创建`DataGridTableStyle`实例,并设置其`MappingName`属性来关联到数据源中的表名,可以轻松地将数据绑定到`DataGrid`控件上。 **代码示例:** ```csharp DataGridTableStyle dgts = new DataGridTableStyle(); dgts.MappingName = "myTable"; // myTable为要绑定的DataTable名称 DataGridTextBoxColumn dgcs = new DataGridTextBoxColumn(); dgcs.MappingName = "title_id"; dgcs.HeaderText = "ID"; dgts.GridColumnStyles.Add(dgcs); dataGrid1.TableStyles.Add(dgts); ``` #### 2. 处理NULL值查询 在SQL查询中,处理NULL值是一个常见的需求。例如,当需要查询某列值为NULL的记录时,可以直接使用`IS NULL`条件。 **SQL示例:** ```sql SELECT * FROM my_table WHERE col_name IS NULL; ``` #### 3. 设置WinForm窗口默认按钮 在Windows窗体应用中,可以通过设置`Form.AcceptButton`属性指定默认的按钮,这样用户按下Enter键时会触发该按钮的点击事件。 **C#示例:** ```csharp this.button1.DialogResult = DialogResult.OK; this.AcceptButton = this.button1; ``` #### 4. Oracle与SQL Server类型转换 在跨数据库平台迁移时,需要注意数据类型的差异。例如,在Oracle中使用的`NUMBER(15)`类型,在SQL Server中应使用`NUMERIC(15,0)`来对应。 **SQL Server示例:** ```sql DECLARE @var NUMERIC(15, 0) = 123456789012345; ``` #### 5. SQL Server模糊查询 在SQL Server中进行模糊匹配查询时,可以使用`LIKE`操作符结合通配符`%`实现。 **SQL示例:** ```sql SELECT * FROM mytable WHERE hao LIKE '%'+@hao+'%'; ``` #### 6. TextBox按键事件处理 为了在TextBox中处理特定按键(如Enter键)的行为,可以通过监听`KeyPress`事件来实现。 **C#示例:** ```csharp private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (e.KeyChar != (char)13) return; else // 执行其他操作 } ``` #### 7. 解决DBNull转Int32问题 当从数据库获取的数据为DBNull时,直接转换为Int32可能会导致异常。正确的做法是先转换为字符串再进行解析。 **C#示例:** ```csharp Int32 result = Int32.Parse(cmd.ExecuteScalar().ToString()); ``` #### 8. DataTable添加计算列 在DataTable中可以动态添加新的列,并通过`Expression`属性设置计算规则。 **C#示例:** ```csharp DataColumn dc = new DataColumn("newCol", Type.GetType("System.String")); dc.Expression = "Parent.parentColumnName"; dt.Columns.Add(dc); ``` #### 9. DataGrid显示特定字段 当需要在DataGrid中只显示某些特定字段时,可以通过SQL查询或LINQ表达式选择所需列。 **SQL示例:** ```sql SELECT COL1, SUBSTR(COL2, 1, 5) AS SHORT_COL2, COL3 FROM MY_TABLE; ``` #### 10. ComboBox下拉样式设置 ComboBox控件支持不同的下拉样式,如`DropDown`、`DropDownList`和`Simple`,每种样式具有不同的行为特点。 - `DropDown`: 可编辑,可以选择列表项或手动输入文本。 - `DropDownList`: 只能从列表中选择,不可手动输入。 - `Simple`: 可编辑,但没有下拉列表。 **C#示例:** ```csharp comboBox1.DropDownStyle = ComboBoxStyle.DropDownList; ``` #### 11. 使用DataGrid显示日期格式 当需要在DataGrid中显示日期格式时,可以通过SQL函数转换日期格式。 **SQL示例:** ```sql SELECT TO_DATE(col, 'yyyy-mm-dd') AS DATE_COLUMN FROM MY_TABLE; ``` #### 12. 动态计算DataTable新列 在DataTable中动态计算新列时,可以利用`Expression`属性来定义计算规则。 **C#示例:** ```csharp DataColumn dc = new DataColumn("newCol", typeof(string)); dc.Expression = "col1 + '-' + col2"; dt.Columns.Add(dc); ``` #### 13. 复杂查询与DataGrid展示 对于复杂的查询结果,需要对原始数据进行处理后才能在DataGrid中正确显示。 **SQL示例:** ```sql SELECT COL1, COL2, CASE WHEN COL3 LIKE '%%' THEN SUBSTR(COL3, INSTR(COL3, ' ') + 1, INSTR(COL3, ' ') - INSTR(COL3, ' ') - 1) END AS COL3 FROM MY_TABLE; ``` #### 14. DataGrid鼠标滚轮事件 为了实现当鼠标滚轮在DataGrid上滚动时自动选中当前单元格的功能,可以监听`MouseWheel`事件。 **C#示例:** ```csharp this.dataGrid1.MouseWheel += new MouseEventHandler(dataGrid1_MouseWheel); private void dataGrid1_MouseWheel(object sender, MouseEventArgs e) { this.dataGrid1.Select(); } ``` #### 15. TextBox中特殊字符处理 为了在TextBox中输入特殊字符,可以通过`SendKeys.Send`方法模拟键盘输入。 **C#示例:** ```csharp private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (e.KeyChar == '+') { SendKeys.Send("A"); e.Handled = true; } } ``` #### 16. 最大化WinForm窗口 在Windows Forms应用程序中,可以通过设置`WindowState`属性为`FormWindowState.Maximized`来最大化窗口。 **C#示例:** ```csharp this.WindowState = FormWindowState.Maximized; ``` #### 17. 获取当前时间 无论是C#还是SQL Server,都有内置的方法用于获取当前系统时间。 **C#示例:** ```csharp DateTime now = DateTime.Now; ``` **SQL Server示例:** ```sql SELECT GETDATE(); ``` #### 18. DataGrid访问单元格值 在C#中可以通过`dataGrid[row, col]`的方式访问DataGrid中特定单元格的值。 **C#示例:** ```csharp string cellValue = (string)dataGrid1[1, 2]; ``` #### 19. DataTable筛选特定值 要从DataTable中筛选特定值的记录数量,可以使用`Select`方法结合WHERE条件。 **C#示例:** ```csharp int count = dt.Select("ColumnName = 'SpecialValue'").Length; ``` #### 20. DataGrid导出到Excel 将DataGrid中的数据导出到Excel文件是一种常见的需求,可以通过读写Excel文件或使用第三方库来实现。 **C#示例:** ```csharp // 假设使用EPPlus库 using OfficeOpenXml; var package = new ExcelPackage(); var ws = package.Workbook.Worksheets.Add("Sheet1"); for (int i = 0; i < dataGrid1.RowCount; i++) { for (int j = 0; j < dataGrid1.ColumnCount; j++) { ws.Cells[i + 1, j + 1].Value = dataGrid1[i, j].Value; } } // 导出文件 package.SaveAs(new FileInfo(@"C:\temp\export.xlsx")); ``` 以上是基于提供的内容整理出的一些实用的小技巧,希望能够帮助你在C# .NET项目的开发过程中解决实际问题。
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip