温馨提示:本代码可以直接赋值运行~
版本:VS2015
语言:C# WPF
功能:
在Window1的TextBox1中输入数据。点击Button1,生成txt文件存储TextBox1中的数值,并启动Window2。点击Button2,读取txt文件中的字符串自动输入TextBox2.
缺点:
TextBox1中有多个数据时,无法让TextBox2输入指定某一行的数据。
TextBox1中的数据不能删除之前的数据。
改进思考:
1.每次Button2启动后删除*.txt文件
2.规定*.txt文件中分多个string str = ???区分赋值
参考文章:
【WPF用FileStream】【Winform用StreamReader或StreamWriter】
Window1:
<Window x:Class="Test.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Test" mc:Ignorable="d" Title="Window1" Height="350" Width="525"> <Grid> <TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="146,108,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> <Button x:Name="button1" Content="Button1" HorizontalAlignment="Left" Margin="198,186,0,0" VerticalAlignment="Top" Width="75" Click="button1_Click"/> </Grid> </Window>
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; using System.IO;//添加引用 namespace Test { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { WriteFile("E:\\123.txt", textBox1.Text); Window2 w2 = new Window2(); w2.ShowDialog(); } /// <summary> /// 写文件 /// </summary> /// <param name="Path">文件路径</param> /// <param name="Strings">文件内容</param> public static void WriteFile(string Path, string Strings) { if (!System.IO.File.Exists(Path)) { //Directory.CreateDirectory(Path); System.IO.FileStream f = System.IO.File.Create(Path); f.Close(); f.Dispose(); } System.IO.StreamWriter f2 = new System.IO.StreamWriter(Path, true, System.Text.Encoding.UTF8); f2.WriteLine(Strings); f2.Close(); f2.Dispose(); } } }
Window2:
<Window x:Class="Test.Window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Test" mc:Ignorable="d" Title="Window2" Height="300" Width="300"> <Grid> <Button x:Name="button2" Content="Button2" HorizontalAlignment="Left" Margin="121,173,0,0" VerticalAlignment="Top" Width="75" Click="button2_Click"/> <TextBox x:Name="textBox2" HorizontalAlignment="Left" Height="23" Margin="121,101,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> </Grid> </Window>
using System; using System.Collections.Generic; using System.IO; 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.Shapes; namespace Test { /// <summary> /// Window2.xaml 的交互逻辑 /// </summary> public partial class Window2 : Window { public Window2() { InitializeComponent(); } private void button2_Click(object sender, RoutedEventArgs e) { textBox2.Text = ReadFile("E:\\123.txt"); } private string ReadFile(string Path) { //声明一个FileStream类的对象 FileStream fsRead = new FileStream(Path, FileMode.OpenOrCreate, FileAccess.Read); byte[] buffer = new byte[200];//声明一个字节数组,用来临时存储读取到数据,最大存储200字节 string a = null; while (true) { int r = fsRead.Read(buffer, 0, buffer.Length);//返回本次实际读取到的字节数 if (r == 0)//如果读取到的字节数为0,说明已到达文件结尾,则退出while循环 { break; } string s = Encoding.UTF8.GetString(buffer, 0, r);//将字节数组转换成字符串;buffer:要转换的字节数组;0:第一个要解码的字节的索引;r:要解码的字节数 Console.WriteLine(s); a = s; } return a; fsRead.Close(); //关闭流 fsRead.Dispose(); //释放流 Console.ReadKey(); } } }