从 winForms 移植到 Windows phone 8.0 C#

Posted

技术标签:

【中文标题】从 winForms 移植到 Windows phone 8.0 C#【英文标题】:Port from winForms to Windows phone 8.0 C# 【发布时间】:2016-06-10 21:29:33 【问题描述】:

有人可以通过将 winForms 中编写的这段 c# 代码移植/翻译到 Windows phone 8.0 来帮助我吗?我真的很挣扎,我无法让它工作我可能阅读了我可以拿到的每一个文档,但我就是不能让它工作。我知道 stackover 流不是人们为你编写代码的地方,但我没有希望.. 任何帮助都值得赞赏.这是代码:

private static string[] _folderPaths = Directory.GetDirectories(@"Folders");
    private string[] _imagePaths;
    private List<string> _questionsPaths = new List<string>();
    private List<string> _correctAnswersPaths = new List<string>();
    private List<string> _allAnswersPaths = new List<string>();

for (int i = 0; i < _folderPaths.Length; i++)
        
            var _tempLocations = Directory.GetFiles(_folderPaths[i], (i + 1).ToString() + "*.txt*");
            _imagePaths = Directory.GetFiles(_folderPaths[i], "*.png", SearchOption.TopDirectoryOnly);
            foreach (string item in _tempLocations)
            
                if (item == "Folders\\" + (i + 1).ToString() + "\\" + (i + 1).ToString() + ".txt")
                
                    _questionsPaths.Add(item);
                
                if (item == "Folders\\" + (i + 1).ToString() + "\\" + (i + 1).ToString() + "answer" + ".txt")
                
                    _correctAnswersPaths.Add(item);
                
                if (item == "Folders\\" + (i + 1).ToString() + "\\" + (i + 1).ToString() + "answers" + ".txt")
                
                    _allAnswersPaths.Add(item);
                
            
        

【问题讨论】:

那么什么不起作用?它怎么不工作?它哪里出错了?你所说的只是“我不能让它工作”,这是非常模糊的。你这是什么意思? 我放弃了为 windows phone 做这件事只是因为我无法将这段 winForms 代码放入我的 windows phone 应用程序中。我没有留下任何样品来表示我真的很抱歉.. 【参考方案1】:

Windows Phones 中使用的对应类型是(当然不是精确映射):

Directory -> StorageFolder
Directory.GetDirectories -> StorageFolder.GetFoldersAsync
Directory.GetFiles -> StorageFolder.GetFilesAsync

所以翻译后的代码应该是这样的(你也需要熟悉新的await-async关键字)

using Windows.Storage; 

var folder = await ApplicationData.Current.LocalFolder.GetFolderAsync("Folders"); 
var subFolders = await folder.GetFoldersAsync();
foreach (StorageFolder subFolder in subFolders)

    var tempFiles = await subFolder.GetFilesAsync(...

【讨论】:

他们现在在代码级别将目录重命名为文件夹,而不仅仅是在 UI 级别?哇。 ApplicationData.Current.LocalFolder 指的是哪里?我得到 FileNotFoundException @MattiVirkkunen 我可以互换使用它们 这是我的“文件夹”文件夹 Desktop\WPBluetoothDemo\WPBluetoothDemo\Bin\Debug 我如何访问它的当前位置? 试试Package.Current.InstalledLocation

以上是关于从 winForms 移植到 Windows phone 8.0 C#的主要内容,如果未能解决你的问题,请参考以下文章

将 WinForms 应用程序移植到 Mac OS

python 项目移植可行性,从windows移植到Linux 。

如何将 RPC XDR 从 UNIX 移植到 Windows? [关闭]

将开发从 100% 的 Windows 缩放转移到 150% 的 WinForms 窗口

将数据序列化代码从 C++ linux/mac 移植到 C++ windows

将 Qt 应用程序从 Linux 移植到 Windows