我在c#的.cs文件中为winforms应用程序编写了一堆代码。应用程序运行正常,一切都在它的位置。
这样的事情:
using..
namespace Temp
{
public class Temp : Form
{
Button b1;
TextBox t1;
Temp()
{
b1.Text = "Some Text";
b1.Size = new Size(50,20);
...
}
void function1()
{
// stuff
}
static void Main()
{
Application.Run(new Temp());
}
}
}
如何修改我的代码(或以某种方式修复它),以便设计视图在正确的位置和视图中显示元素,以便我可以直观地编辑它们,而不必试用/错误一切。
编辑澄清
我的应用运行正常。问题是,我没有使用设计器来创建应用程序,所以在设计器视图中,应用程序是空的。但是当我运行它时不是空的,因为所有内容都以编程方式放在.cs文件中。我的问题是,如何解决这个问题,以便设计师正确显示对象。
除了重新设计所有东西之外没有快速解决方法吗?
答案 0 :(得分:3)
因此,要在设计师中展示这一点,您必须了解设计师的工作方式。
对于每个MyForm.cs,都会自动创建一个名为MyForm.Designer.cs的文件。在此Designer文件中,只有一个名为InitializeComponents()
的函数。此函数将在MyForm.cs文件的构造函数中调用。
设计查看器本身负责Designer文件,因此在设计视图打开时对该文件的任何更改通常都会被丢弃。此外,如果您将一些代码放入不需要的设计器文件中,设计器将被截断。
接下来的问题是,这种截断何时发生?当您刚刚打开表单的设计查看器时,它将从Designer.cs文件读取所有内容而不进行任何更改。如果您对设计师对表单进行任何更改,则将使用已读入的所有设置(包括您的最新更改)重写完整文件。
如果您将设计器文件也作为源代码视图打开,可以监视此行为,在设计模式中进行一些小的更改,然后仔细查看源文件的左侧。将会有标有黄色或绿色标记的更改。
现在,在完成所有这些信息后,您可以尝试以下过程将代码放入设计器中:
textBox1
行InitializeComponent()
函数中所以这是要走的路。最后但并非最不重要的另一个小技巧:
每个程序员都使用using语句来不写每个类的整个路径(如System.Windows.Forms.TextBox
),但设计者总是写出整个路径。为了使复制和粘贴会话更容易,您还可以在文件顶部添加using语句。在设计视图中保存和更改内容后,所有这些内容都将自动重写。因此,在将内容添加到Designer.cs文件时,不需要手动添加所有这些路径。
答案 1 :(得分:0)
在这种情况下,您需要将设计器代码从CS复制到designer.cs。这样你就可以使用设计师了。我认为这是最简单的方法。
答案 2 :(得分:0)
您最好的选择可能是使用设计器中的属性面板来设置位置等(或者只是拖动它们?)。
你可以在设计器文件中搜索表单(something.Designer.cs),但这不是一个奇妙的想法,因为它可能对改变事物的方式非常敏感设计师没想到。话虽如此,看起来你实际上并没有使用设计师制作你的表格(一类是partial
),在这种情况下你是SOL。
答案 3 :(得分:0)
在您创建新的winform时,看起来这个文件是从类文件中被黑客攻击而不是由系统生成的。
至少需要一个InitializeComponent();在你的构造函数中调用。但是,在创建文件(例如Dispose())时,您缺少许多为您生成的其他代码。
最好的办法是在解决方案资源管理器中右键单击您的项目,然后单击“添加Windows窗体”,然后重新开始。