1. 程式人生 > >關於WPF的兩個視窗之間通過建立和讀取txt傳遞資料【附原始碼】

關於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】

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


相關推薦

關於WPF視窗之間通過建立讀取txt傳遞資料原始碼

溫馨提示:本程式碼可以直接賦值執行~ 版本:VS2015 語言:C# WPF 功能: 在Window1的TextBox1中輸入資料。點選Button1,生成txt檔案儲存TextBox1中的數值,並啟動Window2。點選Button2,讀取txt檔案中的字串自動輸入Tex

Revit二次開發之WPF通過txt讀取儲存TextBox的字串原始碼

軟體版本:VS2015 Revit2018 功能:Revit中執行程式時,在Window中的TextBox中自動顯示指定txt檔案中的字串內容 缺點:會將txt檔案中的字串全部顯示 程式展示: 1.程式啟動 2.輸入“666”,點選Button1,自動關閉窗體 3

冠狀病毒傳播模擬器的原理實現(Python版)原始碼

本文摘要: 本文首先會解釋一下到底什麼是"冠狀病毒",以及殺死"冠狀病毒"的方法。然後會利用Python實現一個"冠狀病毒"傳播模擬器,來演示一下為何“不出門“ +“瘋狂建醫院”會間接殺死病毒(動態模擬了從發生疫情,到疫情結束的整個過程)。以及如果控制不好,會有

利用jqueryFrom傳檔案到servlet,以及伺服器之間傳檔案其他資料

專案背景:有兩個伺服器,一個是使用者操作的手機端伺服器,一個是後臺(響應前一個伺服器,並能訪問資料庫) 專案需求:使用者從手機端上傳身份證以及個人資訊,我們需要將資料傳給後臺,並且在資訊認證通過後將身份證照片存在後臺伺服器的D盤資料夾下。 jqueryForm上

頁面之間通過js進行傳值

第一個頁面中有兩個圖片,當點選的時候能在第二個頁面中獲得它的屬性值()通過js進行傳值: 第一個頁面: [html]  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht

C 求整數之間所有整數問題

問題: Write a program that (1) inputs two integers (integer1 and integer 2) (2) prints sum of all integers between integer1 and integer2 (3) U

Calendar計算日期之間的天數週數

每天一篇開發日記,輕鬆快樂每一天!今天介紹的是利用java,Calendar類計算出兩個日期之間的天數和週數的演算法! 計算出日期之間的天數: public Object countTwoDate(O

判斷日期之間除去週末規定節假日剩餘的天數(精確度為半天)

這兩天在寫一個專案,考勤系統,寫到請假的一塊,需要判斷請假的天數,在網上搜也沒有合意的,於是就自己寫了個。 請假天數以0.5天為單位,不足0.5天的按0.5天算,在請假頁面選擇的時候,只能選擇日期和上下午。 規定的節假日是存在資料庫中的,我這裡用的是ssh框架,連結的ora

Activity之間通過Intent相互(雙向)傳遞資料

兩個Activity通過Intent相互交換資料,在Activity中用一個Button 選擇是否接受資料,不能直接寫在onCreate中否則在Activity1 中獲取從Activity2傳送的資料時會崩潰,原因是因為在Activity中會通過Intent再建立一個Act

在網站開發中很有用的8 jQuery 效果原始碼

  jQuery 作為最優秀 JavaScript 庫之一,改變了很多人編寫 JavaScript 的方式。它簡化了 HTML 文件遍歷,事件處理,動畫和 Ajax 互動,而且有成千上萬的成熟 jQuery 外掛可供使用。看看下面這些驚人的功能和效果,我相信你會發現一些很有用的東西。 基於 jQuery 實

精選9值得學習的 HTML5 效果原始碼

  HTML5 規範引進了很多新特性,其中最令人期待的之一就是 Canvas 元素,HTML5 Canvas 提供了通過 JavaScript 繪製圖形的方法,非常強大。下面給大家分享一個 HTML5 Canvas 繪製的 3D 布料圖案效果。 (adsbygoogle = wi

45純 CSS 實現的精美邊框效果原始碼

確實覺得很好,但是貼上不過來,所以把連線分享給大家了。 地址:http://www.cnblogs.com/lhb25/archive/2012/08/29/css-border-and-box-effect-a.html 地址:http://www.cnblogs

Qt中通過設定點陣圖掩碼生成異形控制元件原始碼

註釋:轉載的這篇部落格適用於不規則按鈕,目標區域外的透明部分點選無作用,目標區域內的透明部分點選有效果,當然設定按鈕掩碼所使用的圖片目標區域都是不透明的! 以下步驟是以按鈕為例,其他控制元件類似 ①在QtDesigner中拖出一個按鈕或者在程式中生成

Revit二次開發之WPF設定CheckBox不能被選中原始碼

版本:VS2015Revit2018實現功能:WPF中選中一個CheckBox1後,利用Checked事件,另一個特定的CheckBox2會變成不可選狀態(XXX.IsEnabled = false);取消選擇CheckBox1後,利用UnChecked事件,特定的Check

計算數字之間的額偶數

數字 ctype doctype || isnan tle res har 是否 <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></

WPF的訊息機制(三)- WPF內部的5視窗之處理啟用關閉的訊息視窗以及系統資源通知視窗

原文: WPF的訊息機制(三)- WPF內部的5個視窗之處理啟用和關閉的訊息視窗以及系統資源通知視窗 目錄 WPF的訊息機制(一)-讓應用程式動起來 WPF的訊息機制(二)-WPF內部的5個視窗 (1)隱藏訊息視窗 (2)處理啟用和關閉的訊息視窗和系統資源通知視窗

56、彈出框視窗之間的切換

學習目標: 1、掌握使用Swing實現彈出框功能 2、使用Swing切換視窗 3、新視窗的定義和彈出   學習過程: 一、彈出框 1、簡介 Java 中的對話方塊是一個容器,它充當父容器的子容器  Swing中的彈出式對話方塊是用JOptionPa

windows server/windows同一系統下建立目錄之間的對映關係

應用場景,如下: 當兩個不同的專案共享同一個資源目錄、同一個資料庫時,由於兩專案根目錄不一樣,再加上部分專案可能有入口重寫規則限制了使用者的訪問許可權。 因此,我們可以利用window 伺服器給我們提供的mklink命令來建立兩個專案資源目錄的對映關係。 使用步驟: 1)進入cmd命令列模式 2)在

Java計算經緯度之間的距離公式,外加百度地圖高德地圖轉換,保留小數

在網上看到了很多兩個座標之間的距離公式,也都親自測試了,有很多都不可以用,後來找到一個比較好的距離演算法,分享給大家 經緯度兩點之間的距離公式 public class MapUtils { private static double rad(double d) { return

基於專案 之間的RabbitMQ 傳送接收,並呼叫郵件介面,傳送郵件

專案原始碼 下載 第一個專案:qucik4j 下載地址:https://github.com/ZhangHLong/quick4j 作用: 定時監控指定服務埠是否異常,發生異常,會發送MQ訊息 通知email-server服務。