我正在研究模擬運行業務方面的類項目。在主窗體上,用戶可以單擊一個按鈕,將仿真向前移動一個月。在一個單獨的表格中,用戶可以做某些基本的事情,比如在某些商品上設置銷售。當用戶向前推進一個月時,這些銷售應該結束,但如果不打開該表單,我無法撤銷銷售。這引發了許多問題。有人可以解釋一種方法,我可以在主窗體的單獨窗體中運行一個方法嗎?使添加表單上的方法對主表單可見
我試圖使該方法public中去,
InventoryForm.checkSales();
但它不會看到checkSales。
我正在研究模擬運行業務方面的類項目。在主窗體上,用戶可以單擊一個按鈕,將仿真向前移動一個月。在一個單獨的表格中,用戶可以做某些基本的事情,比如在某些商品上設置銷售。當用戶向前推進一個月時,這些銷售應該結束,但如果不打開該表單,我無法撤銷銷售。這引發了許多問題。有人可以解釋一種方法,我可以在主窗體的單獨窗體中運行一個方法嗎?使添加表單上的方法對主表單可見
我試圖使該方法public中去,
InventoryForm.checkSales();
但它不會看到checkSales。
難不成這是Windows窗體
難不成這是你的程序的結構
的類應該是相互可見的方式只要他們在相同的namespace。
如果你已經聲明,像這樣兩種形式:
而且要從Form2
訪問Form1
聲明的方法,你要麼必須創建一個新的Form1
的實例或確保您的方法是靜態的(通常是不好的做法,但它發生在例如Math Class),以便您只能使用類名訪問它。你也可以創建一個事件並以另一種形式訂閱它。
// Option 1 : (New Instance)
public class Form2()
{
Form2_Load(object sender, EventArgs e)
{
// Create new instance of Form1
Form1 form1 = new Form1();
form1.MyForm1Method();
}
}
//Option 2 : (Static)
public class Form2()
{
Form2_Load(object sender, EventArgs e)
{
// Method is static in Form1 (The class would be static too)
Form1.MyForm1Method();
}
}
// Option 3 (Event Subscribtion)
//Form1:
private void StartForm2Button_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.SomethingHappened += Form2_SomethingHappened;
form2.Show();
}
private Form2_SomethingHappened(object sender, EventArgs e)
{
Form2 form2 = (Form2)sender;
string data = form2.Data;
// create node
AddNode(node);
}
//Form2:
public event EventHandler SomethingHappened;
public string Data
{
get { return textBoxData.Text; }
}
private void SomeButton_Click(object sender, EventArgs e)
{
if (SomethingHappened != null)
SomethingHappened(this, EventArgs.Empty);
}
聲明checkSales方法靜態
Public static void checkSales() ...
您需要發佈您的代碼。描述代碼並不特別有用。 –
「這引發了很多問題。」所以我們有一些代碼並告訴我們什麼問題。 – Bit
什麼樣的表格? Web窗體? –