QA@IT

VB.NET グリッドに別画面より値を入れると新規行と認識されない。

3389 PV

お世話になります。
VB.NETで開発中行き詰ってしまいまして、初めて質問させていただきます。

現状としては、
グリッドの左端にコード項目があり、その項目をダブルクリックすると小画面が開き、一覧からコードを持ってくることができるようになっています。
この項目は直接入力することもできます。

問題は、グリッドに対し小画面からコードを持ってきた場合ですと、その行が入力されているものとみなされず、新規行が追加されないことです。(NewRowIndexが増えていない)
直接入力の場合、コードを入力しエンターした時点でNewRowIndexが増え、最下行に新規行が現れます。

グリッドの入力後、NewRowIndexと同じ行番目の行の内容は排除するようになっているため、入力しているのにデータが反映されない状態となっています。(手で入力した場合はNewRowIndexが増えているので問題とならない)

現在試した対処法
・小画面からコードを取得する場合はRows.Add()を行い新規行を無理やり追加してやる。
→新規行は追加されますが、選んだコードはその追加された行のさらに下の行に追加される。

・EndEdit()をすることで新規行と認識させる
→新規行として認識されない

以上です。

やりたいこととしては、グリッドのセルに対して別画面から値を入力した場合でも、新規行が正しく追加されるようにしたいです。

もしよろしければご教授よろしくお願いします。

追記

記述に足りない点があり申し訳ありません。
環境などまとめ改めて追記もしくは質問し直しをさせていただきます。

  • 何を作っているかとご自分の環境ぐらいは最初に書きませんか? 「グリッド」って何ですか? DataGridView のことではないかと想像してますが、回答者に想像で答えてもらうのは期待しない方がいいです。(想像が違っていると、回答が見当違いになって混乱するだけですから) -

回答

以下のような感じで編集モードにしてEditingControlに対し設定を
行ってみてはどうでしょう?

        DataGridView1.BeginEdit(True)
        DataGridView1.EditingControl.Text = "abc"
        DataGridView1.EndEdit()
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。