Manager 发布的文章

C# DateGridView单元格输入验证方法


目的用于限制VS原生DataGridView控件单元格输入验证,有如下两种办法:

方法一:

定义全局变量bflag:

private bool bflag =false;

然后,在PreviewKeyDown事件中添加如下代码:

if (Grid.CurrentCell.ColumnIndex == 1)             
{                  
  if (((e.KeyValue <= 48 && e.KeyValue <57) || 
  (e.KeyValue >= 96 && e.KeyValue < 105) 
  && e.Shift == false)) 
  {
     bflag=false;
  }
  else                                      
  {
     bflag=true;
  }
  else                              
  {
     bflag=false;
  }
}

最后,在CellBeginEdit事件中添加如下代码:

if (bflag)             
{                 
  e.Cancel = true;             
}             
else             
{                 
  e.Cancel = false;             
} 

方法二:

在GridView的CellValidating事件中,加入以下代码:

if (!System.Text.RegularExpressions.
Regex.IsMatch(e.FormattedValue.ToString(), @"^[0-9]*$"))             
{                                
  e.Cancel = true;             
}             
else             
{                 
  e.Cancel = false;             
} 

PS:这些都是以前写的文章,我重新搬过来手写了一遍,另外,第二种则更为简单直接,并且,用到了正则表达式。


C# 程序如何支持DPI缩放


如今,系统更新日新月异,就拿win10来说,从最初的版本更新到目前的1709,中间断断续续已经有很多版本发布了。同样的,现在硬件上高分屏,2K,4K屏越来越多,越来越频繁。
那么,此时,你开发的软件界面,若不能很好的支持DPI缩放,那么,打开的时候,如果屏幕分辨率很高的话,那么,你软件的字体会非常的小,看着很难受。如果用自带的缩放,又会很模糊,那么,怎么办?
你可以使用如下代码,将这块代码嵌入到你的Program中。在启动窗体时,加入如下代码:

[DllImport("user32.dll")]
private static extern void SetProcessDPIAware();