1

我在使用 ac# 代码时遇到问题。首先,我不是 ac# 开发人员,我刚刚获得了这个项目,这对我来说真的很沮丧。但是供应商提供了一些代码供我们运行。那里的代码没有 Main() 函数,我猜这将是入口点,所以我试图在创建 WPF 项目时根据默认代码添加它...在 VS2012

这是代码。这是 xaml 窗口的 C# 代码。最后,您可以看到我正在尝试添加 Main() 来调用 initializeComponent。但我收到一些错误。

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();
    }
}

}

我得到的一个错误是:

Interfaces.Connection.ConnectionDialog' 不包含采用 0 个参数的构造函数。

不确定构造函数是什么,也不确定我需要传入哪些参数。

另一个错误:

Interfaces.Connection.ConnectionDialog' 不包含“Run”的定义,并且找不到接受 Interfaces.Connection.ConnectionDialog' 类型的第一个参数的扩展方法“Run”(您是否缺少 using 指令或程序集引用?)

每当您在 VS 中创建 WPF C# 项目时,我只是从默认代码中复制了 .Run() 。如果不需要,我可以把它拿出来。

如何在我的场景中从 Main() 初始化组件?如前所述,我不是 ac# 开发人员,所以如果你能做到一点技术含量,以便初学者 c# 的人能够理解,那真的很棒!

如果您有进一步的澄清问题,我会尽力回答。

提前致谢。

4

3 回答 3

7

首先,您发布的代码看起来像生成的代码。根本不应该手动触摸它。

此外,您不需要MainWPF 应用程序中的方法。当您只是创建一个新的 WPF 项目时,您也没有Main方法。该框架在幕后为您生成并自动显示主窗口。如果您想在应用程序启动时做某事,该App.xaml文件包含一个Application具有Startup事件的对象。使用 this 而不是Main方法。

此外,InitializeComponent应该由框架自动调用。无需手动调用它。

于 2013-07-03T16:47:30.940 回答
2

关于Interfaces.Connection.ConnectionDialog does not contain a definition for 'Run'错误:编译器这么说是因为它是真的。该类中没有 Run 方法。您正在尝试调用不存在的方法。你可能应该把app.Run();线拿出来。

要调用InitializeComponentfrom Main(),看起来您已经正确执行了。您的app.InitializeComponent();线路正在调用正确的方法。

于 2013-07-03T16:48:23.163 回答
1

如果您不了解 C# 而您的供应商知道,请让您的供应商提供一个完整的、可编译的示例。这应该是交易的一部分,如果不是,请确保它尽快得到它的一部分。

这听起来可能很奇怪,但如果我花钱请人卖给我一辆车,我不会满足于得到一个后备箱和两个轮子、一些电线和一张简陋的蓝图,说明组装后的样子。我想要一辆功能齐全的汽车。没有车,没有交易。你不应该做一个“需要一些组装”的交易。您应该购买产品,而不是建筑套件。

于 2013-07-31T14:28:31.000 回答