C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DataGridViewの行の空白を追加させないようにしたい

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■94627 / inTopicNo.1)  DataGridViewの行の空白を追加させないようにしたい
  
□投稿者/ エイ (4回)-(2020/04/25(Sat) 22:50:56)

分類:[.NET 全般] 

こんばんは。
DataGridViewの行の空白を追加させないようにするにはどうすればよろしいでしょうか。?

ソースコードはVBです。

Imports System.Text
Imports Microsoft.VisualBasic.FileIO
Imports System.Data.DataTable

 Class Form1
    Dim table As New DataTable("Table")
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        table.Columns.Add("番号", Type.GetType("System.String"))
        table.Columns.Add(""動物, Type.GetType("System.String"))
        table.Columns.Add("その他", Type.GetType("System.String"))
 
        DataGridView1.DataSource = table
        DataGridView1.AllowUserToAddRows = False
    End Sub
'ボタンはButton3です。
'Textbox1が番号、Textbox2が動物、Textbox3がその他に作りました。
'DataGridView1の行を追加はテキストボックスに入力したら行が追加されます。

 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        table.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text)
        If TextBox1.Text + TextBox2.Text + TextBox3.Text = "" Then
            TextBox1.Clear()
            TextBox2.Clear()
            TextBox3.Clear()
            MsgBox("登録しました。")
            DataGridView1.DataSource = table

        End If
    End Sub


テキストボックス入力するとボタンを押すと DataGridView1の行に追加されます。
テキストボックスに空白のまま(何も入力しない)ボタンを押すと DataGridView1に行追加されてしまい、
テキストボックスに何も入力しないでボタンを押しても行追加しないように作りたいんですがどうすればできますでしょうか。


恐れ入りますがよろしくお願いします。

開発環境は Vistual Studio 2019 
VB.MET

引用返信 編集キー/
■94628 / inTopicNo.2)  Re[1]: DataGridViewの行の空白を追加させないようにしたい
□投稿者/ Hongliang (1016回)-(2020/04/25(Sat) 23:10:33)
> table.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text)
する前に、各TextBoxの.Textが空かどうかチェックするIfを入れればいいです。
そして、DataSourceへの代入はLoadイベントでやってる1回だけで十分です。
DataTableの行に追加すれば、自動的に画面に反映されます。
// なので、.Rows.Addする「前に」チェックする必要があります。

> If TextBox1.Text + TextBox2.Text + TextBox3.Text = "" Then
>     TextBox1.Clear()
>     TextBox2.Clear()
>     TextBox3.Clear()
>     MsgBox("登録しました。")
>     DataGridView1.DataSource = table
> End If
まず、VBでは文字列の結合は + 演算子ではなくて & 演算子を使います。
あと、このIf文だと「空なら」登録処理が行われるみたいな意味合いになって、成否逆になりませんか?

引用返信 編集キー/
■94648 / inTopicNo.3)  Re[2]: DataGridViewの行の空白を追加させないようにしたい
□投稿者/ エイ (5回)-(2020/04/27(Mon) 21:02:54)
No94628 (Hongliang さん) に返信
> > table.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text)
> する前に、各TextBoxの.Textが空かどうかチェックするIfを入れればいいです。
> そして、DataSourceへの代入はLoadイベントでやってる1回だけで十分です。
> DataTableの行に追加すれば、自動的に画面に反映されます。
> // なので、.Rows.Addする「前に」チェックする必要があります。
>
>>If TextBox1.Text + TextBox2.Text + TextBox3.Text = "" Then
>> TextBox1.Clear()
>> TextBox2.Clear()
>> TextBox3.Clear()
>> MsgBox("登録しました。")
>> DataGridView1.DataSource = table
>>End If
> まず、VBでは文字列の結合は + 演算子ではなくて & 演算子を使います。
> あと、このIf文だと「空なら」登録処理が行われるみたいな意味合いになって、成否逆になりませんか?


Hongliang さんお返事遅くなってすいませんでした。

> If TextBox1.Text + TextBox2.Text + TextBox3.Text = "" Then
この部分を
msgbox("")
Else
table.Rows.Add(textbox)
end if
に変更しました。
結果、無事出来ました。
ただもう一つDataGridView1.AllowUserToAddRows = Falseの事なんですが。
Form1_Load
DataGridView1.AllowUserToAddRows = False
に入れた所、DataGridView1の表示がおかしくなるんです。

起動後、CSVを開くボタンを押すと必ず
1
----------------------------------------------------------------------
DataGridView1の表示が「左側の行」2行目の&#9654;マークが表示され |
隣の列の表示がグレー色(デフォルト)になって表示されるんですが・・・。|
グレー色の所をクリックするとセル行が表示されます。? |
----------------------------------------------------------------------
一度新規フォームで同じようにやっても↑の通りになってしまいます。

ボタン押す時に
DataGridView1.AllowUserToAddRows = Falseをいれています。
この時は最後の行が非表示になるので大丈夫なんですが
foamloadに入れると1の現状が起こります。

CSVを読み込み&書き込みは
https://blog.goo.ne.jp/ashm314/e/e79a8f2bd9c1b6f83df78d303d183f1c(書き込み)
https://blog.goo.ne.jp/ashm314/e/464c1063685c727230a13869420e00f1(読み込み)
こちらのコードを参考にしたものを使用しました。

テキストボックスに文字を入力
http://1bestcsharp.blogspot.com/2016/02/vb.net-datagridview-row-add-delete-update-using-textboxes-vbnet.html
こちらのコードを使用し改変しました。

この3つのサイトを使ってコードを作りました。


DataGridView1.AllowUserToAddRows = Falseをfoamloadに入れると1の現状が起きるので
何処を修正したらいいんでしょうか?
分かりやすいようにこちらの質問に全コード書いてもいいんでしょうか?
まだわからない事だらけなので申し訳ございません。

よろしくお願いします。
空白追加の方は解決しましたがDataGridView1.AllowUserToAddRows = Falseが問題あって再度お願い申し上げます。
引用返信 編集キー/
■94649 / inTopicNo.4)  Re[3]: DataGridViewの行の空白を追加させないようにしたい
□投稿者/ Hongliang (1019回)-(2020/04/27(Mon) 22:55:51)
> ----------------------------------------------------------------------
> DataGridView1の表示が「左側の行」2行目の&#9654;マークが表示され |
> 隣の列の表示がグレー色(デフォルト)になって表示されるんですが・・・。|
> グレー色の所をクリックするとセル行が表示されます。? |
> ----------------------------------------------------------------------
どんな表示になるのかちょっとよく分かりませんでしたが、とりあえず
・Form.LoadにてAllowUserToAddRows = Falseを設定する
・ボタンクリックでDataGridView.Rowsに10行ほどAddする
 またはDataSourceに設定したDataTableに10行ほどAddする
ぐらいのコードでは私の環境だと表示が乱れるということはありませんでした。
AllowUserToAddRows以外にも何か条件がないか調べられてはいかがでしょう。
追加する行数とか、表示する列数とか、DataGridViewの他のプロパティとか。

> 空白追加の方は解決しましたがDataGridView1.AllowUserToAddRows = Falseが問題あって再度お願い申し上げます。
別に構いませんが、一般論としては、別の質問は新しくトピックを立てた方がほかの回答者の目に留まりやすくなって回答を得られやすくなると思いますよ。
引用返信 編集キー/
■94650 / inTopicNo.5)  Re[4]: DataGridViewの行の空白を追加させないようにしたい
□投稿者/ エイ (6回)-(2020/04/27(Mon) 23:12:45)
No94649 (Hongliang さん) に返信

Hongliang さん


>>空白追加の方は解決しましたがDataGridView1.AllowUserToAddRows = Falseが問題あって再度お願い申し上げます。
> 別に構いませんが、一般論としては、別の質問は新しくトピックを立てた方がほかの回答者の目に留まりやすくなって回答を得られやすくなると思いますよ。

新しいトビックに立てます。
回答ありがとうございました。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ