c中ShowDialog的問題,C WinForm ShowDialog 兩次

2022-07-12 02:11:37 字數 3220 閱讀 4670

1樓:匿名使用者

觸發離開事件,validate事件等等,

showdialog會中斷當前執行緒,並且,焦點移到dialog上面.所以,當前如果使用

系統的showdialog方法,那麼其父窗體將不能獲取焦點.

-------

有兩種方法可以實現,

1:在b的load事件中將焦點放到c控鍵上.

2:為b增加一個建構函式,引數為string,控制元件名稱.

在這個建構函式中,根據引數尋找當前(b)form中對應的控制元件,再呼叫該控制元件的focus()方法既可.

2樓:匿名使用者

你可以設定控制元件的tabindex屬性,在所有控制元件中tabindex最小的就是就是焦點控制元件

3樓:匿名使用者

在b窗體的load事件上寫textbox1.focus();就哦了

4樓:匿名使用者

屬於第二個窗體的form_load事件,用文字框的focus()獲得焦點。

5樓:匿名使用者

form1 f = new form1();

f.showdialog();

textbox1.focus();//焦點放到textbox1上觸發form_load

6樓:桓莘呼延夢秋

你就不能做個窗體,讓窗體置頂,彈出窗體嗎?一定要去showdialog

在c#winform中,如何阻止showdialog()的關閉!

7樓:夢遊的泳

要看你在彈窗中是否返回了dialogresult值,不管你返回dialogresult.ok或者dialogresult.no,彈窗都會關閉掉。

想不關閉彈窗,在驗證失敗後不要給dialogresult賦值就行

8樓:匿名使用者

非同步的視窗showdialog是不會阻塞主視窗的,你只能在主視窗執行緒建立。

如果一定要實現游標不能返回主視窗的邏輯,那就只能在主視窗中寫一些**來阻止主視窗被啟用。例如:

public partial class form1 : form

protected override void onactivated(eventargs e)

base.onactivated(e);

}private void button1_click(object sender, eventargs e)

).start();

}private void childformonformclosed(object sender, formclosedeventargs e)}

9樓:匿名使用者

簡單點說。你修改成功了才退出。沒有修改成功什麼都不做。只是彈出一個對話方塊讓使用者知道沒有修改成功,什麼原因的。

10樓:匿名使用者

把你修改按鈕的**貼出來看看

c# winform showdialog 兩次

11樓:

你這個寫法有問題,還有你需要在彈出窗體之前先進行判斷,是否視窗已開,showdialog()是有返回值的,你可以設個斷點檢視下!具體的還是要你自己進行debug才能找出來!

12樓:

以下兩種方式可以用show的方法開啟新窗體,並且在關閉的時候不釋放(一)protected override void onclosing(canceleventargs e)

(二)protected override void dispose(bool disposing)

//base.dispose(disposing);

hide();}

13樓:哥只是傳說

private void submitform_activated(object sender, eventargs e)

//標記2

除錯的時候怎麼看著從標記1到標記2,然後會再一次到標記1?

3秒後啟用窗體,結果主窗體不顯示,顯示彈出窗,在工作列點主窗體後,就會彈出兩個sf,但是一個sf是另一個的字窗體,下圖:問題補充:

兩個loginform並不都是最後一個的字窗體

14樓:網上衝浪玩家

具體問題出現在**這些**是看不出來的,不過根據這些**我給出一個解決方案,試試看吧,也不一定能解決你的問題:

loginform sf =new loginform();//在方法外面宣告一個登入框

private void submitform_activated(object sender, eventargs e)

//標記2

如何用c#實現對話窗體的showdialog()方法或者show()方法顯示窗體,並接收返回值

15樓:delphi天才

自定義控制元件的範圍

首先你要明白你定義控制元件的show()方法或者 showdialog()方法 都是你控制元件的 自定義方法 你要考慮如何實現 這個方法體,其實很簡單的,**如下

你需要定義一個 全域性變數

string a;

public string show()

這樣就能實現了 給分吧, 謝謝

16樓:蘿蔔天使

frmson frm = new frmson();

frm.showdialog();

string result = frm.result;

//此處的result是子窗體的屬性。

//使用子窗體的屬性,將子窗體的運算結果返回。

17樓:匿名使用者

dialogresult (自己命名一個變數) = messagebox.show()或showdialog();

那個變數返回的是 bool 型別的, 一般都對其進行判斷操作。

messagebox 實現對話方塊 showdialog()對話方塊的模式顯示 show()對話方塊的一般顯示

18樓:解燎

通過全域性變數來傳遞值

還有一個辦法,show以後,不關閉窗體,只是隱藏窗體,把值取得以後,再關閉窗體

19樓:

把this.dialogresult在關閉窗體時設定為指定值就可以了。

C中的多型問題

多型又稱後期繫結,是一種在執行時 just in time 指定方法呼叫地址的技術。通常,編譯器在編譯期就能知道方法的地址,執行時直接載入這個地址上的堆疊 net中指中間 就可以了,這被稱為靜態繫結或前期繫結,雖然很少使用這個術語。編譯器在編譯期不能確定方法的地址,而只能在執行時確定的就被稱為後期繫...

c語言程式設計中的小問題,C語言程式設計的小問題

1 可以的。a int a 100 0.5 將第三位小數加上去,通過強制型別轉換,則會丟棄小數部分 a a 100 由於a是double型別,故商包含2位小數 a int a 100 0.5 100.0 這樣合併會得到相同的結果。2 可以這樣操作。a int a 100 100.0 問題一 可以寫成...

C中的抽象類問題

例如public abstract class person 張三類 派生與person class 張三 person 也就是說抽象類裡可以有eat那樣的抽象方法 成員 需派生類去實現。也可以有像sleep那樣的已經實現了的方法 成員 介面與抽象類有類似的地方,建議也一起看看。介面的話 裡面只能是...