Landscape トップページ | < 前の日 2004-08-24 2004-08-25 次の日 2004-08-26 >

Landscape - エンジニアのメモ 2004-08-25

DataSet でインテリセンスが効かない


* DataSet でインテリセンスが効かない

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net] [C#]

プラトンが言ったように、人間は不完全だ。不完全だからこそ補完が必要。2004-08-02 の「cygwin で /cygdrive を bash の補完対象にする」も補完にかける情熱の産物だ。

というわけで、Visual Studio .NET 2003 の補完機能「インテリセンス (IntelliSense)」はいつも便利だと思ってる。Delphi 5 を使っていたときも補完を活用していたが、VS.NET 2003 の補完は Delphi 5 の上を行く。発表年が5年ほど違うので新しい方が高機能なのは当たり前だけど。あ、私は統合開発環境って Delphi5 と VS.NET くらいしか常用していなかったので、 Eclipse などの補完機能については全く知らない。

補完機能を駆使してコーディングしてるとタイプミスを大幅に減らせるし、長いクラス名やメンバ名を使うときの心理的障壁を下げられる。実に生産的な機能だ。

- なんで補完できないの?

自分で作成した DataSet の Table や Row を補完したいが、なぜかインテリセンスが効かない。CTRL + SPACE を押しても無反応。ディスクアクセスしてる様子もない。このメンバは補完できないといった感じ。

System.Web 名前空間のクラスやインスタンスのメンバは問題なく補完できるのに、なぜか自分で作成した DataSet のメンバを表示させようとしても、うんともすんとも言わない。

- 先達の叡智を検索

Google で Intellisense DataSet を検索。および Google でインテリセンス DataSet を検索
DataSet をカタカナのデータセットにして検索してもあまり有用なサイトは見つからなかった。

DataSetのIntelliSenseが働かない
http://hp.vector.co.jp/authors/VA019702/csharp/cs002.html
で、IntelliSenseの話に戻るが、C#の開発環境とはこういうものらしい。
解決策としては、ソリューション全体をリビルドしてやればいい。ソリューションが何千ファイルも抱える場合リビルドにはためらいがあるかもしれないが、IntelliSenseを欠く開発効率の悪さを考えるなら、惜しむ労力でもないだろう。

DataSetのDataRowでインテリセンスが効かない(VisualStudio.Net2003)
http://blogs.users.gr.jp/naka/archive/2004/04/10/1887.aspx

パラメータ・ヒントがうまく動作しない時は
http://www.kumei.ne.jp/c_lang/netinteli.htm
[C++]
.ncb ファイルに問題がある場合

プロジェクト ディレクトリのルートにある .ncb ファイルが読み取り専用であるか
破損している場合、IntelliSense の情報は使用できません。この問題を修復するには、
次の処理を行います。

ソリューションを閉じます。
.ncb ファイルを削除します。
再びソリューションを開きます。
再びソリューションを開くと、.ncb ファイルが新規作成されます。

言われたとおり、ncbファイルを削除するとパラメータ・ヒントがきちんと動作するようになりました。また、エラー時出力ペインの指摘箇所をクリックしても「xxは違うプロジェクトで・・」のメッセージボックスも出なくなり快適な環境となりました。(メデタシ、メデタシ)

.ncb ファイルが見つからなかったので上記方法は試していない。

くだすれC#(Part3)
http://pc2.2ch.net/tech/kako/1047/10472/1047210828.html
88 名前: デフォルトの名無しさん 投稿日: 03/04/08 02:21
メンバ変数を50くらいに増やしたら
突然、インテリセンスが利かなくなったんだけど
つらいなぁ。入力中もキーワードが青じゃなくなってるし...。


89 名前: デフォルトの名無しさん 投稿日: 03/04/08 02:38
>>88
そのクラスはコンパイル通るかい?


90 名前: デフォルトの名無しさん 投稿日: 03/04/08 03:00
>>88
それうちの環境で良くある
VSを起動し直せばいい


91 名前: 85 投稿日: 03/04/08 09:02
>>86
おお、サンクス!
Bitmap側じゃなくGraphics側にメソッドがあったのか。
ControlクラスにCreateGraphics()ってのあって
これ使えばOnPaint()以外でも描けるみたい。
こっちも試してみます。

>>88
そもそもメンバ変数50個はクラスの設計的に問題ありかも。
ちなみに自分もそこまで増やしたこと無いけど
インテリきかなくなるときちょくちょくあります。
迷わず再起動。


92 名前: デフォルトの名無しさん 投稿日: 03/04/08 09:08
>>88
俺も、もっともメンバ変数の数とは無関係のような気がしないでも無い。

>>91
フォームクラスじゃ100は当たり前じゃないか?

- 対策

ウェブを見て回ってわかったが、要するにバグなんだろうね。
Visual Studio を再起動すれば直ると >>90 は言ってるけど、私の環境はそれでも直らず OS の再起動までしてやっと直った、ということがあった。

この現象が起きたときは、OS を再起動してソリューションのリビルドをすれば直るかも、ってところかな。開発環境としてはもっと安定していてほしいんだけどな。でも便利だから仕方なく使う。

- 型を間違えてると補完できないよ

最近、「自分で作った DataSet のメンバを補完できないんだけど」という相談を受けた。DataTable 名が補完されないという。典型的な上記症状だと思って対策を伝えたところ、別の原因だった。サンプルコードを以下に示す。

DataSet ds = new MyDataSet();

このあとに ds. まで入力して DataTable 名を補完しようとしたができないとのこと。DataSet 型にキャストしてるんだから、補完されないのは正しい動きだ。

MyDataSet ds = new MyDataSet();

上記のように直して解決。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。