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