none
DataGridViewにEnterキーを自動押下させる方法。 RRS feed

  • 質問

  • 先ほどDataGridViewに自動で、手入力と同じ方法で入力する方法をご教授してもらったのですが、

    そのあと自動でEnterを押させたいのですがいい方法ありますでしょうか?

    2010年10月28日 4:24

回答

  • イベントハンドラの名前が DataGridView_AfterUpdate というだけで、イベント自体は CellEndEdit や RowValidating や RowLeave だったりする可能性もあるかなと思いました。
    (もしそうでしたら、実際はどのイベントでしょうか?)

    セル(項目)の編集完了は DataGridView.EndEdit メソッドでできます。
    (ちなみに、前スレッドでの私の1つ目のコードでは、手入力っぽくするためにあえて EndEdit を実行していませんでした。)

    行の変更を確定する方法でしたら、
    DataGridView.IsCurrentRowDirty の説明に、次の3つの方法が書かれていました。
    もしイベントが RowValidating の場合には3番目では発生しませんので、その場合は2番目がいいと思います。

    1. Ctrl+Enter を押す。
    2. フォームの Validate メソッドを実行する。
    3. BindingSource の EndEdit メソッドを実行する。

    • 回答としてマーク TAKAPI 2010年11月7日 1:34
    2010年10月28日 6:11

すべての返信

  • >そのあと自動でEnterを押させたいのですがいい方法ありますでしょうか?

     

    単純にアプリケーションにENTERキーを送る方法は以下のようにして実現できます。

     

    SendKeys.SendWait("{ENTER}")
    

     

    しかしながら、TAKAPIさんが行ないたい処理がどういったことなのかなのですが、

    憶測ですが、最終行のセルにカーソルを移動したということでしょうか?

    そうであるなら、SendKeysを利用せず、以下のようにする方がよいです。

     

     

    DataGridView1.CurrentCell = DataGridView1(DataGridView1.CurrentCell.ColumnIndex, DataGridView1.RowCount - 1)
    
    

     


    2010年10月28日 4:50
  • 説明が稚拙で申し訳ございませんでした。

    セルに、動的に文字をいれたあと、DataGridView_AfterUpdate を走らせて、

    その関数の中で入力された文字を元に他のセルに文字をセットしたいのです。

     

    DataGridView_AfterUpdateをはしらせるのは

    SendKeys.SendWait("{ENTER}")
    
    では走らなかったみたいです。
    2010年10月28日 4:55
  • 確認ですが、今使われている「DataGridView」は、.NET Framework標準のものですか?

    それとも無償又は有償のベンダー製品のことを指していますか?

    .NET Framework標準の「DataGridView」にはAfterUpdateという名称のイベントは

    ないようです。

    http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridview_events(v=VS.100).aspx

     

    そもそも.NET Frameworkで開発されていますか?

    VB6.0だったりしますか?

    2010年10月28日 5:15
  • イベントハンドラの名前が DataGridView_AfterUpdate というだけで、イベント自体は CellEndEdit や RowValidating や RowLeave だったりする可能性もあるかなと思いました。
    (もしそうでしたら、実際はどのイベントでしょうか?)

    セル(項目)の編集完了は DataGridView.EndEdit メソッドでできます。
    (ちなみに、前スレッドでの私の1つ目のコードでは、手入力っぽくするためにあえて EndEdit を実行していませんでした。)

    行の変更を確定する方法でしたら、
    DataGridView.IsCurrentRowDirty の説明に、次の3つの方法が書かれていました。
    もしイベントが RowValidating の場合には3番目では発生しませんので、その場合は2番目がいいと思います。

    1. Ctrl+Enter を押す。
    2. フォームの Validate メソッドを実行する。
    3. BindingSource の EndEdit メソッドを実行する。

    • 回答としてマーク TAKAPI 2010年11月7日 1:34
    2010年10月28日 6:11
  • DataGridViewを継承した、ユーザーコントロールでした。AfterUpdateをよびだしました。
    2010年11月7日 1:34
  • すいません。自宅の環境でないので、把握がたりなくて。

    やりたいことは、最終行で、セルに入力すると、その下に入力行が追加されるけでど、動的に最終行のセルに文字をいれても、追加行が増えないので、どうすればいいのかということでした。

    2010年11月7日 1:39