2016-07-12 6 views
0

私は問題があり、これが可能なら解決方法を理解できません。私はdatagridviewを持っているし、イベントを持っているし、1つのセルのテキストに私は新しい行(キーボード入力)、私は今、イベント "grid_keydown"または "grid_keypress"がありますが、この2つは、各datagridviewセルではなく、この2つのイベントをdatagridviewの各セルの編集にも使用するようにdatagridviewプロパティを設定する解決策がありますか?あなたにたくさんのVisual Basic Datagridviewセルのイベントとキーボードの入力を入力

enter image description here

+0

明確化:あなたはあなたのデータグリッド内のセルに存在するテキストに改行を追加したいです。その特定のセルでEnterキーを押すと、これが起こるはずです。 –

+0

私はそれがより明確だと思う..次に私はカーソルを赤い矩形で入力してください。私はイベントを保持したいです –

+0

CellBeginEditイベントこれはあなたが探しているものですか? – Leprechaun

答えて

1

ありがとうだから私は最終的にあなたが探しているものを達成するための解決策を見つけました。悪い知らせは、私が思っていたよりも難しいことです。とにかく次の手順が必要です。

  1. カスタムDataGridViewTextBoxEditingControlクラスを作成します。
    のキーがCellの変更を受け入れ、次の行に切り替わるデフォルトの動作を上書きします。また、現在のセルテキストにNewLineを添付します。

    Public Class MyDatagridTextBoxEditControl 
        Inherits DataGridViewTextBoxEditingControl 
    
        Public Overrides Function EditingControlWantsInputKey(keyData As Keys, dataGridViewWantsInputKey As Boolean) As Boolean 
        If dataGridViewWantsInputKey AndAlso keyData = Keys.Enter Then 
         AppendText(Environment.NewLine) 
         Return MyBase.EditingControlWantsInputKey(keyData, False) 
        End If 
        Return MyBase.EditingControlWantsInputKey(keyData, dataGridViewWantsInputKey) 
        End Function 
    End Class 
    
  2. カスタムDataGridViewTextBoxCellクラスを作成します。
    以前に作成したDataGridViewTextBoxEditingControlタイプを設定して使用することです。

    Public Class MyDatagridTextBoxCell 
        Inherits DataGridViewTextBoxCell 
    
        Public Overrides ReadOnly Property EditType As Type 
         Get 
          Return GetType(MyDatagridTextBoxEditControl) 
         End Get 
        End Property 
    End Class 
    
  3. バインドDataGridView INR一緒にデータ。私例えば
    私は( InitializeComponent()後)Form'sのコンストラクタにコードを置くが、あなたはまた、あなたがこのコードを置く場所に応じてLoad イベント

    'Assume [Beschreibung] is column no. 5 
    DataGridView1.Columns.Item(4).CellTemplate = New MyDatagridTextBoxCell() 
    

(にそれを置くことができますDataGridVie1.Refresh()に電話する必要があります)。

備考:このコードでは、Enterキーを使用してテキストセルの変更された値を受け入れることができなくなります。しかし、あなたはセルの外にマウスを置いたときに入力を受け入れます。 Esc keypressはテキストの変更を元に戻します。 のような別のキーを扱うEditingControlWantsInputKeyにコードを追加することができます。 Insertまたはそれに類するもの。あなたがキーの組み合わせと同じ動作を実現することができ、このコードがなければ

Shift + Enter

+0

私は、私はその後、私のコラムに必要なセルに私をクリックしてポイント3を置くことができ、私はこれ明日やろうと思います。あなたにアレックスをありがとう –

+0

ありがとう:) –

関連する問題