【问题标题】:C# WinForms application: DataGrid and SelectAllC# WinForms 应用程序:DataGrid 和 SelectAll
【发布时间】:2010-11-27 18:07:07
【问题描述】:

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 - 这正是问题所在。

下一次到达“我的代码”是 DialogResult 被传回的时候。 Visibility 由底层方法(.NET 框架 Forms.ShowDialog)隐式设置为 true。

[1] 一种可能的解决方法是在表单变得可见时生成一个事件,然后再发送到SelectAll。如果我没有找到更好的东西,我会试试这个。

【问题讨论】:

    标签: c# winforms datagrid


    【解决方案1】:

    您是否尝试将 SelectAll 添加到 Activated() 事件...但是,我将创建一个表单变量 Boolean 来识别 SelectAll 是否已被处理,因此它不会每次您可以 Alt-Tab 到另一个应用程序并返回(是的,我知道,有些人会在对话框提示之间这样做),否则会再次重新选择。

    bool WasSelectAllProcessed = false;  && at the form level
    

    然后,在所有都可见的 Activated 事件中,SelectAll 会产生影响

    if ( ! WasSelectAllProcessed )
       dgv.SelectAll();
    

    【讨论】:

    • 感谢您的支持。不幸的是,我无法投票,因为“我的声誉”不够高。
    【解决方案2】:

    你应该改变你的场景!

    1. 添加对象
    2. 将 dgv 可见性设置为 false
    3. 显示模态表单
    4. 拨打dgv.SelectAll()
    5. 将 dgv 可见性设置为 true

    已编辑

    你可以只处理表单的显示事件。 场景是:

    DialogForm myDF = new DialogForm();
    //here you add data to your dgv in myDF
    myDF.ShowDialog();
    

    dgv.Visible设置为false,就可以像this.Shown += new EventHandler(DialogForm_Shown);一样在InitializeComponent();之后处理DialogForm Cunstructor中的Shown事件,然后

        void DialogForm_Shown(object sender, EventArgs e)
        {
           dgv.SelectAll();
           dgv.Show();
        }
    

    【讨论】:

    • 请参阅原始问题中的评论。感谢您的反馈。
    • 我没有看到对原始问题的任何评论
    • 感谢您的支持。不幸的是,我无法投票,因为“我的声誉”不够高。
    • 不客气,你应该为你的问题标记一个答案。
    【解决方案3】:

    我已经测试过了:

    SelectAll 在网格不可见时被忽略。解决方案是在网格可见时注册一个事件(例如VisibilityChanged),然后调用SelectAll

    当然,一个是否完成的标志将有助于避免多余的调用。当网格已经可见时,直接调用SelectAll 也是一个好方法。

    与 HPT 和 DRapp 的建议非常相似。感谢您在这方面帮助我。

    【讨论】:

      猜你喜欢
      • 2020-11-28
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      相关资源
      最近更新 更多