C# 未知错误,无错误或崩溃。二次PC机上的C程序

C# 未知错误,无错误或崩溃。二次PC机上的C程序,c#,winforms,C#,Winforms,我在下面的系统上专门为在线游戏《放逐之路》编写了一个自定义计算器 Windows 7家庭高级版, 服务包1, 64位操作系统 使用 适用于Windows桌面的Visual Studio Express 2013, 发布构建,任何CPU .exe文件复制到c:\drive,并通过双击程序exe文件运行。这在我写程序的电脑上运行得很好 但是,当我将程序复制到辅助PC并从该PC运行时,它看起来不正确。创建的自定义文本框与它们应该位于的位置不对齐 我使用以下线程中的代码创建文本框: 在构造函数中,我调用

我在下面的系统上专门为在线游戏《放逐之路》编写了一个自定义计算器

Windows 7家庭高级版, 服务包1, 64位操作系统

使用

适用于Windows桌面的Visual Studio Express 2013, 发布构建,任何CPU

.exe文件复制到c:\drive,并通过双击程序exe文件运行。这在我写程序的电脑上运行得很好

但是,当我将程序复制到辅助PC并从该PC运行时,它看起来不正确。创建的自定义文本框与它们应该位于的位置不对齐

我使用以下线程中的代码创建文本框:

在构造函数中,我调用了一个方法,用一些基本信息初始化文本框,如下所示:

// txtBoxPDMin
box.Location = new System.Drawing.Point(155, 191);
box.Name = "txtBoxPDMin";
box.TabIndex = 0;
box.TextChanged += new System.EventHandler(txtBox_TextChanged);
box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
boxes.Add(box);
在最后一个文本框之后:

foreach (TextBoxMod mod in boxes)
{
    mod.Size = new System.Drawing.Size(40, 22);
    if (mod.Name == "txtBoxAttSpd")
        mod.Text = "0.00";
    else
        mod.Text = "0";

    mod.ForeColor = Color.PaleTurquoise;
    mod.BackColor = SystemColors.ControlDarkDark;
    mod.Enter += new System.EventHandler(txtBoxMods_Enter);

    this.Controls.Add(mod);
}
我有一个图像文件,显示了两台计算机上程序的外观图片,您可以清楚地看到其中的区别:

在这幅图中,左侧显示了一个在我的主PC上运行的程序示例,我在那里进行了实际编程,它没有在调试模式下运行。这是构建的,然后复制到一个单独的文件夹中运行。右边的图像是我的第二台电脑上的图像,因为你可以看到自定义文本框对齐错误,有些甚至没有显示在表单上

所以我的问题是,是什么导致了这个问题?没有错误或崩溃

感谢您的帮助

路长

**编辑**

    private void InitializeTextBoxes()
    {
        boxes = new List<TextBoxMod>();
        box = new TextBoxMod();

        // txtBoxPDMin
        box.Anchor = ((System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left));
        box.Location = new System.Drawing.Point(155, 191);
        box.Name = "txtBoxPDMin";
        box.TabIndex = 0;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxPDMax
        box.Location = new System.Drawing.Point(220, 191);
        box.Name = "txtBoxPDMax";
        box.TabIndex = 1;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxFDMin
        box.Location = new System.Drawing.Point(155, 219);
        box.Name = "txtBoxFDMin";
        box.TabIndex = 2;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxFDMax
        box.Location = new System.Drawing.Point(220, 219);
        box.Name = "txtBoxFDMax";
        box.TabIndex = 3;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxLDMin
        box.Location = new System.Drawing.Point(155, 247);
        box.Name = "txtBoxLDMin";
        box.TabIndex = 4;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxLDMax
        box.Location = new System.Drawing.Point(220, 247);
        box.Name = "txtBoxLDMax";
        box.TabIndex = 5;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxCDMin
        box.Location = new System.Drawing.Point(155, 275);
        box.Name = "txtBoxCDMin";
        box.TabIndex = 6;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxCDMax
        box.Location = new System.Drawing.Point(220, 275);
        box.Name = "txtBoxCDMax";
        box.TabIndex = 7;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxAttSpd
        box.Location = new System.Drawing.Point(155, 303);
        box.Name = "txtBoxAttSpd";
        box.TabIndex = 8;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxAttSpd_KeyDown);
        boxes.Add(box);

        foreach (TextBoxMod mod in boxes)
        {
            mod.Size = new System.Drawing.Size(40, 22);
            if (mod.Name == "txtBoxAttSpd")
                mod.Text = "0.00";
            else
                mod.Text = "0";

            mod.ForeColor = Color.PaleTurquoise;
            mod.BackColor = SystemColors.ControlDarkDark;
            mod.Enter += new System.EventHandler(txtBoxMods_Enter);
            //box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
            this.Controls.Add(mod);
        }
    }

您可以发布设置每个TextBoxMod的X、Y位置的代码吗?代码中没有任何内容突出。您的标签看起来位置正确。标签和文本框是否是单独的控件?是否使用自动缩放和缩放?如果是这样,请确保它们匹配。是的,标签和文本框是单独的控件,我不知道您在“自动缩放”和“缩放”中指的是什么,我不认为它们是文本框或标签控件的VS IDE属性中的属性,所以我猜我没有使用任何一个。AutoScaleMode和AutoScaleDimensions是容器控件上的属性。您可能希望搜索所有cs文件以进行自动缩放。这些属性根据系统的dpi调整控件大小。这也许可以解释为什么它在不同的计算机上看起来不同。啊,我在表单上找到了AutoScaleMode,并将其设置为字体,因为文本框是表单上的控件。我会尝试更改它,看看会发生什么。
    private void InitializeTextBoxes()
    {
        boxes = new List<TextBoxMod>();
        box = new TextBoxMod();

        // txtBoxPDMin
        box.Anchor = ((System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left));
        box.Location = new System.Drawing.Point(155, 191);
        box.Name = "txtBoxPDMin";
        box.TabIndex = 0;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxPDMax
        box.Location = new System.Drawing.Point(220, 191);
        box.Name = "txtBoxPDMax";
        box.TabIndex = 1;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxFDMin
        box.Location = new System.Drawing.Point(155, 219);
        box.Name = "txtBoxFDMin";
        box.TabIndex = 2;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxFDMax
        box.Location = new System.Drawing.Point(220, 219);
        box.Name = "txtBoxFDMax";
        box.TabIndex = 3;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxLDMin
        box.Location = new System.Drawing.Point(155, 247);
        box.Name = "txtBoxLDMin";
        box.TabIndex = 4;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxLDMax
        box.Location = new System.Drawing.Point(220, 247);
        box.Name = "txtBoxLDMax";
        box.TabIndex = 5;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxCDMin
        box.Location = new System.Drawing.Point(155, 275);
        box.Name = "txtBoxCDMin";
        box.TabIndex = 6;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxCDMax
        box.Location = new System.Drawing.Point(220, 275);
        box.Name = "txtBoxCDMax";
        box.TabIndex = 7;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
        boxes.Add(box);

        box = new TextBoxMod();

        // txtBoxAttSpd
        box.Location = new System.Drawing.Point(155, 303);
        box.Name = "txtBoxAttSpd";
        box.TabIndex = 8;
        box.TextChanged += new System.EventHandler(txtBox_TextChanged);
        box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxAttSpd_KeyDown);
        boxes.Add(box);

        foreach (TextBoxMod mod in boxes)
        {
            mod.Size = new System.Drawing.Size(40, 22);
            if (mod.Name == "txtBoxAttSpd")
                mod.Text = "0.00";
            else
                mod.Text = "0";

            mod.ForeColor = Color.PaleTurquoise;
            mod.BackColor = SystemColors.ControlDarkDark;
            mod.Enter += new System.EventHandler(txtBoxMods_Enter);
            //box.KeyDown += new System.Windows.Forms.KeyEventHandler(txtBoxKeyMove_KeyDown);
            this.Controls.Add(mod);
        }
    }