teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2020/08/28 09:40

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -97,4 +97,8 @@
97
97
  }
98
98
  ```
99
99
 
100
- また butto2 を押すことにより、選択中の行が削除されます。
100
+ また butto2 を押すことにより、選択中の行が削除されます。
101
+
102
+ ### 追記
103
+
104
+ なお、実行時に列の入れ替えを可能にするには、AllowUserToOrderColumns プロパティを true にしてください。そうすると、ヘッダをドラッグすることで入れ替えることができるようになります。

1

修正

2020/08/28 09:40

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -2,30 +2,8 @@
2
2
  次に dataGridView1 のプロパティを開き、DataSource に bindingSource1 を入れてください。
3
3
 
4
4
  それからソースを次のように書き換えます。
5
- 読み込みと同時に dataGridView1 の操作をしていましたが、読み込みと操作は別のメソッドに分けた方がいいため、分けました。今回は手を抜いて DataTable を返すようにしましたが、DataTable は以降使わないので専用のクラスを作った方が拡張性が増します。
6
5
 
7
- button1 を押すことにより、データが読み込まれ、名前に「田」の付く人のみ選択されます。カラムは生息地と名前のみで、この順番で表示されます。この詳細は LINQ を調べてください。
8
-
9
- この中で難しいのは次の行ではないかと思います。
10
-
11
6
  ```C#
12
- .Where(a => a.Field<string>("名前")?.Contains("田") ?? false)
13
- ```
14
- `?.` は [Null 条件演算子](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-)、`??` は [null 合体演算子](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/null-coalescing-operator) で、ともに null 安全のために使われます。
15
- このコードは下記と同じです。
16
-
17
- ```C#
18
- .Where(a =>
19
- {
20
- var name = a.Field<string>("名前");
21
- if (name == null) return false;
22
- return name.Contains("田");
23
- }
24
- ```
25
-
26
- また butto2 を押すことにより、選択中の行が削除されます。
27
-
28
- ```C#
29
7
  using System;
30
8
  using System.Data;
31
9
  using System.IO;
@@ -96,4 +74,27 @@
96
74
  }
97
75
  }
98
76
 
99
- ```
77
+ ```
78
+
79
+ 元のコードでは読み込みと同時に dataGridView1 の操作をしていましたが、読み込みと操作は別のメソッドに分けた方がいいため、分けました。今回は手を抜いて DataTable を返すようにしましたが、DataTable は以降使わないので専用のクラスを作った方が拡張性が増します。
80
+
81
+ button1 を押すことにより、データが読み込まれ、名前に「田」の付く人のみ選択されます。カラムは生息地と名前のみで、この順番で表示されます。この詳細は LINQ を調べてください。
82
+
83
+ この中で難しいのは次の行ではないかと思います。
84
+
85
+ ```C#
86
+ .Where(a => a.Field<string>("名前")?.Contains("田") ?? false)
87
+ ```
88
+ `?.` は [Null 条件演算子](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-)、`??` は [null 合体演算子](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/null-coalescing-operator) で、ともに null 安全のために使われます。
89
+ このコードは下記と同じです。
90
+
91
+ ```C#
92
+ .Where(a =>
93
+ {
94
+ var name = a.Field<string>("名前");
95
+ if (name == null) return false;
96
+ return name.Contains("田");
97
+ }
98
+ ```
99
+
100
+ また butto2 を押すことにより、選択中の行が削除されます。