遇到了個問題,想通過用戶自定義是生成掃雷界面,Form2為自定義掃雷行數和列數視窗,視窗中有確定按鈕,我在Form2中設定了一個bool isSure變數判斷用戶是否點擊確定按鈕,還設定了hang變數獲取用戶自定義輸入的掃雷界面行數,Form1為主視窗,Form1中設定LeiBtn類中的x變數表示界面行數。現在的問題是在自定義視窗中設定完行數和列數后,主視窗雷區的界面不重繪,仍為初始狀態。請大神們幫著看看怎么辦呀!!
代碼如下:
Form2.cs:
private void Button1_Click(object sender, EventArgs e)
{
isSure=true;
Form1 f = new Form1();
f.Defined();// Defined函式為顯示雷區函式
this.Close();
}
Form1.cs:
public void Defined()
{
if (Form2.isSure == true)
{
MessageBox.Show("條件1");
LeiBtn.x = Form2.hang;
LeiBtn.y = Form2.row;
DisplayMine();
foreach (Control obj0 in this.Controls)
{
this.Controls.Clear();
}
}
else
{
MessageBox.Show("初始狀態");
LeiBtn.x = 10;//雷區初始狀態行數為10
LeiBtn.y = 10;//雷區初始狀態列數為10
DisplayMine();
}
}
public void DisplayMine()
{
for (int i = 0; i < LeiBtn.x; i++)
{
for (int j = 0; j < LeiBtn.y; j++)
{
LeiBtn btn = new LeiBtn();
btn.Size = new Size(25, 25);
btn.Location = new Point(20 + i * 25, 80 + j * 25);
this.Controls.Add(btn);
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
Defined();
}
uj5u.com熱心網友回復:
public void DisplayMine(){
for (int i = 0; i < LeiBtn.x; i++)
{
for (int j = 0; j < LeiBtn.y; j++)
{
LeiBtn btn = new LeiBtn();
btn.Size = new Size(25, 25);
btn.Location = new Point(20 + i * 25, 80 + j * 25);
this.Controls.Add(btn);
}
}
是生成掃雷界面的, LeiBtn.x,LeiBtn.y應該是你定義的行和列,你應該先清除雷區的btn,再DisplayMine(),別外再在者說封裝,你要傳遞函式,不要總用公用變數,他是可以被其他操作改變的
uj5u.com熱心網友回復:
我按照你提供的思路進行了重新改進,在Form2.cs中將自定義獲取的行數和列數賦值給了LeiBtn.x,LeiBtn.y。然后我使用foreach (Control obj0 in this.Controls){
this.Controls.Clear();
}
遍歷每個空間,進行洗掉,在執行DisplayMine()
代碼如下: if (Form2.isSure == true)
{
MessageBox.Show("進入重繪掃雷界面");
LeiBtn.x = Form2.hang;
LeiBtn.y = Form2.row;
foreach (Control obj0 in this.Controls)
{
this.Controls.Clear();
}
DisplayMine();
}
else
{
MessageBox.Show("初始狀態");
LeiBtn.x = 10;
LeiBtn.y = 10;
DisplayMine();
}
但界面不重繪,剛學習編程沒多久,小白一個,麻煩你在幫著看一下,謝謝
uj5u.com熱心網友回復:
跟蹤displaymineuj5u.com熱心網友回復:
按我的理解Form1是主視窗,Form2是設定視窗,在Form1上按設定彈出Form2,Form2修改關倍訓到Form1,Form1的界面改變。是要這樣的效果對吧。但是Form2里的Form1是新建的區域變數,跟作為主視窗的Form1沒有任何關系所以是無效的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/155174.html
標籤:C#
