功能简介:
其实从功能上来说是比较简单得,只要你会了这一种方式,对于其他得一些调用也是没有问题,所以关于静态类是什么我就不介绍了,有不了解得大家可以去搜一下,废话不多说了,先创建一个项目。
然后点击软件上方得项目,选择添加窗口,再添加一个新的xaml文件,命名为DataBase。
在我们得DataBase.xaml窗口中创建一个文本(TextBox)命名为Name,打开DataBase.xaml.cs文件创一个类命名为NameData;
然后在我们创建得类里面添加一个函数进行外部调用,创建一个全局字符串做内部调用。并且将我们得数据也赋值给我们得文本,这里还要说的一个点就是为了防止线程冲突,我们加一个子线程和一个委托来执行我们的数据呈现。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Literally
{
/// <summary>
/// DataBase.xaml 的交互逻辑
/// </summary>
public partial class DataBase : Window
{
public DataBase()
{
InitializeComponent();
//在函数中执行数据获取
thread_start1();
}
//外部调用静态类
public static class NameData
{
//定义一个全局字符串进行赋值
public static string Char = "";
//创建一个全局函数做外部赋值调用
public static void Name(string Data)
{
//将外部赋得值传给内部并且每条数据换行
Char += Data + "\r\n";
}
}
//线程委托变量定义
Thread getDatasThread1;
//添加一个数据获取函数
void GetDatBase()
{
//一个While死循环
while (true)
{
//启动线程
new Thread(() => {
this.Dispatcher.Invoke(new Action(() => {
//将外部传入得数据赋值给我们创建得文本
Name.Text = NameData.Char;
}));
}).Start();
//一毫秒一执行
Thread.Sleep(100);
}
}
//委托调用
void thread_start1()
{
if (getDatasThread1 != null)
{
try
{
getDatasThread1.Abort();
}
catch (Exception)
{
}
finally
{
getDatasThread1 = null;
}
}
getDatasThread1 = new Thread(new ThreadStart(GetDatBase));
getDatasThread1.IsBackground = true;
getDatasThread1.Start();
}
}
}
以上就是我们DataBase.xaml中所有代码,现在回到我们得主窗口中,添加一个Button控件和一个TextBox文本,通过点击Button控件将我们的Text文本内容传输给我们的DataBase.xaml文件中的文本中。
后端代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Literally
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//我们DataBase.xaml下的全局静态类NameData中的Name函数
DataBase.NameData.Name(Score.Text);
}
}
}
但是我们运行以后发现我们看不到,我们的数据是否已经传入到我们的DataBase中,所以我们需要在主窗口中再添加一个Button控件来打开我们DataBase控件。
后端所有代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Literally
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//我们DataBase.xaml下的全局静态类NameData中的Name函数
DataBase.NameData.Name(Score.Text);
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
//打开我们的副窗口
DataBase newForm = new DataBase();
newForm.Show();
}
}
}
先点击我们的呈现再点击我们的传输就可以看到我们的数据已经通过一个全局的静态类传输过去,这就是一个简单的静态类的使用方式,当然它还可以做许多好玩的事情,这个就要看大家自己的需求了,希望能够对大家有所帮助。