gpt4 book ai didi

c# - 暂停或关闭应用程序时从 TextBox 写入 .txt 文件

转载 作者:行者123 更新时间:2023-11-30 17:26:03 28 4
gpt4 key购买 nike

有一个TextBox,用户可以在其中输入一些数据。当应用程序关闭时(通过单击窗口右上角的 X 按钮),应用程序需要获取在 TextBox 中键入的任何内容,并在关闭应用程序之前将其保存到 .txt 文件。

这是我在 App.xaml.cs 文件中的代码。

private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
//TODO: Save application state and stop any background activity
await WriteTextToFile();

deferral.Complete();
}

private async Task WriteTextToFile()
{
try
{
string text = textBox.Text;
StorageFile textFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///TextFile1.txt"));
await FileIO.WriteTextAsync(textFile, text);
}
catch
{

}
}

我在 try block 中的 textBox 下看到一条红色下划线。

它说,

The name 'textBox' does not exist in the current context

我猜无法从 App.xaml.cs 文件访问 TextBox 控件。

最佳答案

在 App.xaml.cs 中

    private MainPage mainFrame;
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//TODO: Load state from previously suspended application
}
Window.Current.Content = rootFrame;
}

if (e.PrelaunchActivated == false)
{
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
mainFrame = (MainPage) rootFrame.Content; //*
}
Window.Current.Activate();
}
}

private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
string text = mainFrame.Main_TextBox.Text;
string text2 = MainPage.rootPage.Main_TextBox.Text;
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile sampleFile = await storageFolder.CreateFileAsync("hello.txt", Windows.Storage.CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteTextAsync(sampleFile , text);
deferral.Complete();
}

在 Main.xaml.cs 中(TextBox_1 => xaml 文件中文本框的名称)

public sealed partial class MainPage : Page
{
public TextBox Main_TextBox => TextBox_1; //*
public static MainPage rootPage; //*
public MainPage()
{
this.InitializeComponent();
if (rootPage == null)
{
rootPage = this;
}
}

}

如果文本框在主框架中,您可以使用 App.xaml.cs 中的 rootFrame 访问。其他方式你可以在你的页面中创建一个静态变量然后你可以使用任何属性访问

编辑:您可以在 C:\Users\{UserName}\AppData\Local\Packages\{PackageName}\LocalState\hello.txt 中看到您的文件

关于c# - 暂停或关闭应用程序时从 TextBox 写入 .txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57327680/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com