关于WPF的两个窗口之间通过创建和读取txt传递数据【附源代码】

温馨提示:本代码可以直接赋值运行~

版本: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】

FileStream类的一些用法

FileStream类

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();
        }
    }
}


猜你喜欢

转载自blog.csdn.net/sinat_37519884/article/details/79232889