質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

3回答

8941閲覧

DataGridViewの1行目が表示されない

terajiro

総合スコア0

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/07/03 02:36

編集2022/01/12 10:55

visualstudio2019初心者です。
下記のコードを実行した所、DataGridViewの1行目が表示されない状態になっています。
どなたか、解決方法をご存じないでしょうか?
(使用環境:Windows10/Windowsフォームアプリケーション (.NET Framework)/.NET Framework4.7.2)

コードここから
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
'列数・行数を指定
DataGridView.ColumnCount = 3
DataGridView.RowCount = 3

'列名を指定 DataGridView.Columns(0).HeaderText = "no" DataGridView.Columns(1).HeaderText = "ユーザ名" DataGridView.Columns(2).HeaderText = "年齢" 'セルのデータ設定 DataGridView.Rows(0).Cells(0).Value = 1 DataGridView.Rows(0).Cells(1).Value = "ユーザ1" DataGridView.Rows(0).Cells(2).Value = "28" DataGridView.Rows(1).Cells(0).Value = 2 DataGridView.Rows(1).Cells(1).Value = "ユーザ2" DataGridView.Rows(1).Cells(2).Value = "22" DataGridView.Rows(2).Cells(0).Value = 3 DataGridView.Rows(2).Cells(1).Value = "ユーザ3" DataGridView.Rows(2).Cells(2).Value = "34"

End Sub
コードここまで

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/07/03 03:07 編集

何を作っているのかと開発環境を書きませんか? DataGrid というのは WinForms と ASP.NET Web Forms にあります。他にもあるかも。なので何を作っているかぐらいは書かないと。また、.NET Framework のバージョンの違いなどでもいろいろ話が違ってきます。 それから、dtgv とか定義不明なコードは書かないでください。(ひょっとして DataGrid ではなく DataGridView のことを言っているとか?)
Daregada

2020/07/03 03:17 編集

「1行目が表示されない」とは、「DataGridViewにそもそもの1行目のデータが存在しない」のか、「1行目のデータはスクロール等すれば現れるが、最初の状態では表示されていない。最下行にはXXXXが表示される」のどちらなんでしょうかね。ってここまで素でDataGridViewのことだと思って読んでたけど、DataGridなの??
退会済みユーザー

退会済みユーザー

2020/07/03 03:16 編集

質問を書き換えたようですが、依然として上にコメントしたことが不明なのですが? DataGrid とか書いてありますけど、実は WinForms アプリの DataGridView のことでは? DataGrid には質門のコードに書かれているプロパティはなさそうですが DataGirdView にはありますし・・・
退会済みユーザー

退会済みユーザー

2020/07/03 03:26

言語は VB のようですので VB.NET のタグを追加願います。
退会済みユーザー

退会済みユーザー

2020/07/03 03:34 編集

データソースは何でしょう? XML, CSV, Excel, Access, SQL Server などからデータを取得してその一覧を表示するというようなことなら、やり方を根本的に考え直した方がよさそうです。 そうでなくても、DataGridView に一覧表示したいなら DataGridView の行列に直接値を代入するのでなく、データソース ⇒ DataTable とか List<T> ⇒ BindingSource ⇒ DataGridView にするべきと思います。それに興味はありますか?
退会済みユーザー

退会済みユーザー

2020/07/05 05:51

質問者さん、無言状態になってしまいましたが、レス・回答がされているのだからそれらに対してタイムリーにフィードバックを返してください。分かった・分からなかった、役に立った・立たなかった、今検討中だから少し時間をくれなどのフィードバックはすぐできるはず。
guest

回答3

0

デザイナや他のコード内でどのような設定をやっているかは分かりませんが、DataGrodViewのヘッダが見えているのにも関わらず、1行目(Rows(0))のデータが見えていないのであれば、何らかの理由で1行目が非表示(Rows(0).Visible = False)になっているのかも知れません。
実際のDataGridViewのセルの値を確認し、対象行が確かに存在するかどうかを確認する必要があります。
※通常は、DataGridViewの(列インデックス,行インデックス)でセル特定します。
対象のDataGridViewコントロール変数をDataGridView1とすると、DataGridView1(2,1).ValueはDataGridView1.Rows(1).Cells(2).Valueと同じですが、前者の方が推奨されています。

なお、DataGridViewの使い方に関しては、他の皆さんの指摘事項は非常に大事ですので、理解した方が良いです。
また、どうしてもDataGridViewに直接データをセットしたい場合は、列の設定は予め行いますが、以下のやり方のように、行数の確保は行わずに行データを追加する方が一般的です。

VB

1 '列数・行数を指定 2 DataGridView1.ColumnCount = 3 3 'DataGridView1.RowCountの設定は行わない 4 5 '列名を指定 6 DataGridView1.Columns(0).HeaderText = "no" 7 DataGridView1.Columns(1).HeaderText = "ユーザ名" 8 DataGridView1.Columns(2).HeaderText = "年齢" 9 10 'セルのデータ設定 11 DataGridView1.Rows.Add(1, "ユーザ1", "28") 12 DataGridView1.Rows.Add(2, "ユーザ2", "22") 13 DataGridView1.Rows.Add(3, "ユーザ3", "34")

投稿2020/07/04 04:28

kenshirou

総合スコア772

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問のコメントに対する返事がないので興味はないのかもしれませんが、コメントで書いたような、DataGridView の行・列に直接値を代入するのでなく、データソース ⇒ List<T> ⇒ BindingSource ⇒ DataGridView という形のコードを参考にアップしておきます。

コードは C# ですが、C# は読めないという場合は以下のような変換サービスがあるので使ってください。完ぺきとは言えないかもしれませんが人が読んで理解できるレベルには問題なく変換してくれます。

Telerik Code Converter
https://converter.telerik.com/

C#

1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10 11namespace WinFormsApp1 12{ 13 public partial class Form6 : Form 14 { 15 // デザイナで DataGridView をドラッグ&ドロップしてデザイン 16 // 画面でそれを編集した方が簡単ですが、ここではコードで書いておきます 17 private DataGridView dataGridView1; 18 private DataGridViewTextBoxColumn column1; 19 private DataGridViewTextBoxColumn column2; 20 private DataGridViewTextBoxColumn column3; 21 22 private BindingSource bindingSource1; 23 24 public Form6() 25 { 26 InitializeComponent(); 27 28 this.dataGridView1 = new DataGridView(); 29 this.column1 = new DataGridViewTextBoxColumn(); 30 this.column2 = new DataGridViewTextBoxColumn(); 31 this.column3 = new DataGridViewTextBoxColumn(); 32 33 this.dataGridView1.Columns.AddRange(new DataGridViewColumn[] { this.column1, this.column2, this.column3}); 34 this.dataGridView1.Dock = DockStyle.Fill; 35 36 this.column1.DataPropertyName = "Id"; 37 this.column1.HeaderText = "No."; 38 39 this.column2.DataPropertyName = "Name"; 40 this.column2.HeaderText = "ユーザー名"; 41 42 this.column3.DataPropertyName = "Age"; 43 this.column3.HeaderText = "年齢"; 44 45 this.components = new Container(); 46 this.bindingSource1 = new BindingSource(this.components); 47 this.dataGridView1.DataSource = this.bindingSource1; 48 this.Controls.Add(this.dataGridView1); 49 50 // List<T> 型(T は下に定義した Item クラス)のデータソースを作成 51 List<Item> list = new List<Item> 52 { 53 new Item { Id = 1, Name = "ユーザー1", Age = 28 }, 54 new Item { Id = 2, Name = "ユーザー2", Age = 22 }, 55 new Item { Id = 3, Name = "ユーザー3", Age = 34 } 56 }; 57 58 this.bindingSource1.DataSource = list; 59 } 60 61 // これはオマケです。一番最初の行にデータを追加する例です。 62 private void button1_Click(object sender, EventArgs e) 63 { 64 Item item = new Item { Id = 4, Name = "ユーザー4", Age = 22 }; 65 this.bindingSource1.Insert(0, item); 66 } 67 } 68 69 // これが List<T> の T クラスの定義です。 70 public class Item 71 { 72 public int Id { get; set; } 73 public string Name { get; set; } 74 public int Age { get; set; } 75 } 76}

BindingSource を使うのは DataGridView などのコントロールからデータへのバインディングを簡素化でき、データとの対話はすべて BindingSource コンポーネントを呼び出すことによって実行できるようになるからです。その一例が以下のコードの button1_Click によるデータの追加です。

ボタンクリックで以下のようになります。DataGridView 上の表示だけでなくデータソースの List<Item> オブジェクトにも追加されます。0 の位置に追加していますので赤枠で示したように一番最初の行に追加されています。こういうのは BindingSource を使わないと難しいかも。

イメージ説明

これに BindingNavigator を追加して使うとさらに操作が容易になります。SQL Server などのデータベースのテーブルの表示・編集・更新を行う場合は Visual Studio のデータソース構成ウィザードを利用して、以下の記事の図にあるような BindingSource, BindingNavigator を含むアプリを、自力で一行もコードを書くことなく作成できます。

Windows フォーム アプリケーションでのデータへの接続
https://docs.microsoft.com/ja-jp/previous-versions/wxt2cwcc(v=vs.120)

【2020/7/4 10:50 追記】

今更ながらですが、肝心の質問、

DataGridViewの1行目が表示されない

の件については、Form の上の方に別の何かを表示していて、DataGridView の一行目がそれの下に隠れているるのではないですか。質問の情報からは自分にはそれぐらいしか想像できることはないです。

投稿2020/07/03 06:22

編集2020/07/04 01:50
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

提示のコードを試してみたことろ期待通りに表示されているように見えます。

実行結果

  • 既存のDataGridViewを削除するか、新しいFormを作ってまっさらな状態でもう一度最初から実装してみてください。
  • DataGridViewにつけるNameをクラス名と一緒にすると混乱の元なので別の名前に変えましょう。コンポーネントを貼り付けるとDataGridView1という名前になるはずですが変に変更しない方が良いです。
  • DataGridView編 | DOBON.NETを熟読してDataGridViewに慣れましょう。DOBONさんのサイトは.NET情報の宝庫です。全部読んでほしい。

投稿2020/07/03 04:24

hope_mucci

総合スコア4447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問