在 WPF 中单击按钮执行文件操作
Posted
技术标签:
【中文标题】在 WPF 中单击按钮执行文件操作【英文标题】:Perform File Operation On Button Click in WPF 【发布时间】:2012-10-13 18:51:05 【问题描述】:我是一名 C++ 开发人员,最近转向 WPF C# 领域。我正在开发一个应用程序,我必须使用 fileopendialog 加载文本文件,选择文件并将其保存在组合框中,然后单击 writebutton 我应该使用文本文件中存在的数据执行一些操作。
我在 C++ 中做了如下:
if(button == m_writeButton)
// get the data from the file
File m_binFile = m_fileChoice->getCurrentFile();
MemoryBlock m_data;
m_binFile.loadFileAsData(m_data);
size_t blockSize = m_data.getSize();
unsigned char *f_buffer;
f_buffer = (unsigned char *)m_data.getData();
unsigned cnt = 0;
// Some code
我在 C# 中做了如下:
<ComboBox Name="WriteFileCombo" >
<ComboBoxItem Content="Firmware To Download" />
<ComboBoxItem Content="Binding FirmwarePath" />
</ComboBox>
<Button Content="..." Command="Binding Path=WriteFilePathCommand" Name="FileDialogBtn"/>
<Button Content="Write File" Command="Binding Path=WriteFileCommand" Name="WriteFileBtn" />
查看模型类:
private string _selectedFirmware;
public string FirmwarePath
get return _selectedFirmware;
set
_selectedFirmware = value;
OnPropertyChanged("FirmwarePath");
// Gets called when Browse Button (...) is clicked
private void ExecuteWriteFileDialog()
var dialog = new OpenFileDialog InitialDirectory = _defaultPath ;
dialog.DefaultExt = ".txt";
dialog.Filter = "TXT Files (*.txt)|*.txt";
dialog.ShowDialog();
FirmwarePath = dialog.FileName;
WriteFileCommandExecuted();
// Gets called when Write Button is clicked
public void WriteFileCommandExecuted()
// same logic as in c++
如何在我的 WriteFileCommandExecuted()
方法中执行与 C++ 代码中相同的操作?
请帮忙:)
【问题讨论】:
【参考方案1】://Inside void WriteFileCommandExecuted()
System.IO.StreamReader sr = new System.IO.StreamReader("File Path");
textBox1.Text = sr.ReadToEnd();
//Or if you need more control
System.IO.FileStream fs = new System.IO.FileStream(FirmwarePath, System.IO.FileMode.CreateNew);
System.IO.StreamReader sr = new System.IO.StreamReader(fs);
string textdata = sr.ReadToEnd();
int fileSize = (int)new System.IO.FileInfo(FirmwarePath).Length;
Byte f_buffer = new Byte();
f_buffer = Convert.ToByte(textdata);
int cnt = 0;
//The FirmwarePath is the path returned to you by your file dialog box.
//If you want to write the class you will need to instantiate is System.IO.StreamWriter then //invoke the "write" method
【讨论】:
这会读取文件并将其存储在文本框中。我想做lilmore。检查代码 :)MemoryBlock
基本上创建一个大小为 0 的未初始化块。如何在 C# 中完成 dat?
不能,C# 代码在托管环境(.Net 运行时)中运行以上是关于在 WPF 中单击按钮执行文件操作的主要内容,如果未能解决你的问题,请参考以下文章