[英]c# - Winforms - SelectAll() not working on inner Winforms textbox consistently
[英]C# WinForms application: DataGrid and SelectAll
C#、. net 3.5 WinForm應用程序
我確實有模式彈出式窗口(另一個)形式的DataGrid。 我確實將對象添加到數據網格,並希望在顯示表單時選擇它們。 聽起來很簡單,因為這里有一個方法“ SelectAll”。
但是,該方法似乎僅在數據網格已經可見時才起作用。 我的命令是:1)添加對象2)調用全選3)顯示模式形式。 但是,當顯示時,將顯示但未選擇對象。
DialogResult r = myDialogForm.ShowModalDialog(); // objects are added, and SelectAll was called
有人知道我如何才能完成SelectAll-即使DataGrid尚不可見。
-關於HPT的評論(更改順序)
當我調用模式形式( System.Windows.Forms.ShowDialog
)時,我沒有機會[1]調用SelectAll
after(!),顯示了模式形式-這正是問題所在。
下次到達“我的代碼”是將DialogResult返回。 (.NET框架Forms.ShowDialog
)基礎方法將Visibility隱式設置為true。
[1]可能的解決方法是在表單可見時發生一個事件,然后選擇SelectAll
。 如果找不到更好的東西,我會嘗試的。
你應該改變你的情況!
dgv.SelectAll()
您可以只處理顯示的表單事件。 該方案將是:
DialogForm myDF = new DialogForm();
//here you add data to your dgv in myDF
myDF.ShowDialog();
將dgv.Visible
設置為false
,您可以在InitializeComponent();
之后處理DialogForm Cunstructor中的Shown事件InitializeComponent();
像這樣this.Shown += new EventHandler(DialogForm_Shown);
接着
void DialogForm_Shown(object sender, EventArgs e)
{
dgv.SelectAll();
dgv.Show();
}
您是否嘗試過將SelectAll添加到Activated()事件中...但是,我將創建一個表單變量布爾值以標識SelectAll是否已被處理,因此每次您Alt-Tab切換到另一個應用程序並返回時它都不會執行(是的,我知道,有些人在對話框提示之間執行此操作),否則將再次重新選擇全部。
bool WasSelectAllProcessed = false; && at the form level
然后,在“已激活”事件中,當全都可見時,SelectAll將產生影響
if ( ! WasSelectAllProcessed )
dgv.SelectAll();
我已經測試過了:
當網格不可見時,將忽略SelectAll
。 解決方案是在網格變得可見時(例如VisibilityChanged
)注冊一個事件,然后調用SelectAll
。
當然,標記是否完成將有助於避免重復調用。 同樣,當網格已經可見時,直接調用SelectAll
是一個很好的方法。
與HPT和DRapp的建議幾乎相同。 多謝您的協助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.