在c#多執行緒程式設計或者使用委託非同步程式設計的時候,經常會遇到這樣的錯誤:
從不是建立某個控制項的執行緒的其他執行緒呼叫該控制項。例如:
private void settextunsafebtn_click(
object sender,
eventargs e)
// this method is executed on the worker thread and makes
// an unsafe call on the textbox control.
private void threadprocunsafe()
有的人可能找到的方法是加這一句checkforillegalcrossthreadcalls = false,設定為不檢查呼叫控制項的合理性,但這樣是不安全的。
正確的解決方法是
查詢控制項的 invokerequired 屬性。
如果 invokerequired 返回 true,則使用實際呼叫控制項的委託來呼叫 invoke。
如果 invokerequired 返回 false,則直接呼叫控制項。
private void settextsafebtn_click(
object sender,
eventargs e)
// this method is executed on the worker thread and makes
// a thread-safe call on the textbox control.
private void threadprocsafe()
其中settext函式為:
private void settext(string text));}
else
}
windows窗體控制項的學習
checkbox 的學習 屬性 checked 該值指示核取方塊是否處於選中狀態,text 與此控制項關聯的文字 name 獲取或設定控制項的名稱 事件 click 當滑鼠單擊控制項時發生 checkedchanged checked值發生變化 private void checkbox1 chec...
Windows 窗體控制項的布局
出處 對許多應用程式而言,需要首先考慮如何在窗體中精確放置控制項。system.windows.forms 命名空間提供了許多布局工具來完成此項操作。autosize 屬性概述 描述 autosize 屬性及其在布局中的角色。windows 窗體控制項中的邊距和填充 描述 margin 和 padd...
C 捕獲Windows窗體控制項
最近由於客戶的需求,需要乙個登陸的解決方案,但是我們需要捕獲介面的控制項,並賦值,然後自動登入,在網上找了一下,autoit這個工具不錯,可以捕獲的到窗體及控制項,但是沒有原始碼呀,自己動手寫乙個簡單版的吧。好了,下面咱們來說道說道 思路分析 我們首先要捕獲滑鼠的移動,當滑鼠按下時,觸發乙個事件,然...