我想更改對象的寬度,具體取決於用戶爲我的Visual Studio窗體創建窗口的大小。我的代碼是:如何訪問表單的寬度
webBrowser1.Width = Form1.Width - 42;
和Visual Studio說「一個對象引用是所必需的非靜態字段,方法或屬性」
我想更改對象的寬度,具體取決於用戶爲我的Visual Studio窗體創建窗口的大小。我的代碼是:如何訪問表單的寬度
webBrowser1.Width = Form1.Width - 42;
和Visual Studio說「一個對象引用是所必需的非靜態字段,方法或屬性」
的Width
在Form1
類的一個實例成員。所以,你可以使用一個Form1
實例這樣稱呼它:
Form1 myForm = new Form1();
var newWidth1 = myForm.Width - 42 // Calling instance member from an instance - Correct
var newWidth2 = Form1.Width - 42 // Calling instance member from a class - Incorrect
我看不到如何執行此 –
表格的寬度不是形式的靜態成員,所以你必須通過表單的實例來調用它。所以你實際上需要你的表單的對象來訪問寬度。這是合乎邏輯的,因爲您可以創建具有不同大小的多個窗體實例。
對於實現:
你的形式在程序的某個時候開始。所以,你可能已經寫爲:
new Form1().Show();
,或者如果形式是它在Program.cs
開始WinForms應用程序的啓動方式:
Application.Run(new Form1());
你可以做的是保存實例
var yourForm = new Form1();
yourForm.Show();
現在你可以訪問表格寬度:
在一個變量形式另一種可能性是保存寬度靜態屬性在您的形式:
public partial class Form1 : Form
{
public static int UniversalWidth;
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
UniversalWidth = Width;
}
//...
現在,你可以通過UniversalWidth
實地訪問寬度:
webBrowser1.Width = Form1.UniversalWidth;
然而,我不推薦使用它,因爲如果您打開窗體的多個窗口,它將不起作用。
因爲我不知道你的整個項目,所以代碼實際上可能寫在你的Form1類中。然後,你當然可以訪問寬度這樣的:
webBrowser1.Width = this.Width;
或者,如果你想從另一個類訪問的大小,你可以通過構造給這個班的形式:
var otherClass = new yourOtherClass (this);
然後其他類的構造函數看起來是這樣的:
public yourOtherClass (Form1 yourForm)
{
webBrowser1.Width = yourForm.Width;
}
爲了得到更精確的信息,請p提供更精確的信息。
@JacobBates是否幫助您?如果它解決了您的問題,請不要忘記將其標記爲答案,因爲這有助於您和更廣泛的社區找到解決的問題。 – MetaColon
Form1是一個類型,而不是像webBrowser1這樣的變量。當然你的意思是'this.ClientSize.Width' –
謝謝!錯誤消失了!我只是不知道該把代碼放在哪裏。 –