web-dev-qa-db-ja.com

C#コンソールアプリケーションをGUIと統合する

私はC#を使用して3か月未満ゼロから開発してきましたが、現在入手しているのはVisual Studio 2015で作成されたコンソールアプリケーションです。このアプリケーションはWebサービスを使用し、XMLは逆シリアル化され、フォーマットされてAccessデータベースに保存されます。最後に、成功またはエラーのXMLがWebサーバーに返送されます。アプリケーションを構成する3つのクラス:メインストリームクラス、a SOAPクライアントクラス、およびDBクラス。

これを投稿する理由は、コンソールアプリをGUIと統合して、逆シリアル化されたXMLから取得したデータを表示する必要があるためです(これは、利害関係者が考えていなかったプロジェクトの拡張です)。開発段階に進む前に)、しかし私はそれを行う方法がわかりません。

これまでのところ、「WPFアプリケーションの構築」「Windowsフォーム」について読んでいます。 -)しかし、ドキュメントは圧倒的で、私が正しい道を進んでいるかどうかはわかりません。そのため、コーディングに時間を浪費する前に、いくつかのガイドラインを教えてください。統合するGUIを備えたコンソールアプリケーション?コンソールアプリケーションをGUIベースのアプリケーションにする方法はありますか?

GUIをすばやく実装するチュートリアルへの実用的なリンクを提供していただければ幸いです。時間がなくなり、今すぐコーディングを開始する必要があります。これを読んで私を助けてくれてありがとう。

8
andres_v

必要最低限​​のGUIを探していて、洗練されているように見えることをあまり心配していない場合は、プロジェクトを右クリックして->追加-> Windowsフォームを選択することをお勧めします。

次に、コンソールアプリをGUIベースのアプリケーションに変換するのは、フォームから派生したクラスをインスタンス化して.ShowDialog()を呼び出すだけです。

例:

using System.Windows.Forms;

//Note: if you create a new class by clicking PROJECT->Add Windows Form,
//then this class definition and the constructor are automatically created for you.
//Open MyFancyForm.cs, right click on the form, and click View Code to see it.
public partial class MyFancyForm : Form
{
    public MyFancyForm()
    {
        InitializeComponent();
    }
}

static void Main(string[] args)
{
     var guiForm = new MyFancyForm();

     guiForm.ShowDialog();//This "opens" the GUI on your screen
}

とても簡単です。フォームデザイナにアクセスできるように、クラスだけでなくWindowsFormとしてプロジェクトに新しいクラスを追加することをお勧めします。もちろん、フォームクラスにフィールドを追加し、GUIに適切に入力するのはあなた次第です。

編集:コンソールを完全に置き換える場合は、プロジェクト->プロパティを右クリックし、「出力タイプ」をWindowsアプリケーションに変更します。

2
user2647513

あなたが達成しようとしていることは、実際には比較的単純で簡単です。新しいWindows FormsまたはWPFアプリケーションから既存のコンソールアプリケーションプロセスを起動し、その入力ストリームと出力ストリームをサブスクライブする必要があります。

現在のコンソールアプリケーションを表示ウィンドウとして表示したくない場合は、 CreateNoWindow をtrueに設定することを忘れないでください。

var processStartInfo = new ProcessStartInfo(fileName, arguments);
processStartInfo.UseShellExecute = false;
processStartInfo.ErrorDialog = false;
processStartInfo.CreateNoWindow = true;
// etc.

これがすべてのステップを通過する記事です: C#アプリケーションへのコンソールの埋め込み

上記の記事のコードは、詳しく調べたい場合は GitHub にあります。これは、どのような種類の埋め込みを実行できるかの例です。

enter image description here

このプロジェクトでは、コンソール全体を非表示にすることも、データをさらに処理するカスタムUIコントロールと並べて表示することも簡単です。

3
Timo Salomäki

「理由」の領域を入力せずに、コンソールアプリケーションプロジェクトがある場合は、[プロジェクト]-> [プロパティ]-> [アプリケーション]を右クリックして、出力タイプをクラスライブラリ(またはWidowsアプリケーション)に変更できます。

クラスライブラリを選択すると、どこからでもライブラリを利用できます。

See attached image...

0
qazcde