Visual c#form1不包含宽度的定义
我正在尝试调整窗体窗口的大小,我找到的所有MSDN页面都告诉我只使用form.width或form.height等,但Visual studio没有在IntelliSense弹出窗口中显示这一选项 如果我使用这个.width,它会弹出,但是如果我想在form1中单击一个按钮来调整form2的大小呢?如何按表单名称更改属性 我错过了什么Visual c#form1不包含宽度的定义,c#,winforms,visual-studio-2013,C#,Winforms,Visual Studio 2013,我正在尝试调整窗体窗口的大小,我找到的所有MSDN页面都告诉我只使用form.width或form.height等,但Visual studio没有在IntelliSense弹出窗口中显示这一选项 如果我使用这个.width,它会弹出,但是如果我想在form1中单击一个按钮来调整form2的大小呢?如何按表单名称更改属性 我错过了什么 using System; using System.Collections.Generic; using System.ComponentModel; usin
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1.Width = 800; //ERROR: does not contain a definition for width
this.Width = 800; //this is allowed though
Form2.Width = 800; //ERROR: does not contain a definition for width
}
private void Form1_Load(object sender, EventArgs e)
{
//thought mayeb I need a size 1st so tried this
Form1.Size = new System.Drawing.Size.(1029, 640); //ERROR: An object reference is required for ... 'System.Windows.Forms.Form.Size.get'
//dunno why this doesnt work its apparently correct acording to MSDN
//https://msdn.microsoft.com/en-us/library/aa984427(v=vs.71).aspx
//https://msdn.microsoft.com/en-us/library/ms229606(v=vs.110).aspx
}
}
}
自从很久以前我玩VB6以来,我还没有做过任何VisualStudioUI的东西,我确信过去可以通过名称访问任何表单并对其进行操作
更新:我根据评论将width
更改为width
,问题仍然存在,因此区分大小写似乎不是问题
更新:我知道现在发生了什么。所以我真正需要知道的是,我如何引用在启动时已在单独表单中执行的form1实例
所以我实例化form2并展示它。现在,如果我想在form2上有一个按钮来操作form1,当我从未将其实例化为变量时,如何引用它?(由于form1在程序启动时自动运行)C#区分大小写<代码>宽度应为
宽度
。此外,正如您在代码注释中包含的后一个错误所示,这些(Form1和可能的Form2)是class
标识符,而不是实例。您只能通过类名引用类的静态元素。正如Uuerdo所说,width
应该是width
。另外,(正如他所说)Form1
和Form2
是类名称,不能用它们来影响C#中表单的值。相反,您希望影响当前实例上的那些值,该实例在C中由this
表示#
this.Size=新系统.Drawing.Size.(1029640)
如果我没记错的话,在VB中,你可以像现在一样通过它们的类名修改表单,但在C#中不是这样的,试试下面的方法,你就会发现它是可行的
private void button1_Click(object sender, EventArgs e)
{
this.Width = 800; //this is in reference to Form1
var frm2 = new Form2();
frm2.Width = 800;
frm2.ShowDialog();
frm2.Dispose();
}
这是因为您需要创建Form1
的一个实例,以获取Width属性,例如var frmForm1=new Form1()代码>然后frmForm1.Width
是可访问的,其他方面这个。Width
是合适的。我建议大家阅读关键字this
以及创建对象的实例
@MethodMan ah好的。但是,这不会创建一个在运行时已经显示的表单1的附加副本吗?我尝试将此添加到末尾,但我遇到了memmory异常错误//另一个测试。。。var frm=新的Form1();frm.宽度=800;frm.ShowDialog();我认为您需要阅读更多内容,并了解创建对象实例时会发生什么。使用我在答案中输入的代码可以正常工作,无需任何额外的内存即可解决您对内存异常的担忧。请阅读Dispose方法以了解那里发生了什么。。谢谢