1.正则表达式
1.验证数字
^ 为开始 $ 为结束
1.1 一个或多个数字 0-9 重复
Regex regex = new Regex(@"^\d+$");
if (regex.IsMatch(size))
{
}
2. 以非0开头的一个或多个数字
Regex regex = new Regex(@"^[1-9][0-9]*$");
3.1-9单个数字
Regex regex = new Regex(@"^[1-9]$");
2.Trim
1.去掉左边的”0“
string str="000101";
str=str.TrimStart('0');
3.两个窗口的滚动条同步滚动
参考文档:
WPF:如何让两个面板共享同一个垂直滚动条,并且每个面板都拥有自己的水平滚动条? - Microsoft Q&A
WPF学习笔记(5):两个DataGrid的滚动条实现同步滚动 - 向往蓝天的菜鸟 - 博客园 (cnblogs.com)
窗口1 xaml:
<ScrollViewer Height="200" x:Name="scv1" VerticalScrollBarVisibility="Auto">
<StackPanel >
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
</StackPanel>
</ScrollViewer>、
窗口2 xaml:
<ScrollViewer x:Name="scv2" Height="200">
<StackPanel >
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
<Border Height="34" Width="200" Background="AliceBlue" Margin="10"></Border>
</StackPanel>
</ScrollViewer>
窗口1 cs:
//调用窗口2
public static JGTJCopy jjc = null;
public JGTJ()
{
InitializeComponent();
if (App.IsShuangPing)
{
App.Screen2(new JGTJCopy());
jjc = JGTJCopy.JJC;
}
initList(); //初始化
}
ScrollViewer sv1, sv2;
public void initList()
{
sv1 = scv1; //获取窗口1的滚动条
sv2 = jjc.scv2; //获取窗口2的滚动条
//下面注释的为我看别的博主写的,但我运行的时候报错,说是没有child
//sv1 = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(this.listView1, 0), 0) as ScrollViewer;
//sv2 = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(jjc.listView2, 0), 0) as ScrollViewer;
//给滚动条添加事件
sv1.ScrollChanged += new ScrollChangedEventHandler(sv1_ScrollChanged);
sv2.ScrollChanged += new ScrollChangedEventHandler(sv2_ScrollChanged);
}
void sv1_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
sv2.ScrollToVerticalOffset(sv1.VerticalOffset);
}
void sv2_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
sv2.ScrollToVerticalOffset(sv2.VerticalOffset);
}
4.修改控件模版
以combobox为例
在vs左侧的文档大纲下找到需要修改的控件,如果有给控件命名,则显示的是命名的名字

找到后右击该控件名,选择 “编辑模版”-“编辑副本”,填写名称,这个名称是后面你调用时的名称,
选择定义位置,即选择模版代码生成在哪里。应用程序是在app.xaml里,此文档是在当前页面,资源字典则是在资源字典里

这个背景色是combobox的背景色,如果要修改背景色,可以改这里。
这里是调用背景色的,也就是combobox显示的文本框的样式,这是我自己又加了一个圆角

这里是下拉列表的样式,我给下拉列表加了一个最大高度,这个高度是整个下拉列表的高度

5.程序和窗口只打开一次,窗口重复打开获得焦点、
1.程序
#region exe程序只能运行一个
System.Threading.Mutex mutex;
public App()
{
this.Startup += new StartupEventHandler(App_Startup);
}
void App_Startup(object sender, StartupEventArgs e)
{
bool ret;
mutex = new System.Threading.Mutex(true, "程序名称", out ret);
if (!ret)
{
MessageBox.Show("程序已在运行,不能运行多个");
Environment.Exit(0);
}
}
#endregion
2.窗口
在主界面cs:
#region 窗口实例化
public HYJM hyjm = null;
#endregion
//判断是否以打开
if (hyjm == null)
{
hyjm = new HYJM(this);
App.ScreenShow(hyjm);
if (App.IsShuangPing)
{
DaiJi daiji = DaiJi.daijiWindow;
daiji.Window_Hide();
}
}
else
{
hyjm.Activate();
}
在HYJM界面cs里:
//弱引用MainWindow
public static WeakReference<MainWindow> mainWindow;
public HYJM(MainWindow window)
{
InitializeComponent();
mainWindow = new WeakReference<MainWindow>(window);
}
//在界面关闭时,使MainWindow里的hyjm为空,为了不影响下次打开
private void Close_Click(object sender, RoutedEventArgs e)
{
if (mainWindow.TryGetTarget(out MainWindow target))
{
target.hyjm = null;
}
this.Close();
}
291

被折叠的 条评论
为什么被折叠?



