どのように私は、インフラジスティックスUltraWinGridにコピーして、キーを押しをエミュレート&ペーストすることができますか?

StackOverflow https://stackoverflow.com/questions/2158879

質問

私は、インフラジスティックスUltraWinGrid(バージョンウィン9.1)を使用しています。デフォルトの動作では、ユーザーがセルにテキストを入力できるようにすることです。 Excelスプレッドシートから1個のコピーの複数のセル、最初のセルだけのデータではUltraWinGridに貼り付けられますときます。

一つは、簡単の CellClickAction.CellSelectすると編集不可であるとUltraWinGridセルを設定することにより、複数のセルを貼り付ける動作を変更することができます。あなたがこれを行うとき、残念ながらあなたがセルにデータを入力しない場合があります。

私はInitializeLayoutのイベントでこれらの設定を変更しようとしてきたので、KeyDownイベント、およびKeyPressイベントます。

    private void ugridQuoteSheet_InitializeLayout(object sender, InitializeLayoutEventArgs e)
    {
        e.Layout.Override.AllowMultiCellOperations = AllowMultiCellOperation.All;
        e.Layout.Override.CellClickAction = CellClickAction.CellSelect;
    }

    //Event used to circumvent the control key from choking in
    //the KeyPress event. This doesn't work btw.
    private void ugridQuoteSheet_KeyDown(object sender, KeyEventArgs e)
    {
        UltraGrid grid = (UltraGrid)sender;

        if (e.Control == true)
        {
           e.SuppressKeyPress = true;
        }
    }

    // This event comes after the KeyDown event. I made a lame attempt to stop
    // the control button with (e.KeyChar != 22). I lifted some of this from 
    // the Infragistics post: http://forums.infragistics.com/forums/p/23690/86732.aspx#86732
    private void ugridQuoteSheet_KeyPress(object sender, KeyPressEventArgs e)
    {
        UltraGrid grid = (UltraGrid)sender;
        if ((grid != null) && (grid.ActiveCell != null) && (!grid.ActiveCell.IsInEditMode) && (e.KeyChar != 22))
        {
            grid.PerformAction(UltraGridAction.EnterEditMode);
            EditorWithText editor = (EditorWithText)grid.ActiveCell.EditorResolved;
            editor.TextBox.Text = e.KeyChar.ToString();
            editor.TextBox.SelectionStart = 1;
        }
    }

    // This puts the grid in CellSelect mode again so I won't edit text.
    private void ugridQuoteSheet_AfterCellUpdate(object sender, CellEventArgs e)
    {
        this.ugridQuoteSheet.DisplayLayout.Override.CellClickAction = CellClickAction.CellSelect;
    }

私は再び細胞への値の今のキーことができます。私は、[CTRL]を押したときに問題がある[v]のペーストに、KeyPressEventArgs.KeyCharは22で、NO「V」はありません。あなたはugridQuoteSheet_KeyPressデリゲートでこの問題を回避するために、私の無益な試みを見ることができます。両方UltraWinGrid?

のセルにコピー・ペーストして入力できるようにするイベント処理とCellClickAction設定の適切な組み合わせは何ですか
役に立ちましたか?

解決

前に言及した記事のもう少し慎重に読んだ後( HTTP ://forums.infragistics.com/forums/p/23690/86732.aspx#86732する )私はこの問題に取り組むことができました。

これは、すべてのUltraWinGrid.DisplayLayout.Override.CellClickAction = CellClickAction.CellSelectを設定した後KeyPressイベント内で処理することができます。当然のInitializeLayoutイベントインチ

    private void ugridQuoteSheet_KeyPress(object sender, KeyPressEventArgs e)
    {
        UltraGrid grid = (UltraGrid)sender;

        if (!Char.IsControl(e.KeyChar) && grid != null && grid.ActiveCell != null &&
            grid.ActiveCell.EditorResolved is EditorWithText && !grid.ActiveCell.IsInEditMode)
        {
            grid.PerformAction(UltraGridAction.EnterEditMode);
            EditorWithText editor = (EditorWithText)grid.ActiveCell.EditorResolved;
            editor.TextBox.Text = e.KeyChar.ToString();
            editor.TextBox.SelectionStart = 1;
        }
    }

私は、キーの同時押しを処理する方法の無知だった[CTRL] [V]。 Char.IsControl(e.KeyChar)は、ここでのトリックを行います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top