1

ac# コードに問題があります。まず、私は ac# 開発者ではありません。このプロジェクトを与えられたばかりで、本当にイライラしています。しかし、ベンダーは実行するコードをいくつか提供してくれました。コードには Main() 関数がありませんでした。これはエントリ ポイントになると思います。そのため、VS2012 で WPF プロジェクトを作成するときに、デフォルト コードに基づいて追加しようとしています。

これがコードです。これは、xaml ウィンドウの C# コードです。最後に、initializeComponent を呼び出すために Main() を追加しようとしていることがわかります。しかし、いくつかのエラーが発生しています。

using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;


namespace Interfaces.Connection {


/// <summary>
/// ConnectionDialog
/// </summary>
public partial class ConnectionDialog : System.Windows.Window, System.Windows.Markup.IComponentConnector {


    #line 30 "..\..\MainWindow.xaml"
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
    internal System.Windows.Controls.TextBox txtConnectionServer;

    #line default
    #line hidden


    #line 33 "..\..\MainWindow.xaml"
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
    internal System.Windows.Controls.TextBox txtUsername;

    #line default
    #line hidden


    #line 36 "..\..\MainWindow.xaml"
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
    internal System.Windows.Controls.TextBox txtContext;

    #line default
    #line hidden


    #line 39 "..\..\MainWindow.xaml"
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
    internal System.Windows.Controls.PasswordBox txtPassword;

    #line default
    #line hidden


    #line 45 "..\..\MainWindow.xaml"
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
    internal System.Windows.Controls.Button btnOk;

    #line default
    #line hidden


    #line 46 "..\..\MainWindow.xaml"
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
    internal System.Windows.Controls.Button btnCancel;

    #line default
    #line hidden

    private bool _contentLoaded;

    /// <summary>
    /// InitializeComponent
    /// </summary>
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
    public void InitializeComponent() {
        if (_contentLoaded) {
            return;
        }
        _contentLoaded = true;
        System.Uri resourceLocater = new System.Uri("/Interfaces.Connection;component/mainwindow.xaml", System.UriKind.Relative);

        #line 1 "..\..\MainWindow.xaml"
        System.Windows.Application.LoadComponent(this, resourceLocater);

        #line default
        #line hidden
    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
    void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
        switch (connectionId)
        {
        case 1:
        this.txtConnectionServer = ((System.Windows.Controls.TextBox)(target));
        return;
        case 2:
        this.txtUsername = ((System.Windows.Controls.TextBox)(target));
        return;
        case 3:
        this.txtContext = ((System.Windows.Controls.TextBox)(target));
        return;
        case 4:
        this.txtPassword = ((System.Windows.Controls.PasswordBox)(target));
        return;
        case 5:
        this.btnOk = ((System.Windows.Controls.Button)(target));

        #line 45 "..\..\MainWindow.xaml"
        this.btnOk.Click += new System.Windows.RoutedEventHandler(this.btnOk_Click);

        #line default
        #line hidden
        return;
        case 6:
        this.btnCancel = ((System.Windows.Controls.Button)(target));

        #line 46 "..\..\MainWindow.xaml"
        this.btnCancel.Click += new System.Windows.RoutedEventHandler(this.btnCancel_Click);

        #line default
        #line hidden
        return;
        }
        this._contentLoaded = true;
    }
    /// <summary>
    /// Application Entry Point.
    /// </summary>
    [System.STAThreadAttribute()]
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
    public static void Main()
    {
        Interfaces.Connection.ConnectionDialog app = new Interfaces.Connection.ConnectionDialog();
        app.InitializeComponent();
        app.Run();
    }
}

}

私が得ている1つのエラーは次のとおりです。

Interfaces.Connection.ConnectionDialog' には、0 引数を取るコンストラクターが含まれていません。

コンストラクターが何であるかわからず、渡す必要がある引数もわかりません。

別のエラー:

Interfaces.Connection.ConnectionDialog' には 'Run' の定義が含まれておらず、タイプ Interfaces.Connection.ConnectionDialog' の最初の引数を受け入れる拡張メソッド 'Run' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

VS で WPF C# プロジェクトを作成するたびに、デフォルト コードから .Run() をコピーしました。不要なら、取り出せます。

私のシナリオで Main() から initializeComponent を行うにはどうすればよいですか? 前述のように、私は ac# 開発者ではないので、初心者の c# の人が理解できるように、少しでも技術的なことを教えていただければ、それは本当に素晴らしいことです!

また、説明についてさらに質問がある場合は、最善を尽くしてお答えします。

前もって感謝します。

4

3 に答える 3

7

まず、投稿したコードは生成されたコードのように見えます。手動で触れないでください。

Mainさらに、WPF アプリケーションではメソッドは必要ありません。新しい WPF プロジェクトを作成しただけでは、メソッドもありませんMain。フレームワークは、バックグラウンドでそれを生成し、メイン ウィンドウを自動的に表示します。アプリケーションの起動時に何かをしたい場合、App.xamlファイルはイベントApplicationを持つオブジェクトを保持します。メソッドStartupの代わりにこれを使用します。Main

また、InitializeComponentフレームワークによって自動的に呼び出される必要があります。手動で呼び出す必要はありません。

于 2013-07-03T16:47:30.940 に答える
2

エラーに関してInterfaces.Connection.ConnectionDialog does not contain a definition for 'Run': コンパイラはこれを言っています。そのクラスには Run メソッドがありません。存在しないメソッドを呼び出そうとしています。app.Run();おそらく、ラインを取り出すだけです。

InitializeComponentから呼び出すにはMain()、既に正しく実行しているようです。あなたのapp.InitializeComponent();行は正しいメソッドを呼び出しています。

于 2013-07-03T16:48:23.163 に答える
1

C# について十分な知識がなく、ベンダーに十分な知識がある場合は、ベンダーにコンパイル可能な完全な例を提供してもらいます。それは取引の一部であるべきです。そうでない場合は、できるだけ早くその一部になるようにしてください。

奇妙に聞こえるかもしれませんが、私が誰かにお金を払って車を売ってもらったとしても、トランクと 2 つの車輪、ワイヤー、そして組み立て後の外観のぼろぼろの設計図だけでは満足できません。私は完全に機能する車が欲しい。車も契約もありません。「一部組み立てが必要」と書かれた取引はしないでください。組み立てキットではなく、製品を購入する必要があります。

于 2013-07-31T14:28:31.000 に答える