[英]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.