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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

587閲覧

c#データベース 挿入

tou.23.bc

総合スコア50

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/11/21 04:21

編集2021/11/22 04:36

この全体の文は何を意味しているのでしょうか?おそらくcellという名前で使いまわせるようにしているのだと考えております。
また[0, e.RowIndex]は何を意味しているのでしょうか?

いろいろと検索をかけてみたのですが、これについて解説している記事を見つけることができませんでした。

調べが足りないと思われるかと存じますが、ご教授いただければ幸いです

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

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

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

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

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

len_souko

2021/11/22 23:11

・質問タイトルが変わってDataGridViewからデータベースになってしまって全く関係のない別の質問であるかのようになっている ・いきなり「この全体の文は」とあり、何に対しての質問なのか意味が分からない状態になっている ・変更内容はタイトル改悪以外は削除しかしていないのに編集タイトルはソースコードの追加となっている 現時点で質問にあるコードのようなものは [0, e.RowIndex] のみ これでは出だしの「この全体の文は何を意味しているのでしょうか?」がこの質問文に対する自問なのかのように読めてしまい、本当に意味が分からない
guest

回答2

0

ベストアンサー

とりあえず基礎からやりましょう。特にC#の入門書(サイトでもいいが)にある内容と、.NET Framework(または .NET Core)の使い方とか。

すべて基礎から成り立っています。基礎をすっ飛ばして応用なんてできるはずありません。
足し算すらわからないのに、微積分をやろうとするようなものです。

DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)dataGridViewTo1[0, e.RowIndex];

まず、dataGridViewTo1とはなんでしょうか。コードすべて提示されていないので無○な私にはわかりませんが、恐らく DataGridViewクラスのオブジェクトだと思います。

では、DataGridView[...] とはなんでしょうか。
公式で調べると、DataGridViewのインデクサのようです。

公式には

[System.ComponentModel.Browsable(false)] public System.Windows.Forms.DataGridViewCell this[int columnIndex, int rowIndex] { get; set; }

とあります。

これは、columnIndex (名前からすると列番号) と rowIndex (名前からすると行番号) の場所にあるセル( System.Windows.Forms.DataGridViewCell のオブジェクト )を取得したり設定したりするものです。(インデクサの概要等はご自分で調べてください。『C# インデクサ』とかで検索すれば出てきます)

もし、var cell = dataGridViewTo1[0,1];とあったら、0列の1行目のセルを取り出す。的な。

で、[0, e.RowIndex] とありますが、これは私にはわかりません。だって e の定義が無いから。
一応、調べ方は上記のdataGridViewTo1と一緒です。

そのとあるオブジェクト e が持つ RowIndexプロパティ? を行として取得する。
仮に e.RowIndex が 2だとしたら、dataGridViewTo1[0, 2]の意味になります。

そして、そこにあるセルを取得しようとしています。でも、欲しいのはDataGridViewCheckBoxCell、つまり「チェックボックスとしてのセル」のようです。取得できるのは DataGridViewCellですが。

で、この二つの関係性を調べます。そうすると公式では、「DataGridViewCheckBoxCellはDataGridViewCellを継承している」ようです。

なので、ダウンキャスト、つまり親と見なしていたものを子と見なす。
簡単にいえば『キャスト』します。

それが、(DataGridViewCheckBoxCell)dataGridViewTo1[...]の部分。
そしてそれをDataGridViewCheckBoxCellのオブジェクト cell として保持する。

つまり、要約すると『DataGridViewの指定場所のセルを取得している』ってだけです。

これはC#の基礎が出来ていれば、簡単にわかることです。(完璧には分からなくても、後は調べるだけだから)

少なくとも

■ インデクサ ■ プロパティ ■ メソッド ■ クラス, オブジェクト ■ キャスト ■ 代入

の範囲は、C#の入門書(サイト)に載っていることです。
つまり、基礎をないがしろにしているから『わからない』。

仮に基礎をないがしろにする人でないなら、コードをすべて提示するはずです。
だって、「一部だけ出されてもわからない」のは当たり前だから。

羅生門を読んでいます。でも文中に「な」と出てきます。どういう意味でしょうか。 ネットで「羅生門 な」と検索してみましたが、出てきません。誰か教えてください。

みたいなものです。いや、文脈やどの単語のやつなのかによって変わるだろ……と言いたくなりますよね。

そういうレベルです。基礎をすっ飛ばしているからこんなことになるのです。

投稿2021/11/21 04:49

編集2021/11/21 09:33
BeatStar

総合スコア4962

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

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

BeatStar

2021/11/21 04:51

ちなみに、公式リファレンスを使うことは初心者にとってはハードルがめちゃくちゃ高いのでわからないでもないですが、流石に [...] とか(...)とかのやつ(インデクサやキャスト)はなんとなく目星がつくはず……
tou.23.bc

2021/11/21 09:43 編集

丁寧にご回答いただきありがとうございました。 「datagridviewのチェックボックスにチェックをつけるプログラムを書きたく、こちら(https://crieit.net/posts/C-DataGridView) のサイトのソースコードをお借りしました」というのを丁寧に書かなければいけませんでした。 phpを初めて学ぶ言語としてメインで学習しているため、C#にかんしてまったくわからず、技術書を図書館でかりてきたのですが、datagridviewのコントロールにかんしての記載がなくdatagridviewの触り方についてはネットで調べるのがメインとなっております。    話が前後するのですが、こちらがもともとのソースコードなのでして、eがどのように定義されているかBestStar様の方で理解することはできますでしょうか? }
BeatStar

2021/11/21 09:01 編集

失礼だけど、自分で調べる癖をつけないとこの先真っ暗だと思いますよ。 メインがPHPでC#は単に課題として出されたとしても、基本部分(分岐、ループ等)は同じですから。 それと『一週間の期限がある』とありますが、いわゆる「急がば回れ」です。 いくら時間が無くても基礎をないがしろにすると、どのみちやる羽目になります。 (それか課題丸投げ状態になるか) 課題丸投げは誰のためにもなりません。それならいっそやめた方がいいレベルです。 なのでいくら時間が無くても、ざっと目を通すぐらいのことはできるはずです。 むしろそれが近道です。 いくら時間が迫っていても、今回のように基礎をすっ飛ばすと、そもそもどんなキーワードで調べればいいかさえわからない。で、ここで質問してもすぐに回答が付くわけではない。むしろ『丸投げ質問』だと認識されて放置されるか「自分でやれ」系を書かれるかです。でも時間は刻々と…… その間、質問者さんは課題に対して何もできないはずです。 そして最終的に締め切りに間に合わず……と。 仮に自分でも調べるとしても、Aに必要なものがB,でもこのBは自分にとっては未知。よって学習。でもBにはCがまた必要。でもCも未知……となるはずです。 でも時間が惜しくても、ざっとでいいから基礎を一通り見ていれば、キーワードぐらいは見ているはずなので調べる事もできる。時間はかかるだろうけど、ここでおんぶに抱っこでいるよりは建設的だと思います。(別に質問すること自体は問題ではない。単に基礎をすっ飛ばしたりとかしているのが問題) 結果的に(やり方によっては)基礎をざっとでもいいからやるほうが早道です。 目の前には二つの道があり、一つは距離自体は短いが迷路状態か蛇等がいるような危険な地域、もう一つは距離はやや長いが安全に通れる地域。最終的には距離の長い方がいいと思います。 (まあ、時間に間に合わない場合もあるにはあるが)
BeatStar

2021/11/21 09:01 編集

ちなみに、コメントにある追加コードを見ると、dataGridView1_CellClickメソッド(イベント)の引数として、 object sender, DataGridViewCellEventArg e となっています。この e のプロパティを使っているようです。
tou.23.bc

2021/11/21 09:17

了解しました。ありがとうございます。 もう一つ質問させていただきたくコメントさせていただきます。 初めにいただきましたご回答の文の中に 「仮に e.RowIndex が 2だとしたら、dataGridViewTo1[0, 1]の意味になります。」 の文があるのですが、こちらはdataGridViewTo1[0, 2]のまちがいでしょうか? お手数をおかけしますが、ご回答いただけますと幸いです。
BeatStar

2021/11/21 09:32

あ、本当ですね。済みません…ミスです。(修正します)
guest

0

いろいろと検索をかけてみたのですが、これについて解説している記事を見つけることができませんでした。

そこは初心者には分かり難いかもしれませんね。「DataGridView.Item プロパティ」をキーワードにググってみてください。以下のような記事がヒットすると思います。

DataGridView.Item[] プロパティ
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.datagridview.item?view=netframework-4.8

投稿2021/11/21 04:37

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tou.23.bc

2021/11/21 08:44

丁寧にご回答いただきありがとうございます。 なぜ、datagridviewのあとに.Itemをつけて検索するのでしょうか? 申し訳ありませんが、よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2021/11/21 09:08

何を聞いているのか分かりません。
BeatStar

2021/11/22 01:39

横からすみません。 @ SurferOnWwwさん > 何を聞いているのか分かりません。 おそらく、『インデクサそのものが全くわかっていない』のでは。 私の回答への返信でも『C#でやらざるを得なくなったので(基礎をすっ飛ばして)手っ取り早く調べています』的なことを書いているので。
fana

2021/11/22 02:55 編集

> dataGridViewTo1[0, e.RowIndex] っていう記述には Item という単語は出てきていないのですから, 【ググり方として,何故に ".Item" というのを検索ワードに付与する話になっているのか?】と疑問に思うのは自然なようにも思えますが. BeatStar氏のおっしゃるように基礎からやった結果として,この "[]" を見て文法的に「インデクサ」だと判断できたとしても,それでググる場合には, 例えば「C# datagridview インデクサ」とかになるんじゃないでしょうか. --- Oh, I'm very sorry that I wrote my useless impressions. I didn't mean to interrupt your useful discussion.
退会済みユーザー

退会済みユーザー

2021/11/22 02:11 編集

質問者さん本人から聞きたいので横レス無用です。(紹介した記事にサンプルコード入りで詳細な説明があるので読めばわかると思うが、それを読んでも分からなかったのか、そもそも読んでないのか。読んでも分からなかったなら、どこがどう分からなかったか聞かせてほしい)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問