0

構成ファイルを編集する C# Windows フォーム アプリケーションがあります。基本的に XML ファイルから文字列を読み取り、必要に応じて管理者がその文字列を編集できるようにします。

ユーザーが Web サイトにログインしてアプリケーションを実行できるように、これをサーバーにセットアップするように依頼されました。私はほとんど Web 開発を行っていませんが、Windows フォーム アプリを Web フォーム アプリに変換できないという回答がオンラインでたくさん見られます。しかし、これらの回答は特に UI の変換に言及しているようです。

私は本当に機能を移植することにのみ興味があります。私の UI は、文字列を編集するためのテキスト ボックス、現在の文字列の値を表示するリスト ビュー、および変更を送信するためのボタンにすぎません。コンテンツの新しい UI をデザインできることを嬉しく思います。しかし、機能はどうですか?現在の C# コードを Web UI にフックすることはできますか? または、Web 用に別の方法でコーディングする必要がありますか?

button_Click と KeyDown 関数を除けば、実際には次の 2 つしかありません。

文字列の内容をリストします。

    /// <summary>
    /// Find current phrases being ignored and list them
    /// </summary>
    internal void listPhrases()
    {
        string myFile = Environment.CurrentDirectory + "\\CGEmailCnctr.exe.config";

        string strFile = File.ReadAllText(myFile);
        var sb = new StringBuilder(strFile);

        string getThis = "<add key=\"messageFilter\" value=\"";
        string subStr = strFile.Substring(strFile.IndexOf(getThis) + getThis.Length);
        string[] igPhrases = subStr.Substring(0, subStr.IndexOf(";\"")).Split(';');

        foreach (string s in igPhrases)
        {
            listView1.Items.Add(s);
        }
    }

文字列に追加します。

    /// <summary>
    /// Checks to see if the phrase is already in the list.  If not, then add it.
    /// </summary>
    /// <param name="addThis"></param>
    internal void addPhrase(string addThis)
    {
        foreach (ListViewItem lvi in listView1.Items)
        {
            if (addThis == lvi.Text)
            {
                lvi.Selected = true;
                MessageBox.Show("List of phrases already contains \"" + addThis + ".\"  Please check the phrase again. \nIf the problem persists, contact your system administrator.");
                return;
            }
        }

        string myFile = Environment.CurrentDirectory + "\\CGEmailCnctr.exe.config";
        string pattern = "messageFilter";
        string pattern2 = ";\"";
        string igPhrase = ";" + addThis + ";\"";

        string strFile = File.ReadAllText(myFile);
        var sb = new StringBuilder(strFile);

        //Find messageFilter, the key we need to change, and get the index of it
        int index = strFile.IndexOf(pattern);
        string after = strFile.Substring(index);

        strFile = strFile.Substring(0, index) + strFile.Substring(index).Replace(pattern2, igPhrase);

        //MessageBox.Show(strFile);

        try
        {
            File.WriteAllText(myFile, strFile);

            MessageBox.Show("Operation complete.  Messages with the phrase \"" + addThis + "\" in the subject line will no longer automatically generate ChangeGear tickets.", "Phrase Added");

            listView1.Items.Add(addThis);
        }
        catch (Exception ex)
        {
            MessageBox.Show("Operation failed. \n" + ex.ToString());
        }
    }

何かに光を当てる場合に備えて、私の using ステートメント:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
4

1 に答える 1

1

このコードを Web フォームで使用しようとすると、いくつかの問題があります。最初の 1 つは、代わりEnvironment.CurrentDirectoryに使用する必要がある場合があることServer.MapPathです。もう 1 つは、コード内で直接 UI を呼び出すことです。たとえばMessageBox.ShowListViewItem、UI に接続するコードを再考する必要があるため、まだ道のりがあります。

コードを移植するよりも、Web フォームでアプリケーションをゼロから再作成することをお勧めします。その方が簡単で、Web フォームの仕組みをよりよく理解するのに役立ちます。

于 2013-04-12T22:29:17.777 に答える