ふらっとC♯(初心者用) Part7

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは

「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。

ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

前スレッドはこちら
http://pc8.2ch.net/test/read.cgi/tech/1122001458/l50 (Part6)
http://pc8.2ch.net/test/read.cgi/tech/1065196964/l50 (Part5)
http://pc2.2ch.net/test/read.cgi/tech/1059028988/l50 (Part4)
http://pc2.2ch.net/tech/kako/1047/10472/1047210828.html (Part3)
http://pc2.2ch.net/tech/kako/1035/10358/1035895873.html (Part2)
http://pc2.2ch.net/tech/kako/1023/10237/1023766485.html

C♯相談室 Part30
http://pc8.2ch.net/test/read.cgi/tech/1141448072/l50
2デフォルトの名無しさん:2006/03/04(土) 16:50:01
前スレで相談室と統合しようという発言があったけど、
この板を恐る恐る覗き込んだ初心者が居るかと思い建ててしまった。
反省はしていない。
3デフォルトの名無しさん:2006/03/04(土) 17:04:01
たぶんだけど、相談室だけで十分だと思うよ
2つある理由がないもん
4デフォルトの名無しさん:2006/03/04(土) 17:07:46
本スレでは Win32API の GetPixel 使え、で済ますことでも、
こちらなら DllImport から教える余裕が出るな、何故か
5デフォルトの名無しさん:2006/03/04(土) 17:10:50
>>4
それ別に相談室でやってもよくないか?
6デフォルトの名無しさん:2006/03/04(土) 17:19:31
配列の最大数っていくつなんですか?
7デフォルトの名無しさん:2006/03/04(土) 17:22:29
一応、メモリの許す限り
8デフォルトの名無しさん:2006/03/04(土) 17:32:01
>>7
そうなんですか。Integerくらいかと思っていました。
ありがとう御座いました。
9デフォルトの名無しさん:2006/03/04(土) 17:54:53
C#でフリーソフトを作る一番簡単な方法を教えてください
ベクターで人気が出ることが目的です
10デフォルトの名無しさん:2006/03/04(土) 17:59:51
>>9
がんばる
11デフォルトの名無しさん:2006/03/04(土) 18:10:40
悩む暇があったら作れ
12デフォルトの名無しさん:2006/03/04(土) 18:21:19
>>8
とりあえずエロだな。
13デフォルトの名無しさん:2006/03/04(土) 21:27:29
C#.net と VB.net は何が違うんでしょうか?教えてください。
14デフォルトの名無しさん:2006/03/04(土) 21:29:28
使用する言語が違う
後は大体同じ
15デフォルトの名無しさん:2006/03/04(土) 21:29:59
.netプログラムって逆コンパイル可能ですか?
1613:2006/03/04(土) 21:32:32
>>14
ありがとうございます。
プログラムの記述の仕方が違うということですね。
すっきりしました。
17デフォルトの名無しさん:2006/03/04(土) 22:15:14
同じオブジェクトへの参照をまとめて記述したいのですが(vbでいうとwithステートメント)、
VC#ではどう記述すればいいのでしょうか。
18デフォルトの名無しさん:2006/03/04(土) 22:34:25
無くなった
理由はソースの可読性が下がって見づらい
19デフォルトの名無しさん:2006/03/04(土) 23:20:19
>>16
それでスッキリできる君の脳に驚愕
20デフォルトの名無しさん:2006/03/04(土) 23:28:24
int型の配列の変数hogeの5番目を配列の先頭としてアクセスしたいとき、Cでは (hoge+5)[0] でできたのですが、C#ではできません
何か設定が間違っているのでしょうか
21デフォルトの名無しさん:2006/03/04(土) 23:30:04
なんでそんな事する必要がある
あとポインタと配列は全く別モンだ Cではほぼ同じように扱うが
22デフォルトの名無しさん:2006/03/04(土) 23:30:56
>>18
そうなんですか。ありがとうございます。
23デフォルトの名無しさん:2006/03/04(土) 23:31:03
配列とポインタは別物です
素直に hoge[5] と書いてください
24デフォルトの名無しさん:2006/03/05(日) 00:05:29
>>20
private class SubArray<T> {
 private T[] array;
 private int seed;
 public SubArray(T[] array, int seed) {
  this.array = array;
  this.seed = seed;
 }
 public T this[int index] {
  get { return this.array[index + seed]; }
  set { this.array[index + seed] = value; }
 }
 public static SubArray<T> operator+(SubArray<T> value, int seed) {
  return new SubArray<T>(value.array, this.seed + seed);
 }
}

半分ギャグだから本気にとるな?
2520:2006/03/05(日) 00:33:26
>>21 >>23
別物と言うのはどういうことでしょうか?
CとC#では配列の扱いが変わってしまったという事でしょうか?
もしかしてC#には完全な下位互換性が無いのでしょうか!?

>>24
演算子のオーバーロードが必要という事は、やはり配列の実装が変わってしまったのでしょうか。。。
26デフォルトの名無しさん:2006/03/05(日) 00:53:14
あのね、ちょっと調べてみれば全く別物ってことが分かると思うよ。
Cとjavaの違いに近い程度に違う。
27デフォルトの名無しさん:2006/03/05(日) 01:08:30
Cにあった便利機能がないせいでC♯は地獄だぜ
おかげで俺しか読めないソースが作れなくなって
いつ肩を叩かれるかと娘に肩を叩かせながら飲んでる毎日だ
28デフォルトの名無しさん:2006/03/05(日) 01:17:05
>>25
いったいなにとの下位互換性だ
29デフォルトの名無しさん:2006/03/05(日) 02:15:08
多分C++でCのソースが使えるように、C#でもCのソースがそのまま使えると
思ってるのだろう。
>>25
C#はC++の皮を被ったjavaだ。
30デフォルトの名無しさん:2006/03/05(日) 02:22:12
Hello, Worldみりゃ明らかに違うってわかりそうなもんだけどなあ・・・
31デフォルトの名無しさん:2006/03/05(日) 02:36:46
むしろMainで気づくだろう、普通。
32デフォルトの名無しさん:2006/03/05(日) 04:01:56
プログラミングC# 第4版(O'REILLY)で勉強を始めましたが、コレクションのところで躓きました。
genericなどというやつはひとまず飛ばしてもかまわんでしょうか…?
33デフォルトの名無しさん:2006/03/05(日) 04:04:32
OK
C# 1.0 には無かったし、無くてもプログラミングは可能

ただ知ってると便利ではあるから、全貌を把握してまた読み返すといい
34デフォルトの名無しさん:2006/03/05(日) 04:10:57
>>33
ありがとう。ちょっと安心しました。
精進しまふ(`・ω・´)
35デフォルトの名無しさん:2006/03/05(日) 06:27:06
つか、テンプレは貼らんでいいの?
36デフォルトの名無しさん:2006/03/05(日) 09:28:20
あ、新スレ立ったんですね
前スレの最後のほうではお世話になりました
また質問があったら来ます。
37天麩羅ってこれ?:2006/03/05(日) 09:32:04
C#Builder 1.0 Personal 日本語版 ダウンロード
http://www.borland.co.jp/csharpbuilder/personal/index.html
.NET Framework 1.1 製品ドキュメント
http://www.microsoft.com/japan/msdn/library/ja/netstart/html/sdkstart.asp

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html
GotDotNet Japan 掲示板
http://www.gdncom.jp/general/bbs/

宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html
38デフォルトの名無しさん:2006/03/05(日) 14:06:00
画像を配列に読み込む方法を教えてください。
現在はBitmapクラスをわざわざ作成してそこから抜き出しています。

こんな感じ
Bitmap bmp = new Bitmap(filename);
BitmapData bmpdata = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb);

int[] data = new int[bmp.Width * bmp.Height];
Marshal.Copy(bmpdata.Scan0, data, 0, bmp.Width * bmp.Height);
39デフォルトの名無しさん:2006/03/05(日) 14:42:22
windowsアプリケーションをC#で作りたいんですが
やはりがっちりした文法書を読まなくてはいけないんですかね?
作りたいソフトは指定したフォルダに変化(ファイルの増加・削除など)があった場合に
メッセージボックスを出すというものです。
40デフォルトの名無しさん:2006/03/05(日) 14:58:08
41デフォルトの名無しさん:2006/03/05(日) 14:58:52
>>39
第2章 ボタンを押したらメッセージが出る簡単なプログラムを作ろう!

程度の知識で出来る。
42デフォルトの名無しさん:2006/03/05(日) 14:59:39
>>40
習作かもしれんだろう。
脊髄反射厨がイルのは初心者スレだからか。。。
43デフォルトの名無しさん:2006/03/05(日) 15:24:53
>>42
いいすぎたかなあ。そんならあやまる。

でも、>>39は、すぐ前にある>>37を見る努力するらしてないようだし。
それに、>>1のガイドラインには従ってるつもりだけど。

> 内容に応じて、他スレ・他板へ行くことを勧められる
44デフォルトの名無しさん:2006/03/05(日) 15:31:59
>>43
>それに、>>1のガイドラインには従ってるつもりだけど。

ガイドラインに違反していると判断した場合は
独断で煽りその他の攻撃を開始することが出来る。

なんて書いてないけど。
45デフォルトの名無しさん:2006/03/05(日) 15:46:37
まあちゃんと教えてあげてるだけ優しいんじゃね?w
46デフォルトの名無しさん:2006/03/05(日) 15:47:29
>>39
フォルダの情報を定期的に見に行って蓄えて、変化があったらログ出力。
なんか、ちゃんと動いたらどうでもいいような気もするが。
4738:2006/03/05(日) 16:02:49
誰か僕のにも答えてくれるとうれしいです
48デフォルトの名無しさん:2006/03/05(日) 16:21:15
>>40-46
僕のせいでちょっと荒れてさせてしまったらすいません。
すでにvectorなどにあるソフトの組み合わせで事足りてるのですが
時間に余裕ができたので自分で作ってみようと思ったのです。
>>37に乗ってるサイトはほとんど知っててみながらコピペコピペで作っていたんですが
この方法に不安になったので質問させていただきました。

回答ありがとうございました。
49デフォルトの名無しさん:2006/03/05(日) 17:19:39
アプリケーションを終了したときに
例外 unknown software exception (0xc0020001) がアプリケーションの 0x7c81eb33 で発生しました
とのダイアログがたまに出るのですが、原因がわかりません。

どのようにしたら回避できるでしょうか?
なお wmp.dll を Interop して使用しています。
50デフォルトの名無しさん:2006/03/05(日) 17:24:39
折れんとこじゃでない
51デフォルトの名無しさん:2006/03/05(日) 18:00:02
>>38
ArrayListにでもほおりこんじゃえばいい...のかな?
52デフォルトの名無しさん:2006/03/05(日) 22:19:09
>>46
いやいや。
53デフォルトの名無しさん:2006/03/05(日) 22:25:46
>>38はビットマップの各ピクセルのデータを配列として取り込みたいって言ってるんじゃないか?
54デフォルトの名無しさん:2006/03/05(日) 23:02:29
>>53
そう、それが知りたいです
Bitmapを作成せずに直接ファイルからピクセルデータを読めませんか?
55デフォルトの名無しさん:2006/03/05(日) 23:20:57
読み込めないことも無いが難しい
32bppRgbと決まってるなら多少は簡単になる
ファイルをファイルストリームとして読み込んでヘッダ分だけ進めれば
直接4byte/pixelのデータが詰まってる

http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_021/csharp_abc05.html
このページを読んでわからないならやめた方がいい
そのあたりの面倒さを省くためのBitmapだし、
その部分が頻繁に読み出されるわけじゃないならパフォーマンスの低下も気にかけるほどじゃない
5655:2006/03/05(日) 23:28:58
むしろ>>38のコードの意味を理解して使ってるなら
>>38の方がスマートに思えるんだがどうだろうか
57デフォルトの名無しさん:2006/03/05(日) 23:31:38
VisualC#の練習するのって、Visual Web Developer 2005 Express Editionでいいかな?
58デフォルトの名無しさん:2006/03/05(日) 23:33:34
>>57
お前器用すぎw
59デフォルトの名無しさん:2006/03/05(日) 23:35:27
どういうこと?
60デフォルトの名無しさん:2006/03/05(日) 23:38:40
素直にVisualC#を使えばいいじゃないのよさ
それともASPやりたいの?
61デフォルトの名無しさん:2006/03/05(日) 23:45:03
>>55
>>56
レス、ありがとうございます
とりあえずあんな読み方をしていたんですが
その参考ページを見た限りでは確かに今のままのほうがよさそうですね。

けどせっかくなので一応試してみます
62デフォルトの名無しさん:2006/03/06(月) 00:05:48
ところで>>38のコード、32bppならいいがそうでない場合コピーする量が足りてない可能性があるぞ。
横は4バイト境界に切り上げるから。
63デフォルトの名無しさん:2006/03/06(月) 00:57:28
>>60
VisualC#の製品版がないので替わりに使えるかと思ったのですが。
64デフォルトの名無しさん:2006/03/06(月) 01:04:40
>>63
つ Visual C# 2005 Express Edition
65デフォルトの名無しさん:2006/03/06(月) 01:36:23
じゃぁ、それで。
66デフォルトの名無しさん:2006/03/06(月) 10:06:39
>>54
BITMAPフォーマットを理解してバイナリ操作すればいーじゃん
.NET Frameworkの利便性に目が眩んでいるようだけど、そんなもの無い環境ではバイナリフォーマットを理解して操作するのが普通
数万ファイルとか一気に処理するならともなく、普通に使っているならBitmapでもパフォーマンス的な差は無いと思うけどね
67デフォルトの名無しさん:2006/03/06(月) 14:36:45
今更かもだけども。
68デフォルトの名無しさん:2006/03/06(月) 14:40:34
>>48
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemiofilesystemwatcherclasstopic.asp
FileSystemWatcherで変化を監視すればいいんじゃないかと。

# 67は投稿ミスりましたすみません
69デフォルトの名無しさん:2006/03/06(月) 21:47:07
C#でマイクロソフトMVPを取るにはどうすれば良いですか
VS2005は落としました
70デフォルトの名無しさん:2006/03/06(月) 21:50:27
                        ハ_ハ       
                 ハ_ハ    (^( ゚д゚)^)  むりだとおもう
               ('(゚д゚∩    )  /          むりだよ
                ヽ  〈   (_ノ_ノ
                 ヽヽ_)
71デフォルトの名無しさん:2006/03/06(月) 21:53:34
>>69
コネが必要
72デフォルトの名無しさん:2006/03/06(月) 22:00:57
>>70
MCPの上位資格を一通り取ったら会社から「MVPになれ」と言われました
なので無理でもなりたいです

>>71
マイクロソフトの社員と仲良くなれば良いのでしょうか
そもそもどうやって取得するのでしょうか
73デフォルトの名無しさん:2006/03/06(月) 23:12:48
7472:2006/03/06(月) 23:15:59
結論から言えばアクティブに動いてそれなりに有名になれってことだな
スキルだけじゃダメ
7574:2006/03/06(月) 23:17:03
訂正 72 -> 73
76デフォルトの名無しさん:2006/03/07(火) 02:14:14
データソースにするオブジェクトって
例えばpublicなクラスを作ってただpublicなフィールドを配置しまくればいいんですよね?
77デフォルトの名無しさん:2006/03/07(火) 02:21:54
プロパティにすれ
値変更のイベントも置ける
78デフォルトの名無しさん:2006/03/07(火) 02:39:19
public class hoge{

private string unkoValue;
public string unko
{
get { return unkoValue; }
set { unkoValue = value; }
}
これだとOKで

public class hoge{
public string unko;
}

これだけだと駄目なんですね。訳わかんないけど有難うございます。
79デフォルトの名無しさん:2006/03/07(火) 09:00:37
publicなプロパティは大文字ではじめるとよろし
80デフォルトの名無しさん:2006/03/07(火) 09:10:04
Hashtable.IsReadOnlyを設定するには、生成時にIDictionaryの部分を
どうこうするんだろう、というところまでは推測したんだが、そこから先がわからん。
どうすれば設定できる?
81デフォルトの名無しさん:2006/03/07(火) 12:24:59
visual C# 2005 expressを入れようとしたらSP2入れろと警告されました。
SP2が公開されたときは色々不具合が報告されていたので、ずっと遠慮してたんですが、解決されているのでしょうか?
また、入れてから不具合が見つかったらSP2だけアンインストールできるんでしょうか?
82デフォルトの名無しさん:2006/03/07(火) 13:09:38
>>81
XPSP2以降のバグやセキュリティリスクなんかは定期アップデートで直ったりしてる
全部完璧直っているかと言われれば多分それは永久に無いと思うが、XPSP1aよりはマシだと思う
あとは君の開発するアプリがXPSP2で都合が悪いとかXPSP1aじゃないと絶対駄目だとかそういう理由があるかどうかくらい

個人的には“現時点での”危険性やバグは XPSP2 < XPSP1a だと思うよ
83デフォルトの名無しさん:2006/03/07(火) 13:47:20
SP2入れた時点でPCが起動するなら比較的安全にSP2外せるようになったな
前は戻せなくて困ったりしたもんだが

まあアップデートする前に一時的にサービスとスタートアップを無効にすること
オフィシャルに注意書きがあるからよく読むといい
84デフォルトの名無しさん:2006/03/07(火) 14:15:36
>>80
Hashtable は IsReadOnly は常に false を返すよ。
せいぜい派生クラスでも作るとか。
8581:2006/03/07(火) 14:46:23
ありがとうございます。
86デフォルトの名無しさん:2006/03/07(火) 19:26:11
♭C♯
87デフォルトの名無しさん:2006/03/07(火) 21:06:01
ApplicationSettingsBase.Save メソッドは
例えばapp.configに値を保存するってことですか?
app.configに書き込んで保存すれば次回起動時にapp.config読み込めばその状態引き継げますよね?
88デフォルトの名無しさん:2006/03/07(火) 21:35:00
>>87
やれば分かる事を聞くな
やってみても分からない事を聞け
89デフォルトの名無しさん:2006/03/07(火) 21:54:02
>>88
やってみたんですけど保存されないんです。
Saveメゾットってどこに保存してるんでしょうか?
90デフォルトの名無しさん:2006/03/07(火) 22:29:10
>>89
Application Settings Architecture
http://msdn2.microsoft.com/en-US/library/8eyb2ct1.aspx

Settings File Locations ってとこ嫁
91デフォルトの名無しさん:2006/03/07(火) 22:31:42
public void MyThread()
{
 Thread.Sleep(1000);
}

private void button1_Click(object sender, EventArgs e)
{
 for (int i = 0; i < 5; i++)
{
    ThreadStart ts = new ThreadStart(MyThread);
    Thread thread = new Thread(ts);
     thread.Start();
     thread.Join();
}


このコードを実行して、ボタン1を押すと、
ループが終わるまでの約5秒間、フォーム全体が無反応になります。
スレッドを使ってるのに、なぜこうなるのでしょうか?
92デフォルトの名無しさん:2006/03/07(火) 22:43:46
Join の意味を知っているか? ……知らないんだろうな。
93デフォルトの名無しさん:2006/03/07(火) 22:46:12
知らないです。
教えて欲しいです。
スレッドの終了を待つのではないのですか?
94デフォルトの名無しさん:2006/03/07(火) 22:50:56
そうだよ。
で、待ってる間はその待ってる方のスレッドが止まる。
91 のコードは元スレッドが新スレッド起動>新スレッドが終了するまで元スレッド待機、という記述だ。
95デフォルトの名無しさん:2006/03/07(火) 22:55:33
わかりました。
やりたいことは、
MyThreadを別スレッド動かしつつ、(フォームが無反応にならずに)スレッドの終了を待つことなのですが、
どうすればいいでしょうか
96デフォルトの名無しさん:2006/03/07(火) 22:57:12
そんな理解ででスレッド使わないでください。
97デフォルトの名無しさん:2006/03/07(火) 23:00:21
待つって、待ってからどうしたいんだ?
終わったタイミングで何かしたいんなら、
コールバックのデリゲートを渡すなり、イベントを作るなり、
コールバック用のオブジェクトを渡すなり、
もともとコールバックの機能を持ってる機能を使うなり、
2005ならBackgroundWorkerつかうなり
好きにしてくれ。

98デフォルトの名無しさん:2006/03/07(火) 23:02:00
わかりました。
イベントを作るのが簡単そうなのでそうしてみます
99デフォルトの名無しさん:2006/03/07(火) 23:34:40
backgroundworkerって意外と使えるな。
100デフォルトの名無しさん:2006/03/08(水) 01:03:18
>>84
回答ありがとう。

>常に false を返す
そうだったの? MSDNに「読み取り専用の場合は true」
とか書いてるからできるもんだと思ってたよ。
サブクラス化して IsReadonly をオーバーライドし true を返してみたが
ちっとも読み取り専用になってなかった……。
101デフォルトの名無しさん:2006/03/08(水) 01:10:53
そりゃそうだ。
きっちり Add とかで NotSupportedException 投げるようにオーバーライドしないと。
102デフォルトの名無しさん:2006/03/08(水) 02:04:30
>>99
つぅか無茶苦茶便利。
103デフォルトの名無しさん:2006/03/08(水) 08:48:56
>>101
自前で IsReadonly の状態を保存しておき、
要素を追加・削除・変更する操作すべてで IsReadonly の状態を見る。
で、読み取り専用に反するアクセスが行われたら NotSupportedException をスロー。
こんな認識でOK?

ここまで書いてて検索し直したら>>101の方法と同じことが書いてあった。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5875&forum=7&7
104デフォルトの名無しさん:2006/03/08(水) 10:59:07
COMのクラスを使うときって、うしろにClassが付いてる名前を
選べばいいんだっけ?
105デフォルトの名無しさん:2006/03/08(水) 11:01:15
new できればそれでいいよ。どうせメインはインターフェイスだし。
何やりたいのか知らないけど。
106デフォルトの名無しさん:2006/03/08(水) 15:10:30
>>104
命名規約が無いのでそういう決め付けはできない
107デフォルトの名無しさん:2006/03/08(水) 20:38:19
たびたびすいません。

ApplicationSettingsBase.Save メゾットを実行するときに
「'System.Security.AccessControl.DiscretionaryAcl' のタイプ初期化子が例外をスローしました。」
というエラーがでるときとでないときがあります。
詳細みたりいろいろやってみたのですが解決法がわかりません。
どう解決すればいいか教えてください。
108デフォルトの名無しさん:2006/03/08(水) 21:43:56
見た詳細の中身といろいろやってみたことの中身をまずは説明してくれ
同じ内容を言ってしまう手間を省くためにも頼むぜ
109デフォルトの名無しさん:2006/03/08(水) 22:14:16
メゾットってたべられるの?
110デフォルトの名無しさん:2006/03/09(木) 00:00:33
大きなデータも扱えるテキストエディタを作ろうとするとき、
ドキュメントのデータは、1行1クラスにして、それのコレクションにして
管理すればいいと思うんですが、表示するときどうしたらいいのでしょう?
TextBox使うんじゃないですよね?
こういうの作ったことが無くて、見当が付きませんです。
111デフォルトの名無しさん:2006/03/09(木) 00:35:15
BitBliとかのBltってどういう意味でしょうか?
Copyと同義?
112デフォルトの名無しさん:2006/03/09(木) 00:40:27
C# と何の関係があるんだ?
113デフォルトの名無しさん:2006/03/09(木) 00:48:13
C#で画像を扱う関数を作っていて名前で悩んでます
114デフォルトの名無しさん:2006/03/09(木) 00:59:31
13>>
つ private static favorite Pornografity()
115デフォルトの名無しさん:2006/03/09(木) 07:02:17
pornographyか?
pornograffittiか?
116デフォルトの名無しさん:2006/03/09(木) 09:23:17
>>111
ベーコン・レタス・トマト
117デフォルトの名無しさん:2006/03/09(木) 09:57:23
>>111
Block transfer
118デフォルトの名無しさん:2006/03/09(木) 10:27:41
>>111
Bse Livedoor Taishingisou
119デフォルトの名無しさん:2006/03/09(木) 15:58:36
Form1.csで作業中、プロジェクト→Windows フォームの追加
でDebugFormというフォームを作成しました。
しかしForm1で

DebugForm df = new DebugForm();
df.Shouw();

とすると、

型または名前空間名 'DebugForm' が見つかりませんでした。

というエラーが出ます。
他に何か宣言が必要だったりするのでしょうか。
120デフォルトの名無しさん:2006/03/09(木) 16:00:36
すみません。
namespaceのつづりを間違えていました。
解決しました。
121デフォルトの名無しさん:2006/03/09(木) 16:29:55
axWebBrowser でウェブページを読み込み、HTMLを解析しようとしているのですが、
スクリプトエラーのあるページを開いてしまったときに、

「Internet Explorer スクリプト エラー」
このページのスクリプトでエラーが発生しました。
このページのスクリプトを実行し続けますか?
はい いいえ

というダイアログが出てしまいます。
ウェブページの解析にはスクリプトの部分は関係ないので、このエラーを無視したいのですが、
どうもこのエラーが原因でaxWebBrowser.Busy状態になっているようなのです。
try catchに入れてみるなど試したのですが、プログラムとは関係無いところで動いているようで、だめでした。
このダイアログを出さないようにする、または無視する方法を知っている方いますか?
122デフォルトの名無しさん:2006/03/09(木) 16:40:57
Silent プロパティで抑止できた気がする
123デフォルトの名無しさん:2006/03/09(木) 16:43:03
>121
ありがとうございますm(_ _)m
124デフォルトの名無しさん:2006/03/09(木) 16:43:33
>122
ありがとうございますm(_ _)m
125デフォルトの名無しさん:2006/03/09(木) 17:15:18
デザイナーで作業している時は、XP風なボタンなのですが、
プログラムを実際に起動すると、98風なボタンになってしまいます。
なぜでしょうか?
126デフォルトの名無しさん:2006/03/09(木) 20:38:52
>>125
もはやFAQな気もしますが。
フォームの表示前にApplication.EnableVisualStyles();を呼ぶとか
マニフェストファイルを書くとかしたらいいんじゃないかと。
127デフォルトの名無しさん:2006/03/09(木) 21:47:56
>>108
質問の仕方が悪く申し訳ないです

'System.Security.AccessControl.DiscretionaryAcl' についてまずgoogle検索しました
InnerExceptionがDLL 'advapi32.dll' の 'CreateWellKnownSid' というエントリ ポイントが見つかりません。となってるので
advapi32.dllについてgoogle検索しました。
しかしどちらとも有益な情報は得られませんでした。
saveメゾットについてはmsdnライブラリを読み、その通りコードを書いています。

またsettiin1.settingsというファイルに設定を書いていてプログラム起動時に読み込む設定にしてあるのですが
まったく別の情報(チェックボックスのチェック状態が設定ではfalseなのにtrueで起動するなど)になってしまいます。

アプリケーション設定の保存・読み込みに異常があるとは思うのですが根本的な原因・解決法がわかりません。
おねがいします。
128デフォルトの名無しさん:2006/03/10(金) 00:49:40
>>127
いーかげんそのメゾットやめれ。
http://glossary.tank.jp/t0C43.html
129デフォルトの名無しさん:2006/03/10(金) 10:04:02
>>128
タイプミスだとばかり思ってた。
身の回りそう思い込んでるやつっているか…?
130デフォルトの名無しさん:2006/03/10(金) 16:32:00
>>129
プパロティって言われたときは脳みそがグルグルした
131デフォルトの名無しさん:2006/03/10(金) 16:37:44
Windows2003って言われたことはある。server 2003 じゃなく。
132デフォルトの名無しさん:2006/03/10(金) 17:32:24
>>131
MSでも略語として使われているっぽい

"Windows 2003" site:microsoft.com/japan - Google 検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%22Windows+2003%22+site%3Amicrosoft.com%2Fjapan&num=50

ついでにこれも

"Windows 2003 Server" site:microsoft.com/japan - Google 検索
http://www.google.com/search?num=50&hl=ja&q=%22Windows+2003+Server%22+site%3Amicrosoft.com%2Fjapan&lr=lang_ja

多分"Windows 2003 Server"は誤記だろうけど"Windows 2003"は略称として通用するっぽい
133デフォルトの名無しさん:2006/03/10(金) 18:10:25
教えてください。

いま、サーバクライアントのプログラムを作成しています。
http://support.microsoft.com/default.aspx?scid=kb;ja;307445#appliesto
http://support.microsoft.com/default.aspx?scid=kb;ja;307739
こちらのサイトを見てサーバ側でConsole.WriteLineで出力することまでは出来ました。

しかし、クライアントから送られたデータをどのようにして
サーバで取得していいのか分かりません。

サーバオブジェクトの値をどのようにしてサーバ側で取得すればいいでしょうか?

よろしくお願いします。
134デフォルトの名無しさん:2006/03/10(金) 18:15:39
>>133
中途半端に読んでるからそうなる
コード以外もちゃんと読め

ここへのリンクがあるだろ

Visual Basic .NET を使用してリモート サーバーにアクセスするクライアントを作成する方法
http://support.microsoft.com/kb/300943/

このサンプルの中でサーバはクライアントから文字列データを取得してるでしょ
あとは応用
135デフォルトの名無しさん:2006/03/10(金) 18:23:57
>132
んにゃ。本人曰くOffice2003とごっちゃにしてたらしい。(server2003の存在自体知らなさそう)
スレ違いなのでこの辺で。
136デフォルトの名無しさん:2006/03/10(金) 18:30:02
>>135
エスパーにしか分からないネタを書かないで下さい
137デフォルトの名無しさん:2006/03/10(金) 20:34:37
>>128
メゾッドなのですね。今後気をつけます。

>>127をどなたかお願いします。
138デフォルトの名無しさん:2006/03/10(金) 20:37:18
お前はわざとやってるのか
139デフォルトの名無しさん:2006/03/10(金) 20:37:50
これはひどい
140デフォルトの名無しさん:2006/03/10(金) 21:48:20
自分で「コンピュータでプログラムを組むということ自体が向いていない」と思っているのだろう
141デフォルトの名無しさん:2006/03/10(金) 22:13:18
>>134
ほとんど同じ内容に見えるのだが気のせいか
http://support.microsoft.com/default.aspx?scid=kb;ja;307739
http://support.microsoft.com/kb/300943/

>>133
他のスレなら質問の要領が悪けりゃ無視するのだがふらっとだから少しエスパーすると、
フォームを持ったアプリをサーバーにしてクライアントからリモートで情報を送り
その内容をサーバーのフォームに表示するようなことがしたいんじゃないのかな。
回答がほしいならやりたいことを具体的にあげてくれ。
142133:2006/03/10(金) 23:09:36
やりたいことは、単なるサーバ、クライアント間の通信です。
サーバ側でデータ取得さえできれば問題ありません。

 サーバの
--
RemotingConfiguration.RegisterWellKnownServiceType(
System.Type.GetType("ServerClass.myRemoteClass, ServerClass"),
"RemoteTest",
WellKnownObjectMode.SingleCall);
--
この部分でデータを取得して、WriteLineで出力していますよね。
この出力データをサーバ部の変数に取り込むにはどうしたらいいのかと
言う質問です。
myRemoteClass tmp = RemotingConfiguration.Re......
とういう風にして読み込めればいいのですが・・・。
 きっと単純なことなのでしょうが、サンプルみてもどれも、WriteLineで出力
して変数に格納しているようなサンプルが見つからないもので質問しました。
143デフォルトの名無しさん:2006/03/11(土) 00:16:06
>>138-140
メゾットでもメゾッドでもなくメソッドですね。素で間違えてました。
答える気も失せますね。申し訳なかったです。失礼します。
144デフォルトの名無しさん:2006/03/11(土) 00:31:17
>>142
き、きみは何を言っているのかね?
てそのまえに何をやってるのか、どういうことが起こってるのか
ぜんぜん理解してないだろ。
145デフォルトの名無しさん:2006/03/11(土) 06:01:09
>>142
System.Consoleのようなstaticなクラスかシングルトンでどこからでも参照可能な単一のオブジェクトを作って、
リモートサーバーオブジェクトとサーバーのメインコード(たとえばUIを担当しているオブジェクトのコード)
の両方からアクセスできるようにする。

サンプルのmyRemoteClassはインターフェイスを使って実装して
public class myRemoteClass: MarshalByRefObject, ImyRemoteClass
クライアント側はインターフェイスでアクティベーションすると何かと都合がいい。
myRemoteClass obj = (ImyRemoteClass) Activator.GetObject(typeof(ImyRemoteClass) ...
ImyRemoteClassだけを単独のDLLにしてサーバー、クライアントの両方にコピーすることになる。
146デフォルトの名無しさん:2006/03/11(土) 08:55:23
>>142
答えがそのKBに書いてあるじゃん
それも理解できないようならヤバいよ
147デフォルトの名無しさん:2006/03/11(土) 15:24:21
複数textBoxに渡ってUndo可能な方法って、
どうするのですか?

148デフォルトの名無しさん:2006/03/11(土) 15:28:20
自分で作れ
149デフォルトの名無しさん:2006/03/11(土) 16:13:47
それぞれのTextBoxでUndoしたらいいんじゃないか?
150デフォルトの名無しさん:2006/03/12(日) 05:10:23
コーディングの話じゃないんで微妙にスレ違いかもしれないんですが、
C# 用のフリーなグラフライブラリってありませんかね?
Java では JGraph というのがあるんですが、C# 用でそういうのがないのかと。
Google で探し回ったけど、どうにも見つからなかったので
皆様のお知恵を借りれたらと。

JGraph はこんなん
ttp://www.jgraph.com/screenshots.html
151デフォルトの名無しさん:2006/03/12(日) 13:07:18
なんていうかC#でフリーのライブラリってほとんど見ない気がする
有料ばっかりだわ
いいライブラリがあったらグラフじゃなくてもこっちが知りたいくらい

http://www.codeproject.com/cs/miscctrl/TreeDiagrams.asp
用途狭いけどこんなんどう
152デフォルトの名無しさん:2006/03/12(日) 14:14:46
http://santamartadotnet.hp.infoseek.co.jp/documents/csharp/structandunion.html

ここを参考に共用体の勉強してますが
ページの下のほうにある
[StructLayout(LayoutKind.Explicit)]
struct Color
{
[FieldOffset(0)] public System.UInt32 Value;

[FieldOffset(0)] public System.Byte R;
[FieldOffset(1)] public System.Byte G;
[FieldOffset(2)] public System.Byte B;
[FieldOffset(3)] public System.Byte A;
}

これをたとえば配列にして
それをint型の配列にキャストする方法を教えてください。
153デフォルトの名無しさん:2006/03/12(日) 14:28:19
そう言うコードを書く。マジで
プロパティにすれば良いんじゃない?
//どうでもいいが B G R A の順番だろ
154デフォルトの名無しさん:2006/03/12(日) 15:25:50
IntPtrとはポインタと同じ愉快方ができるものでしょうか?
愉快方を教えてください
155デフォルトの名無しさん:2006/03/12(日) 16:11:40
不愉快だ。帰る。
156デフォルトの名無しさん:2006/03/12(日) 16:19:19

たとえばptrがIntPtrだとして

*(int*)ptr.ToPointer() = value;

以外に書き方はありますか?
157デフォルトの名無しさん:2006/03/12(日) 16:21:30
同じものではなくてマネージドの中でポインタを処理するためのもの
158デフォルトの名無しさん:2006/03/12(日) 16:28:04
Marshal.WriteInt32(ptr, value);
159デフォルトの名無しさん:2006/03/12(日) 16:33:42
>>158
ありがとうございます。
そんな関数があるんですね。
160デフォルトの名無しさん:2006/03/12(日) 21:15:56
>>150
http://netcontrols.org/nplot/wiki/
こんなん見つけた。
161デフォルトの名無しさん:2006/03/12(日) 21:19:05
IntPtrを1バイト進めるにはどうすればいいんですか?
162デフォルトの名無しさん:2006/03/12(日) 21:21:08
ポインタ使え
163150:2006/03/12(日) 21:26:32
>151
提示のURLからreferされているNetron Libraryが大体希望の機能を
満たしているようです。というか、希望の物そのものっぽいです。
お蔭様で目処は立ちましたので、これから詳細を調査したいと思います。

回答、どうもありがとうございました。
164デフォルトの名無しさん:2006/03/12(日) 21:29:10
165161:2006/03/12(日) 21:32:39
えっと、結論は”できない”ってことですか?
残念です。。
166デフォルトの名無しさん:2006/03/12(日) 22:03:33
つかどんなことやってんだか
167デフォルトの名無しさん:2006/03/12(日) 23:25:58
フォームを最小化してるときに、通常時のフォームの位置&大きさを取得って
P/InvokeでGetWindowPlacement使う以外にないですか?

位置大きさ保存のためだけにPOINTやらRECTやらWINDOWPLACEMENTやら
定義しないとならないんですかね〜
168デフォルトの名無しさん:2006/03/13(月) 00:10:33
>>167
2005ならRestoreBoundsっていうプロパティがあるけど、2003ならそうなんじゃない?
169161:2006/03/13(月) 00:21:07
えっと、もうひとつだけ
IntPtrはポインタにキャストしてから使うのが一般的な用法ってことでしょうか?

>>166
何もやったません。情報集めです。
ポインタをIntPtrに置き換えたほうがいいのかと思ったんですけど違うようですね
170デフォルトの名無しさん:2006/03/13(月) 00:55:05
>>167
SizeChanged でフィールドに取っとけばいいんじゃね?

>>168
ポインタを使わないのが一般的
171167:2006/03/13(月) 01:25:06
>>168
ありゃそんなプロパティありましたか
172デフォルトの名無しさん:2006/03/13(月) 01:59:17
>>168
マジ感動した
今まで>>170の方法でやってたもんなあ
173デフォルトの名無しさん:2006/03/13(月) 20:27:40
よくある話だが2.0で追加されたメソッドやらクラスやらのリストが要るな。
174デフォルトの名無しさん:2006/03/13(月) 22:29:12
>>173
んなもん不要だろ
以前のバージョンを知っているからと新しいバージョンの調査もしない輩が悪い
2.0から入ってくるヤツは当たり前のように使ってるんだし
175デフォルトの名無しさん:2006/03/13(月) 23:15:40
>>174
別にみんなが職業的プログラマという訳でもあるまいに。
176デフォルトの名無しさん:2006/03/13(月) 23:17:28
>>175
んなこと関係ないだろ
世の中なんでも「やる」人間と「やらない」人間の格差が開いて当然
177デフォルトの名無しさん:2006/03/13(月) 23:55:51
>>176
国語の成績の差が顕著に出てますね。
178デフォルトの名無しさん:2006/03/14(火) 00:30:45
>>176
むしろ「ヤった」人間と「ヤってない」人間の格差が…('A`)
179デフォルトの名無しさん:2006/03/14(火) 01:01:27
>>178
毒男スレに帰れ
180デフォルトの名無しさん:2006/03/14(火) 01:18:59
いくつものHtmlDocumentを管理して、
場合に応じてwebBrowserに描画するHtmlDocumentを
切り替えたいと思っています。

HtmlDocumentのインスタンスを生成する場合、
HtmlDocument hd = webBrowser.Document;
このような方法があると思うのですが、
これだと、いくつものインスタンスを生成し
そのうちひとつのインスタンスを変更すると、
切り替える作業無しにwebBrowserの描画が変わってしまいます。

HtmlDocument hd = new HtmlDocument();
は出来ませんでした。
webBrowserとは関連しないHtmlDocumentを生成する方法はあるのでしょうか。
181デフォルトの名無しさん:2006/03/14(火) 01:35:49
>>180
> HtmlDocument hd = webBrowser.Document;
インスタンスを作ってるんじゃなくて、インスタンスの参照をコピーしてるだけだ。実体は同じ。

普通に WebBrowser 複数作れ。
182デフォルトの名無しさん:2006/03/14(火) 01:53:59
>>180
単にHTMLを文字列で複数持ってりゃいいだろが
あとはDocumentTextプロパティに設定するだけ
表示中に何か変更書けたらDocumentTextから取得すればいいだけ

技術が先に来て仕様が疎かになってるよ
目的が何かを理解して無いからそういうアホな疑問が湧くんだよ
183デフォルトの名無しさん:2006/03/14(火) 01:56:52
>>181

> HtmlDocument hd = new HtmlDocument();
> は出来ませんでした。

んなコンストラクタねーよ
ヘルプくらい嫁
184デフォルトの名無しさん:2006/03/14(火) 01:59:29
相談室じゃないんだから優しくしてやろうぜw
185デフォルトの名無しさん:2006/03/14(火) 13:22:19
Visual C# 2005 Express Editionを使っています。
コードウィンドウに行番号を表示したいのですが、
ツール→オプションの中に見つかりません。

どこにあるかわかる方いますか?
186デフォルトの名無しさん:2006/03/14(火) 13:25:07
↑分かりません(><)
↓わかる方いますか?
187デフォルトの名無しさん:2006/03/14(火) 13:25:21
ダイアログ左下のチェックボックスはチェックしてる?
188デフォルトの名無しさん:2006/03/14(火) 13:27:30
>>185
Pro版には言語の設定にあるけど
189デフォルトの名無しさん:2006/03/14(火) 13:29:28
すべてを表示ダイアログをチェックしていませんでした。
ありがとうございますm(_ _)m
190デフォルトの名無しさん:2006/03/14(火) 22:42:39
プログラミングC# 第4版ってどう?
191デフォルトの名無しさん:2006/03/14(火) 22:44:58
>>182
WebBrowserの話してるみたいなんで便乗

DocumentTextで渡すとフォントが明朝っぽくなるのはどうにかならんか?
UnicodeじゃなくてShift-JISとかで渡したいんだがこの場合どうすんの?
192デフォルトの名無しさん:2006/03/14(火) 22:51:51
フォントの話なのかエンコードの話なのかわからんけど、
Encodingで変換したらいいんじゃね。
193デフォルトの名無しさん:2006/03/14(火) 23:11:31
初歩的な質問で申し訳ありませんが

int[] x;
x=new int[20];
x=new int[100];

これって問題ありますか?
newした後、deleteの代わりの何かありますか?
194デフォルトの名無しさん:2006/03/14(火) 23:11:46
>>192
stringは内部的にUnicodeで扱われるみたいなんで
string→Stream(Shift-JIS)でDocumentStreamに
渡そうと思ってるんですが的はずれですか?
IEでUnicodeのページ開くとフォントが明朝っぽくなるのがわかるとおもいます。
195デフォルトの名無しさん:2006/03/15(水) 00:05:06
>>193
ない。ほっといて良し

>>194
そりゃユーザの問題だからな。
いやならインターネットオプションでラテン語基本のところのを変えろ。
196デフォルトの名無しさん:2006/03/15(水) 00:18:00
>>195
ありがとうございます
やっぱり勝手にGCがやってるんですか?
まあ、ほっといていいってのが気分悪いですが気にしないことにします
197デフォルトの名無しさん:2006/03/15(水) 00:20:11
>>196
using dispose
198デフォルトの名無しさん:2006/03/15(水) 00:20:54
>>197
それは意味が違う
199デフォルトの名無しさん:2006/03/15(水) 01:30:21
>>49ですが
アンマネージ コード デバッグを有効にするにチェックを入れたら
終了時にfree.cでエラーが起こっていました。
また以下のようなメッセージがダイアログで出ました
app.exe の 0x7c81eb33 でハンドルされていない例外が発生しました: 0xC0020001: その文字列結合は無効です。

そもそもunknown software exceptionが出たときはどうやって原因を探ればいいんでしょうか?
200デフォルトの名無しさん:2006/03/15(水) 06:06:44
>>199
Interopとかアンマネージ コード デバッグとかいってるけどC#にその機能あったっけ?
C++/CLIのことなら別にスレがあるから探してみろ。
201デフォルトの名無しさん:2006/03/15(水) 12:03:13
>>200
Interopもアンマネージコードデバッグもあります。
どうやらWeBrowserコンポーネントが怪しい気がしてきました。
202デフォルトの名無しさん:2006/03/15(水) 12:19:15
C#って、配列の開始インデックスを変更できるようなメソッドかクラスありませんか?
たとえば、開始インデックスを-2にして、array[0]とすると、
実際にはarray[2]にアクセスできるようなやつです。
203デフォルトの名無しさん:2006/03/15(水) 12:25:03
あるけどバグの温床をわざわざ使うな
204デフォルトの名無しさん:2006/03/15(水) 12:30:49
いや、C→C#の移植やってるんですけど、
Cで配列の途中のポインタとって、そこから配列ライクに使われてるんで…
開始インデックス変更できないと、結構書き直さないといけないとです。

というわけで、教えていただけ無いでしょうか。
205デフォルトの名無しさん:2006/03/15(水) 12:31:47
それで何がしたいのかさっぱり判らないが、少なくとも C# だと対応できない。
206デフォルトの名無しさん:2006/03/15(水) 12:40:02
Cで
int buffer[1024];
int *p1 = buffer + a, *p2 = buffer + b;
for(int i = 0 ; i < c ; ++i)
  /* p1[i]とp2[i]でごにょごにょ */
みたいのがたくさんあるんで、
C#にすると、全部buffer[i + a]とかに書き直さないといけないんです。

インデックス底上げする配列ラップクラスとか作るべきでしょうか?
207デフォルトの名無しさん:2006/03/15(水) 12:54:47
p1[1024+a]とp2[1024+b]作っちゃダメ?
208デフォルトの名無しさん:2006/03/15(水) 12:55:53
すまん、配列全部コピーするはめになるなwwwwwwwwwww

orz
209デフォルトの名無しさん:2006/03/15(水) 12:57:00
>>201
COM Interop のことね。了解。
210デフォルトの名無しさん:2006/03/15(水) 12:59:43
.NET frameworkで開始インデックス変更できないようなので、
>>24 みたいなクラスでがんばろうと思います。
211デフォルトの名無しさん:2006/03/15(水) 14:02:00
>>204
> Cで配列の途中のポインタとって、そこから配列ライクに使われてるんで…
それをC#でどう実装するつもり?
全く同じにできないんだから、いっそC#らしいコードに書き換えた方がいいと思うよ
212デフォルトの名無しさん:2006/03/15(水) 14:16:38
>>206
一応できたが出来なかったことにしたほうが幸せそうだ。
int [] abc = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10 };
unsafe {
  fixed (int* x = &abc[3]) { textBox1.Text = x[0].ToString(); }
}
213デフォルトの名無しさん:2006/03/15(水) 18:49:29
stringの"1,000"の","を取り除きたいのですが、
何か良い方法はあるでしょうか。

for文で、substringして、","を探すしかないのでしょうか。
214デフォルトの名無しさん:2006/03/15(水) 18:59:39
>>213
string s = "1,000".Replace(",", "");
215デフォルトの名無しさん:2006/03/15(水) 19:05:34
そんなものがあったのですね。
m(_ _)m
216デフォルトの名無しさん:2006/03/15(水) 19:13:08
string s = (Convert.ToInt("1,000")).ToString;
ってのが真っ先に浮かんだ俺は間違いなく逝ってよし
217デフォルトの名無しさん:2006/03/15(水) 20:16:50
<html><head></head><body>aiueo</body></html>
このページをwebBrowser1で表示させている状態です。
しかし
string str = webBrowser1.DocumentText;
としてstrを表示させると、"<html></html>"と表示されます。
なぜ<head>や<body>がなくなってしまうのでしょうか。
218デフォルトの名無しさん:2006/03/15(水) 20:32:08
全く再現しない ごく普通に書いたとおりの HTML が出力される
むしろ DOM で解析される前のテキストが出てきてちょっとびっくり
219デフォルトの名無しさん:2006/03/15(水) 21:28:28
>218
検証ありがとうございます。

webBrowser1.DocumentText = "<html><head></head><body><font>aiueo</font></body></html>";
Console.Write(webBrowser1.DocumentText);

でも<html></html>となるので、
私の環境がおかしいのかもしれません。
220デフォルトの名無しさん:2006/03/15(水) 21:33:30
そりゃそうやったらそうなるだろうな。
DocumentText に代入するってのは詳しい動作はヘルプ嫁、として、非同期の処理だから。
書き込めてない内に取得してもそりゃまともには取れない。
221デフォルトの名無しさん:2006/03/15(水) 21:33:44
webBrowser1.Navigate("about:blank");
で初期化していたのですが、この部分を削除したら解決しました。
ありがとうございました。
222デフォルトの名無しさん:2006/03/15(水) 23:22:39
>>221
おい、こら。それを先に言えって!
223デフォルトの名無しさん:2006/03/16(木) 06:56:57
>>221
解決になってねーよ
>>220が書いてることちゃんと理解したか?
お前この前からずっと質問しまくってるやつだろ?
現象ベースで解決しただの何だの思い込んでないで、ちゃんと根本原因を理解しろよ
それじゃいつまで経っても質問厨だぞ
224デフォルトの名無しさん:2006/03/16(木) 18:46:02
リストボックス内での項目の移動を可能にするため、
ListBoxを継承したOrderedListBoxクラスを作成しました。
その中で「上へ移動」を行うメソッドを次のように定義しました。
public void MoveUp(int index)// index:選択項目のインデックス
{
if (index <= 0 || index >= this.Items.Count)
return;
ItemData data = (ItemData)this.Items[index];
this.Items.RemoveAt(index);
this.Items.Insert(index - 1, data);
this.SelectedIndex = index - 1;
}
ItemDataはリストボックス内の項目を表します。
これで動いているようですが、
RemoveAtを行った時点でdataが指すオブジェクトは破棄されませんか?
例えば次のようにコピーコンストラクタを呼び出して、
新規にItemData型オブジェクトを作成した方よろしいですか?
ItemData data = new ItemData((ItemData)this.Items[index]);
225デフォルトの名無しさん:2006/03/16(木) 18:52:53
dataが参照を持ってるじゃん。
破棄されるときってのは既にこっちの手から離れてどうしようもなくなってるものだから気にすんな。
226224:2006/03/16(木) 19:01:50
質問が不明瞭でした、すみません。
this.Items.Insert(index - 1, data);
でdataを使っているのでこれはまずいかなということです。
227デフォルトの名無しさん:2006/03/16(木) 19:07:29
いや、何がまずいのかが判らないんだが……。
> ItemData data = (ItemData)this.Items[index];
で[data]に[Items[index]]の参照が入る。
この時点で、[Items[index]]の寿命は
・Itemsから削除された
・dataがアクセスできなくなった
の両方を満たしたときになる。(別のところで参照されてる場合は別だが)
> this.Items.RemoveAt(index);
ここで一番目の条件は満たされたが二番目の条件は満たされていないので寿命はきていない。
> this.Items.Insert(index - 1, data);
問題なくdataは存在する。
更にItems[index-1]に参照されたことで、寿命条件の「Itemsから削除された」が復活する。
> }
ここでdataの参照が無くなるが、条件一が復活しているので寿命はまだ来ない。
228デフォルトの名無しさん:2006/03/16(木) 19:17:31
>>227
RemoveAtされた時点で[Items[index]]の寿命が尽きて
dataが無効なオブジェクトを指してしまうのではと勘違いしていました。
丁寧なご説明ありがとうございました。
229デフォルトの名無しさん:2006/03/17(金) 00:10:41
>>223
頭からしっぽまで抽象的デスね。
抽象論では何も解決はしないです。

230デフォルトの名無しさん:2006/03/17(金) 00:11:43
わはははは、頭わるそう。
231デフォルトの名無しさん:2006/03/17(金) 01:45:20
>>229
>>223の口調(文調?)から推測するに、今までWebBrowser系の質問に対し辛辣ながら優しい回答をしていた方だと思われ
232デフォルトの名無しさん:2006/03/17(金) 19:15:47
ArrayListで2次元配列のような扱いをしたいのですがやり方が分かりません。
教えてください。またその参照方法も教えてください。

エラー
ArrayList [] AL = new ArrayList[2];

AL[0}.Add("TEST1"); ←ここでエラーとなる。
233デフォルトの名無しさん:2006/03/17(金) 19:20:41
ListViewの文字を右寄せするにはどのプロパティいじればいいですか?
探しても、無いようなんですが
234デフォルトの名無しさん:2006/03/17(金) 19:28:00
>>232
AL[0] は Object 型。このままではどんなものか分からない。
どんな型なのか分かるようにプログラム側で指示してやらないと。
あと、配列を作っただけではその各要素までは初期化されない。一つずつ new してやらないと。

>>233
サブアイテムの一番左以外は、ColumnHeader の TextAlign で列単位で可能。
それ以外は .NET 2.0 ならオーナードローすることになるな。それ以前なら諦めろ。
235デフォルトの名無しさん:2006/03/17(金) 19:37:37
>>232
ArrayList[] AL = { new ArrayList(), new ArrayList() };

>>234
AL[0]はArrayListでしょ。
236232:2006/03/17(金) 19:43:27
>>234-235
できました。
ありがとう御座いました。
237デフォルトの名無しさん:2006/03/17(金) 22:59:46
>>234
AL[0]はArrayListでしょ。
238デフォルトの名無しさん:2006/03/18(土) 11:41:32
>>234
AL[0]はArrayListでしょ。
239デフォルトの名無しさん:2006/03/18(土) 11:58:46
break;
240http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 19:05:22
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
241デフォルトの名無しさん:2006/03/18(土) 19:29:50
誤爆した(;´Д`)

だけど謝らないからね

242デフォルトの名無しさん:2006/03/19(日) 12:40:01
フォーム上にListBoxとTextBoxがあるとします。
ListBoxには"アイテム1","アイテム2","アイテム3"が登録されているとします。
ここでTextBoxに文字列を入力したら、
それと連動してListBox内の選択項目の表示を変えるにはどうすればよいですか。
例えば"項"と入れたら項目の表示が"項"へ、
"項目"まで入れたら"項目"へという具合です。
243デフォルトの名無しさん:2006/03/19(日) 12:49:46
表示を変えるってどういうこと?
ListBox に入ってる文字列を変更するってこと?
SelectedItem 書き換えれば良さそうだけど。
244デフォルトの名無しさん:2006/03/19(日) 12:51:09
リストボックス内の項目をインクリメンタルサーチしたいてことじゃね?
245デフォルトの名無しさん:2006/03/19(日) 13:04:48
>>243
文字列を変更するということです。

>SelectedItem 書き換えれば良さそうだけど。
これでリアルタイムで反映されますか?

>>244
いえ、そんなに高度なものじゃないです。
246デフォルトの名無しさん:2006/03/19(日) 13:08:34
まずはやってみろ。話はそれからだ。
247デフォルトの名無しさん:2006/03/19(日) 13:20:29
これでは動かなかったのですが。
private void textBox1_TextChanged(object sender, System.EventArgs e)
{
listBox1.SelectedItem = textBox1.Text;
}
248デフォルトの名無しさん:2006/03/19(日) 13:39:22
FindString使え
249デフォルトの名無しさん:2006/03/19(日) 13:46:15
>>248
項目を検索するわけではないです。
リストボックス内の選択されている項目の表示を
テキストボックスに入力中の文字列と同期させたいのです。
250デフォルトの名無しさん:2006/03/19(日) 13:50:01
251デフォルトの名無しさん:2006/03/19(日) 13:52:06
あんまりメゾット(なぜかこう入力された)とかようわからんけど

foreach(SelectedItem item in listBox.1) {
if(item.Text == textBox1.Text)
選択する
}

みたいなかんじでいいんじゃね?
252デフォルトの名無しさん:2006/03/19(日) 14:03:20
>>250
おー、まさにこれです。本当に有り難うございました。

>>251
こちらも試してみようと思います。
253デフォルトの名無しさん:2006/03/19(日) 14:04:01
>>251
もうちょっと流れを読んだりしっかり要求項目を把握したりするようにしような
254デフォルトの名無しさん:2006/03/19(日) 14:09:41
>>253
クレームは>>244



いや、私がばかでした、はい
255デフォルトの名無しさん:2006/03/19(日) 19:04:21
>>242
ていうか普通にComboBox使ったらだめなのか?
256デフォルトの名無しさん:2006/03/20(月) 15:21:50
ArrayListは配列みたいに添字で(hogeList[0]で)アクセスできないのでしょうか?
257デフォルトの名無しさん:2006/03/20(月) 15:23:52
できるよ?
258デフォルトの名無しさん:2006/03/20(月) 17:03:28
キャストしたか?
259256:2006/03/20(月) 17:32:53
>>257
具体的なコード教えて下さい
260デフォルトの名無しさん:2006/03/20(月) 17:40:34
>>259
おまいが先にコードかかんとなんともいえないと思うんだが
261256:2006/03/20(月) 18:01:25
>>260
foreach(string s in hogeList)

for(int i = 0; i < hogeList.length; i++)
  string s = hogeList[0];

な感じにしたいです。
262デフォルトの名無しさん:2006/03/20(月) 18:10:29
hogeList[i] で返ってくるのは Object 型。
キャストしてやんなさい。
263256:2006/03/20(月) 18:29:38
>>262
ありがとうございます。出来ました。

for(int i = 0; i < hogeList.Count; i++)
  string s = (string)hogeList[i];
264デフォルトの名無しさん:2006/03/20(月) 18:29:38
今ファイル検索プログラムを組んでいるのですが、検索最中にアクセス権限がないフォルダ
などに当たるとUnauthorizedAccessExceptionというエラーを吐いて止まってしまいます。
そこで、こいつにアクセス権限を与えたいのですが、どのようにしたらいいでしょうか?
265デフォルトの名無しさん:2006/03/20(月) 18:53:01
素直にUnauthorizedAccessExceptionが投げられたときはそのフォルダを検査不能であると返しておけ。
266デフォルトの名無しさん:2006/03/20(月) 18:53:06
プロジェクトを新規作成する際に、テンプレートを
「Windowsアプリケーション」にしたのですが、
デバッグのためのコンソールを表示したくなりました。
どのようにしたらコンソールを表示出来るのでしょうか。
初歩的な質問ですみません。
267264:2006/03/20(月) 18:59:28
>>265
やはりその方がいいのですか・・・
有り難う御座いました。
268デフォルトの名無しさん:2006/03/20(月) 19:00:22
先週からC#をはじめ、現在「Visual C# .NET 逆引き大全500」を見ながら勉強しています。
読み終わりそうなので、次に買う本を探しています。
基本的なクラス一覧やたくさんのサンプルがのっているリファレンスで
おすすめなものがあれば参考にさせて欲しいです。
269デフォルトの名無しさん:2006/03/20(月) 19:05:49
>>266 プロジェクトのプロパティ>出力の種類
270デフォルトの名無しさん:2006/03/20(月) 19:10:35
>>268
なにやりたいかわからんけど、Windows用ソフト作るなら
「C#によるプログラミングWindows」(いわゆるC#版ペゾルド本)とかどうよ
http://www.amazon.co.jp/exec/obidos/ASIN/4891002921/503-2803339-4076710

とりあえず↓にWin版Hello,Worldの作り方の説明あるんで自分に合いそうかどうか確認してくれ
http://www.microsoft.com/japan/msdn/net/books/ProgWinCsharp/chapter2.asp
271デフォルトの名無しさん:2006/03/20(月) 19:19:05
>>266
デバッグのためならコンソール使うよりも System.Diagnostics.Debug の WriteLine 使った方が良いかも。
272デフォルトの名無しさん:2006/03/20(月) 19:35:27
>>268
実践プログラミング 入門編
273デフォルトの名無しさん:2006/03/20(月) 20:29:08
>270,272
ありがとうございます、参考にさせていただきます。
274デフォルトの名無しさん:2006/03/20(月) 21:09:33
コントロールのハンドルを取得したいのですが、どのようにすれば良いでしょう??
275デフォルトの名無しさん:2006/03/20(月) 21:12:14
コントロールによる。
自分のプロセス内の、Control から派生してるコントロールなら Handle プロパティ。
276デフォルトの名無しさん:2006/03/20(月) 21:41:36
>>275
レスどうもありがとうございます。

MSDNライブラリには
「コントロールのバインド先のウィンドウ ハンドルを取得します。」とあったのですが、
これでコントロールのハンドルを取得できるでしょうか??

コントロールにIMessageFilterを実装させてメッセージのフックには成功したんですが、
そのコントロールだけじゃなくフォーム内全てが対象になってしまっているので
ハンドルを取得して操作対象を絞りたいなと思いまして・・・
277デフォルトの名無しさん:2006/03/20(月) 21:44:53
IMessageFilter での処理なら、ハンドルを取得するんじゃなくて逆に Control を取得した方が良いだろう。
Control.FromHandle 静的メソッドがある。nullチェックも忘れずにな。
278デフォルトの名無しさん:2006/03/21(火) 01:06:53
どうもありがとうございます。
Controlの取得に成功しました(^^


ですが、
PreFilterMessage( ref Message m )
の引数のm.HWndに格納されているハンドルのコントロールが存在していないらしく、nullが返ってきました。
TextBox等だと成功するんですが、WebBrowserコントロール上でクリックした時などに送られてくるm.HWndの正体が分かりません・・・。
どうにかWebBrowser宛てのメッセージだけを処理したいのですが。。。
何度も何度も申し訳ないです(汗)
279デフォルトの名無しさん:2006/03/21(火) 02:27:47
そう言うことは早く言え。

HtmlDocument のマウスイベントじゃ駄目な理由を述べろ。
280デフォルトの名無しさん:2006/03/21(火) 18:41:36
string str = @"test";

サンプルコードにこのようなコードがありました。
@"で検索したのですが、一致しませんでした。
わかる方がいましたら、教えてください。
281デフォルトの名無しさん:2006/03/21(火) 18:45:03
>>280
エスケープ無視だった気がする
\nとかそのまま表示だったかなー
282デフォルトの名無しさん:2006/03/21(火) 18:58:00
\を普通に文字として読む。改行も普通\r\nと書くのと同義になる。
C# の言語仕様とか調べると良いよ。
283デフォルトの名無しさん:2006/03/21(火) 19:29:56
>>280
具体的には
string str = "c:\\windows\\hoge.txt";
なんて書かなくて
string str = @"c:\windows\hoge.txt";
で済む。それから
string str =@"
select
  CustomerID
from
  Customers ";
なんて書けたりする。
284デフォルトの名無しさん:2006/03/21(火) 19:59:26
いわゆるヒアドキュメントもどきだ。
285デフォルトの名無しさん:2006/03/21(火) 21:07:37
ありがとうございます!
286デフォルトの名無しさん:2006/03/21(火) 23:09:17
あるプログラムの上から特定のプログラムを強制終了させたいのですが、
とのようにしたらいいのでしょうか?
kill等を使うのはわかったのですが、どうやっても例外が発生して
強制終了させることが出来ません。

よろしくお願いします。
287デフォルトの名無しさん:2006/03/21(火) 23:16:43
例外が発生するならそれを書け。
そもそもkill等を使うとか曖昧なこと書かずに実際に試した手順を省略せずに書け。
288デフォルトの名無しさん:2006/03/21(火) 23:36:58
すいません。
プログラムは以下のようなものです。

string exe_name = "プログラムの名前";
if (Process.GetProcessesByName(exe_name).Length >= 1)
{
Process p = Process.Start(exe_name);
p.Kill();
}

そして、発生した例外はWin32Exceptionでした。
このことに関しては全くわからないのでIntellisenseで出てきた物を手探りで
いろいろ試してるところです。
他にも、終了させる側のプログラムを二重起動禁止にしてもしてみましたが
意味はありませんでした。
289デフォルトの名無しさん:2006/03/21(火) 23:44:24
インテリセンスじゃなくてヘルプ(ドキュメント)を使おうな。手探りなら。

> string exe_name = "プログラムの名前";
> if (Process.GetProcessesByName(exe_name).Length >= 1)
> {
>     Process p = Process.Start(exe_name);
>     p.Kill();
> }

Process.Start ってのはヘルプを見たら分かるとおり、「プロセスを開始する」メソッドだ。
終了させたいのにそれどころか起動させてどうする。
終了させたいプロセスはすでに GetProcessesByName で取得できているだろう? それを使うんだ。
290デフォルトの名無しさん:2006/03/21(火) 23:59:47
>>289
こういうことでしょうか?

if (Process.GetProcessesByName(exe_name).Length >= 1)
{
Process p = new Process.GetProcessesByName(exe_name);
p.Kill();
}

取得したのをどうしたらいいんだ・・・orz
291デフォルトの名無しさん:2006/03/22(水) 00:04:49
いやいや、new する必要はないだろ?
・Process.GetProcessesByName でその名前のプロセスの Process 配列が手に入る
・この Process 配列は今起動しているプロセスの一覧である
・つまりその各要素であるそれぞれの Process はそれぞれ起動中のプロセスである

で、起動中のプロセスに対してどう操作する?
292デフォルトの名無しさん:2006/03/22(水) 00:41:16
>>291
いろいろ考えてもこんなのしか出てきませんでした・・・

if (Process.GetProcessesByName(exe_name).Length >= 1)
{
int pNo = Process.GetProcessesByName(exe_name).Length;
Process p = Process.GetProcessById(pNo);
p.Kill();
}

でもこれじゃ要素の数だから全く違うんだよな・・・
293デフォルトの名無しさん:2006/03/22(水) 00:46:01
配列の意味は分かってる?
string[] names = new string[]{"a", "b", "c"};
"a"が欲しいときはどう書くか分かる?
294デフォルトの名無しさん:2006/03/22(水) 01:01:26
>>293
string a = names[0]

・・・ですよね?
配列滅多に使わないからうろ覚え・・・
295デフォルトの名無しさん:2006/03/22(水) 01:03:32
配列を滅多に使わないってのも凄いな。

で、今回のことに応用したらどうなる?
配列の全ての要素にアクセスするにはどんな手段が考えられる?
296デフォルトの名無しさん:2006/03/22(水) 01:22:01
>>295
まだ駆け出しの駆け出しなので練習用プログラムしか組んだことないです。

上の例で行くと
foreach(string a in string names)
{
/*何らかの処理*/
}
ですよね?

今頃ですが、もしかしたらProcess配列からどうやって配列を取り出すのかが
わかってないかもしれません・・・
297デフォルトの名無しさん:2006/03/22(水) 01:25:50
> foreach(string a in string names)
二番目の string はミススペリングかな。

配列から配列を取り出してどうする。
配列からは各要素を取り出すんだ。
string 配列である names をぶんまわして取れるのは string であって string 配列じゃないだろ?

Process.GetProcessesByName で Process 配列が手に入る。
さて、これをぶんまわせば何が取れる?
298デフォルトの名無しさん:2006/03/22(水) 01:29:26
>>297
できました・・・

if (Process.GetProcessesByName(exe_name).Length >= 1)
{
foreach (Process p in Process.GetProcessesByName(exe_name))
{
p.Kill();
}
}

これで合ってる・・・かな?
299デフォルトの名無しさん:2006/03/22(水) 01:34:27
うん、基本的に正解。
じゃ次。

string names = new string[0]{};
foreach (string str in names) {
    /*  */
}
これはどういう意味で、実行結果はどうなる?

string names = null;
foreach (string str in names) {
    /*  */
}
これは?
300デフォルトの名無しさん:2006/03/22(水) 01:37:30
あー、例題が間違えとるw
string[] names = new string[0]{};

string[] names = null;
な。
301デフォルトの名無しさん:2006/03/22(水) 01:41:35
>>299
上の方は配列の配列・・・?
実行結果はstring[0]が返ってくるのでしょうか

下の方は返ってくるのはnullでしょうか?
302デフォルトの名無しさん:2006/03/22(水) 01:47:58
names の型は宣言通りの型だ。(間違えて書いたわけでアレだが)
どっちも string[] として宣言してる。
string[0]{} ってのは、string[0] とも string[]{} とも書ける。要素数 0 、空の配列ってことだな。
さて、それぞれの names に何が入ってるのかは分かったね?
じゃあそれに対して foreach を使うとどうなるか? ってのが趣旨。
303デフォルトの名無しさん:2006/03/22(水) 01:48:07
訂正
>実行結果はstring[0] →names[0]
304デフォルトの名無しさん:2006/03/22(水) 01:57:07
>>302
何も返ってこないまたはnullが返ってくる
でしょうか?
305デフォルトの名無しさん:2006/03/22(水) 02:03:50
まあ取りあえずやってみ。
ループ中はConsole(かDebugか).WriteLineで文字列を出力するとかブレークポイント置くとかして流れがきちんと把握できるようにな。
306デフォルトの名無しさん:2006/03/22(水) 02:18:02
>>305の優しさにほれそう
307デフォルトの名無しさん:2006/03/22(水) 02:18:27
>>305
試したところ、
string[] names = new string[0]{};の方ではmanesに{次元:[0]}が
返ってきてました。
string[] names = null;の方は、foreachのinで例外NullReferenceExceptionが発生しました。
308デフォルトの名無しさん:2006/03/22(水) 02:21:40
うむ。
さて元のコードに立ち返ろう。
君が書いたコードではまず GetProcessesByName で取得した配列の長さで条件判断しているが、これは何故かな?
309デフォルトの名無しさん:2006/03/22(水) 02:26:37
>>308
指定したプロセスがあれば1以上、無かったら0が返ってくるので
>= 1で比較することが出来るため

です

あんまり自信がないな・・・
310デフォルトの名無しさん:2006/03/22(水) 02:30:28
じゃあ何故そこで比較して 1 以上の時だけ foreach を回すようにしようと思ったのかな?
311デフォルトの名無しさん:2006/03/22(水) 02:34:07
>>310
指定したプログラムを強制的に終了させるためです。
312デフォルトの名無しさん:2006/03/22(水) 02:39:23
そうじゃないそうじゃない。
……うーん、いつまでたっても隙間が埋まらない気がしてきた。
何故 0 のときは foreach をスキップしたんだ? ってことなんだけど。
さっきの実験で foreach に対して要素数 0 の配列を渡しても別に問題はなかったよね?
だからわざわざ長さで条件判断する必要はない、と結論付けたかったんだが。

まあいいや、じゃ最後。
> 無かったら0が返ってくるので
これは保証があるの?
ひょっとして null が返ってきたりしない?
もし null が返ってくるのなら foreach に渡すのも Length プロパティを取得するのも失敗するけど?
313デフォルトの名無しさん:2006/03/22(水) 02:47:03
>>312
近年まれに見るやさしい奴だな。
314デフォルトの名無しさん:2006/03/22(水) 02:48:26
>>312
あ、そうか。
わざわざ比較してからforeachを通す必要は無かったのか・・・

最後については、
Process.GetProcessesByName().Lengthの解説では、
System.Arreyのすべての次元内の要素の総数を表す32ビット整数を取得するので
大丈夫だとおもいます。
315デフォルトの名無しさん:2006/03/22(水) 02:51:53
>>314
> Process.GetProcessesByName().Lengthの解説では、
> System.Arreyのすべての次元内の要素の総数を表す32ビット整数を取得するので

うん、Process.GetProcessesByName() が配列のインスタンスを返したらそうだろうね。
じゃあ、Process.GetProcessesByName() が配列を返す(null を返さない)って保証は?
316デフォルトの名無しさん:2006/03/22(水) 02:55:45
>>315

・・・ないです
317デフォルトの名無しさん:2006/03/22(水) 02:58:20
保証がないのなら確実に null かどうか判断しないと、Length を調べる時点で例外が出ちゃうぞ。

さて、本当に保証がないんだろうか?
そこでヘルプの出番だ。
Process.GetProcessesByName を調べてみ?
318デフォルトの名無しさん:2006/03/22(水) 03:05:16
>現在ローカル コンピュータ上で実行されていない実行可能ファイルも指定できるため、
>メソッドが返す配列は空のこともあります

つまりこれは保証されているってことですすよね?
319デフォルトの名無しさん:2006/03/22(水) 03:14:54
そう。空の配列はつまり要素数0の配列。
実行されてるのが無いときは空の配列が返るってことだね。
つまり null かどうか確認する必要も無し。直接 foreach にたたき込んじまえ。

以上で今回の講義は終了。

補講:
if (Process.GetProcessesByName(exe_name).Length >= 1)
{
    foreach (Process p in Process.GetProcessesByName(exe_name))
みたいに GetProcessesByName で確保した配列を何回か使う場合、
一旦
Process[] processes = Process.GetProcessesByName(exe_name);
とやってから
if (processes.Length >= 1)
{
    foreach (Process p in processes)
としたほうが良いぞ。
Process.GetProcessesByName は結構重い処理だからな。
320デフォルトの名無しさん:2006/03/22(水) 03:18:18
>>319
有り難う御座いました。
質問の回答どころか、それ以上の事を教えてもらえて、
かけることが出来るお礼の言葉が見つかりません。。
これからはより一層力を入れて勉強したいと思います。
本当に有り難う御座いました。
321デフォルトの名無しさん:2006/03/22(水) 10:17:10
>>319

やらないか?
322デフォルトの名無しさん:2006/03/22(水) 11:28:50
>>321
ゲイ?
323デフォルトの名無しさん:2006/03/22(水) 13:32:37
感動した
324デフォルトの名無しさん:2006/03/22(水) 15:55:48
ToolTipを勝手に消えないように(マウスを動かしても消えないように)
したいんですが、どうすればいいんでしょうか?
325デフォルトの名無しさん:2006/03/22(水) 16:34:58
>>324
ToolTip.Showを使えばいいような気がしないでもないです。2.0限定らしいですけど。
326デフォルトの名無しさん:2006/03/22(水) 17:39:55
>>325
うーん・・・使ってみたんですけど消えちゃいます
327デフォルトの名無しさん:2006/03/23(木) 02:13:51
枠のないウィンドウを作ってツールチップに見立てれば?
328デフォルトの名無しさん:2006/03/23(木) 11:35:38
Hide()をオーバーライドしてみるとか
329デフォルトの名無しさん:2006/03/23(木) 11:42:48
↑無理ですすみません
330デフォルトの名無しさん:2006/03/23(木) 13:24:35
ToolTip.Show()だとモーダルになるはずだけど?
331デフォルトの名無しさん:2006/03/24(金) 00:24:57
C#と関係なくて申し訳ないんだけど、
「〜の数」とかを格納する変数の名前ってどんなのつけてる??
numberOfPageとか
アンダースコアとか"Of"は個人的にはあんまり使いたくないけど・・・
Ofはなんか見にくい感じがする
332デフォルトの名無しさん:2006/03/24(金) 00:27:12
hogeCount とか。
333デフォルトの名無しさん:2006/03/24(金) 00:33:35
あ〜、そういえばxxCountとかは結構見かけるかもね
どうもありがと(^-^
334デフォルトの名無しさん:2006/03/24(金) 02:51:50
hoge.Countと見分けづらい
335デフォルトの名無しさん:2006/03/24(金) 06:44:27
hogeCnt
336デフォルトの名無しさん:2006/03/24(金) 07:53:22
IDEが普及している昨今に省略単語やらハンガリアンやらを使うなって
どこかのだれかが言ってた。
気がする。
337デフォルトの名無しさん:2006/03/24(金) 07:55:43
最近は変数名が英文になってる人が増えた
せめて数語の単語程度にしようぜ
338デフォルトの名無しさん:2006/03/24(金) 08:47:05
コーディング規約 第2条
http://pc8.2ch.net/test/read.cgi/tech/1068752664/

こっち向きの話題かな。
339デフォルトの名無しさん:2006/03/24(金) 08:57:38
JavaあたりからなんちゃらOfなんちゃらとか増えたような。
浅学ゆえ、それ以前にもあったかどうかは知らんが。

とはいえCやらUNIXコマンドやらの如き省略っぷりも初見では見切れんしな
strpbrkとかxmkmfとか
340デフォルトの名無しさん:2006/03/24(金) 15:53:46
プロパテーと見分けが付くようにと HogeCNTってのを強制したコーディング規約を見たことある
HogeLENGTHとかHogeINDEXとか後に付くのは全部大文字
固定ピッチのフォントで Hoge.Count と HogeCount が見分け辛いってあるか?
341デフォルトの名無しさん:2006/03/24(金) 16:17:23
クラス名や名前空間名との区別のためじゃないの?
342デフォルトの名無しさん:2006/03/24(金) 17:27:55
>>341
んなもん色分けされて一発で分かるやん
343デフォルトの名無しさん:2006/03/24(金) 18:39:13
>IDEが普及している昨今に省略単語やらハンガリアンやらを使うなって
>どこかのだれかが言ってた。
>気がする。

ひらがなてどうよ?
344デフォルトの名無しさん:2006/03/24(金) 20:30:47
そう言えばひらがなカタカナつかえるっぽいな
345デフォルトの名無しさん:2006/03/24(金) 20:32:33
変数名とかに普通に日本語使えますよ
346デフォルトの名無しさん:2006/03/24(金) 20:44:02
まじ?知らんかった・・・
347デフォルトの名無しさん:2006/03/24(金) 21:02:15
2005とか普通に自動生成してくるやん
348デフォルトの名無しさん:2006/03/24(金) 21:03:18
今時変数名に英数字以外使えない言語ってあるの?
349デフォルトの名無しさん:2006/03/24(金) 21:09:19
class ぬるぽウィンドウ : Form
350デフォルトの名無しさん:2006/03/24(金) 21:29:26
>>347
つか、プロジェクト名もクラス名も当然のごとく全部英数字でやってたんで、
自動生成でも日本語出ないし。
351デフォルトの名無しさん:2006/03/24(金) 22:39:24
質問です。適切で無い場合は、恐れ入りますが誘導お願います。

オブジェクトのコピーってどうやるんでしょうか?
あるオブジェクトを暫定的に処理して、その結果をコピー元のオブジェクトへ反映したいのですが、
どうもうまく行きません。

例:
class Original {
public string str = "abc";
}

class Temp{
private Original ori;
public Temp( Original ori ) {
this.ori = ori; //これだと参照ですよね?
this.ori = new Original(); //これだといちいちメンバの値を直さないといけないし
}
352デフォルトの名無しさん:2006/03/24(金) 22:47:56
自前で実装する。その例だと Original クラスがメソッドを持つ必要があるな。
普通は ICloneable を実装させるがまあ別に必須ではない。
Object が protected メソッドとして全てのフィールドをシャローコピーする MemberwiseClone を持っているから、
特に考える必要がないのなら実装するメソッドはこれを呼び出すだけで良い。
353デフォルトの名無しさん:2006/03/24(金) 22:59:08
>>352
ありがとうございます。稚拙な質問にも返答いただき感謝しております。

さっそくICloneableメンバのClone()を実装し、MemberwiseClone()にて
オブジェクトを返したところすべて上手くいきました!!

適切かつ迅速に回答頂き、心より感謝申し上げます。
ありがとうございました。
354デフォルトの名無しさん:2006/03/24(金) 23:05:13
一つ注意。
MemberwiseClone はシャローコピー、つまり浅いコピー。
つまりフィールドに参照型を持っている場合、それは参照しかコピーされない。
355デフォルトの名無しさん:2006/03/24(金) 23:16:27
アドバイスありがとうございます。
テストして確認し、実感いたしました。きっとミスしていたと思います。
ご忠告ありがとうございました。
356デフォルトの名無しさん:2006/03/24(金) 23:21:21
Formを表示させないようにするにはどのようにするのでしょうか。
FormのプロパティにVisibleが無いので困っています。
Opacityやサイズの変更ではない方法というのは無いんでしょうか。
357デフォルトの名無しさん:2006/03/24(金) 23:23:35
いや、Visible あるよ? 基底クラスである Control のプロパティなんだし。
インテリセンスやプロパティグリッドには出てないかも知れないけど。
あと Hide メソッドがある。
358デフォルトの名無しさん:2006/03/24(金) 23:35:15
プロパティグリッドに出ていないので無いのかと勘違いしていました。
ありがとうございます、調べてみます
359デフォルトの名無しさん:2006/03/24(金) 23:43:46
Formを非表示にすると、CPUやメモリの負担を多少なりと減らすことが出来ると思いますか?
今試していますが、なんとなく表示時より安定しています。
360デフォルトの名無しさん:2006/03/25(土) 00:21:18
dataGridView1.Rows[0].Height = 15;
WriteLine(dataGridView1.Rows[0].Height);

行の高さを15に設定したはずが、WriteLineでは20と表示されます。
Rows[0].MinimumHeightは3なのですが、何がいけないんでしょう。
わかる方いらっしゃいますか?
361デフォルトの名無しさん:2006/03/25(土) 15:02:41
>>343
2005に関連する話題ということで少し続けさせてもらうと。
例えばToolStripMenuItemをデザインモードで入力したときに
Nameが「ファイルFToolStripMenuItem」とかなるのは勘弁してほしい…
せめて「toolStripMenuItem1」くらいにしておいて欲しかったなあ。
362デフォルトの名無しさん:2006/03/25(土) 23:50:14
>>361
激しく同意
363デフォルトの名無しさん:2006/03/26(日) 00:53:58
「コントロールのクラス名をサフィックスにする」のと
「メリケンではアクセスキーを"&File"式で付ける」のとが
合わさってこういう仕様になったのを、そのまま日本語化したので
こんなことになってしまったんだろう。こまったもんだ。

それでまた話がそれるけどコントロールのクラス名をサフィックスに
付けてますかおまいらは?
おいらは「toolStripMenuItemファイル」「textBoxファイル名」みたいに
クラス名+キャプションてのがお気に入りなんですが。
364デフォルトの名無しさん:2006/03/26(日) 02:16:18
>>361
β1で触ってえ゛っーで、正式版では当然直るだろうと思ってたのに。
365デフォルトの名無しさん:2006/03/26(日) 04:44:07
>>363
かなり変則的だな。むしろ変態的かもしれん。
たとえば、

fileToolStripMenuItem

で、このメニューの下に「開く」メニューがあると

fileToolStripMenuItemOpen

みたいな。
366デフォルトの名無しさん:2006/03/26(日) 12:33:34
tsmiFile
tsmiFileOpen
みたいなかんじ。
インテリセンスで同じ種類のが並ぶから便利
367デフォルトの名無しさん:2006/03/26(日) 13:30:50
368デフォルトの名無しさん:2006/03/26(日) 14:48:34
>>366はハンガリアン記法ではなくて先頭が頭字語なだけでは?と釣られてみる。
369デフォルトの名無しさん:2006/03/26(日) 15:32:58
>>366からは外れるが
Pascal式は単語の先頭だけ大文字にするっていう一貫性のあるルールだからいい。
ハンガリー記法も、接頭語とそれ以外の単語で意味が違うから問題ない。
だけど先頭単語とその単語に意味の違いがあるわけでもないのに
先頭の単語はすべて小文字にするcamel式は気持ち悪くてしょうがない。
ハンガリー記法の法が数倍マシ。
370デフォルトの名無しさん:2006/03/26(日) 23:25:12
>>369
俺は何ともないけど気持ちはわかるな。でも
英語とかは1文中の各単語は単語で代わりはないけど、先頭の単語だけ
先頭大文字で書くじゃん。それの逆だとか考えたら気持ち悪さ減少しないか?
371デフォルトの名無しさん:2006/03/27(月) 13:30:23
>>370
英語は先頭大文字の文化が確立している
ところがCamel法だけはそれを無視してる
だから気持ち悪いんだろ

Camel法は、日本語で言えば平仮名と片仮名が逆転したような気持ち悪さがある

コノこんぴゅーたノCPUハ何ぎがへるつデスカ

あ、書いてみたらちょっと気持ち悪さが取れたかもw
372デフォルトの名無しさん:2006/03/27(月) 14:39:39
初歩的な質問ですみません。
foreachの中で現在の要素が何番目の要素かどうかというのは、
自前でcount++;などしていく方法しかないのでしょうか。
373デフォルトの名無しさん:2006/03/27(月) 14:44:56
そう。
374デフォルトの名無しさん:2006/03/27(月) 14:51:19
ありがとうございました。
375デフォルトの名無しさん:2006/03/27(月) 21:37:30
逆にforとインデクサっつー手もある。
376デフォルトの名無しさん:2006/03/28(火) 10:37:48
新しいFormインスタンスを作った場合、そのFormはもともとのFormとは別スレッドなのでしょうか?
377デフォルトの名無しさん:2006/03/28(火) 10:56:30
別スレッドで作るようにコーディングしない限り同じスレッドだ。
378デフォルトの名無しさん:2006/03/28(火) 11:00:35
WebBrowserでページをダウンロード・描画している間やListBoxに大量のデータを格納しようとする場合に
マウスが砂時計になるのを防ぎたいんですが
this.Cursor = Cursors.Arrow;
↑これではだめでした。なにがいけないですか?
379デフォルトの名無しさん:2006/03/28(火) 11:06:57
コンポーネントやシステムの内部でやってることに口を出そうとしたこと……かな
380デフォルトの名無しさん:2006/03/28(火) 11:34:53
いえてる。
381デフォルトの名無しさん:2006/03/28(火) 18:04:21
Close()がないのに(Dispose()なのに)Close()のつもりでcl[enter]とタイプして、
Clone()で確定していたことに
ずーっと気付かなかった・・・て経験ないですか?
382デフォルトの名無しさん:2006/03/29(水) 04:42:11
DataGridViewとSQLを接続している方に伺いたいことがあります。
SQLにはstring型以外のデータをセットできますか?
383デフォルトの名無しさん:2006/03/29(水) 21:56:43
timeGetTime関数が使いたかったので試しにクラスを作ってみたんですが
何か問題があれば指摘してください。

public sealed class CMMTimer : IDisposable
{
private static readonly CMMTimer mmtimer = new CMMTimer();
private static int flagDisposed = 0;

public static CMMTimer Instance
{
get
{
flagDisposed++;
return mmtimer;
}
}
384デフォルトの名無しさん:2006/03/29(水) 21:57:48

private CMMTimer()
{
timeBeginPeriod(1);
}
~CMMTimer()
{
Dispose();
}
public void Dispose()
{
if (--flagDisposed == 0)
{
timeEndPeriod(1);
GC.SuppressFinalize(this);
}
}
385デフォルトの名無しさん:2006/03/29(水) 21:58:32

public int Time
{
get
{
return timeGetTime();
}
}

[DllImport("winmm.dll")]
private static extern int timeGetTime();
[DllImport("winmm.dll")]
private static extern uint timeBeginPeriod(uint uPeriod);
[DllImport("winmm.dll")]
private static extern uint timeEndPeriod(uint uPeriod);
}
386デフォルトの名無しさん:2006/03/29(水) 22:12:01
何か問題があればてw
何のためにコンパイラがあるんだ。


デストラクタてw
387383:2006/03/29(水) 22:17:38
>>386

> デストラクタてw

初めてDisposeを使ったので、使い方があってるか分かりませんが
とりあえずDisposeのサンプルにもデストラクタがあったので、、、まずいですか?
388383:2006/03/29(水) 22:18:46
その場合、timeEndPeriodはどこで呼べばよいでしょう?
389デフォルトの名無しさん:2006/03/29(水) 22:25:29
というかだな、わざわざシングルトンにするな。
・コンストラクタで timeBeginPeriod を呼ぶ
・public void Dispose() は private void Dispose(true) を呼び出してから SuppressFinalize
・ファイナライザは private void Dispose(false) を呼び出す
・private void Dispose(bool) はまだ呼ばれていない場合に timeEndPeriod を呼び出す
390383:2006/03/29(水) 22:29:31
timeBeginPeriod(1)が何回も呼ばれるとまずいと思ったのでシングルトンにしたんですけど
ひょっとして問題ないですか?
それだけでだいぶ楽になります。

>・public void Dispose() は private void Dispose(true) を呼び出してから SuppressFinalize
>・ファイナライザは private void Dispose(false) を呼び出す
>・private void Dispose(bool) はまだ呼ばれていない場合に timeEndPeriod を呼び出す

さっそくやってみます
391デフォルトの名無しさん:2006/03/29(水) 22:32:48
392383:2006/03/29(水) 23:55:59
こんな感じになりましたがDisposeがやっぱり変ですか?

public sealed class CMMTimer : IDisposable
{
private bool flagDisposed = false;

public CMMTimer() { timeBeginPeriod(1); }
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool flag)
{
if (!flagDisposed)
{
if (flag) { }
timeEndPeriod(1);
flagDisposed = true;
}
}
~CMMTimer() { Dispose(false); }

public int Time { get { return timeGetTime(); } }

[DllImport("winmm.dll")]
private static extern int timeGetTime();
[DllImport("winmm.dll")]
private static extern uint timeBeginPeriod(uint uPeriod);
[DllImport("winmm.dll")]
private static extern uint timeEndPeriod(uint uPeriod);
}
393デフォルトの名無しさん:2006/03/30(木) 02:06:55
いやtimeEndPeriodを複数回呼ぶことになったらまずいんでないの?
※詳しくないからMSDN読み違えかも知れんけど。
394デフォルトの名無しさん:2006/03/30(木) 02:23:35
>>393
どういう意味で言ってるのか分からんが、timeEndPeriod は timeBeginPeriod と同じ回数呼ばねばならない。
取りあえず 392 のコードで問題なさそうだが。
395383:2006/03/30(木) 23:02:23
今日はtimeSetEventを使ってみようと思ったのですがさっぱり分かりませんでした。。
どなたかヒントをお願いします。
396デフォルトの名無しさん:2006/03/30(木) 23:06:50
丸投げはよせ。
まずどこまでコード書いてどこまで理解したか書くんだ。
397383:2006/03/30(木) 23:12:47
コードを書く前で詰まってます

                      ここをどーすればいいのか分からないです↓
private static extern uint timeSetEvent(uint uDelay, uint uResolution, LPTIMECALLBACK fptc, int dwUser, uint fuEvent);
398デフォルトの名無しさん:2006/03/30(木) 23:17:28
コールバックなら、基本的にコールバック関数と同じ返値&引数を持ったデリゲートを宣言して、それを使えばいい。
例えばコールバック関数が
DWORD HOGECALLBACK(DWORD value);
なら
public delegate int HogeCallback(int value);
で引数に HogeCallback

デリゲートが分からないってんならまずそっちから勉強する必要があるぞ。
399383:2006/03/30(木) 23:21:38
ありがとうございます
デリゲートの勉強からはじめます。
400383:2006/03/30(木) 23:51:04
わーい、ありがとうございます。
かなり勘だけで作ったけど何とか動きました。

もうひとつだけ質問です。
試してみたら
TIME_ONESHOT → 0
TIME_PERIODIC → 1
みたいだったけど、こういうのってどこで調べればいいんですか?
401デフォルトの名無しさん:2006/03/30(木) 23:55:00
VC++ 入れてたり PlatformSDK 入れてたりするならヘッダファイル。
そうでないなら Google。
402デフォルトの名無しさん:2006/03/31(金) 03:56:14
textboxでEnableをfalseにした状態のフォント色の変更って出来ませんか?
403デフォルトの名無しさん:2006/03/31(金) 07:19:40
>>400
そーいう感じでCLRの外に(マーシャリングして)関数ポインタを晒した
delegate は、static 変数に入れるとかして保持しておかないと gc されて
アボーンするから気をつけてね。

MS のなんかのドキュメントにも書かれてるけど。
404デフォルトの名無しさん:2006/03/31(金) 08:24:34
>>397
http://www.pinvoke.net/default.aspx/winmm.timeSetEvent
うまくいったらここに書き足してくれたりすると
幸せな人が増えるかも:)
405デフォルトの名無しさん:2006/03/31(金) 09:13:04
>>402
つ Win32API
406デフォルトの名無しさん:2006/03/31(金) 13:38:56
一瞬も true にすることはできないのか?
407デフォルトの名無しさん:2006/03/31(金) 13:47:58
>>402
TextBox継承してEnabledを自前で実装
408デフォルトの名無しさん:2006/03/31(金) 18:46:01
WindowsApplicationを作っているのですが、デバッグモードで起動すると2回に1回、ロードがはじまりません。
このようなことはよくありますか?
409デフォルトの名無しさん:2006/03/31(金) 18:47:51
よくとは言わないがそれなりに。
410デフォルトの名無しさん:2006/03/31(金) 19:29:23
フォームデザイナで作成したフォームの、各コントロールに
+= されているイベントハンドラって、実行中に動的に
別のイベントハンドラと関連付け直すってことは
できるのでしょうか?
411デフォルトの名無しさん:2006/03/31(金) 19:33:50
-= して += すれば?
同じメソッドなら -= new HoveEventHandler(hogehoge) でも問題ないよ。
412デフォルトの名無しさん:2006/03/31(金) 19:38:57
そろそろ2005の書籍が何冊か出てるみたいですが
オススメありますか?
413デフォルトの名無しさん:2006/03/31(金) 21:36:27
Form_Closing イベントの追加はどのようにやればいいですか?
イベントを選択するプロパティにないためわかりませんでした。
414デフォルトの名無しさん:2006/03/31(金) 21:41:41
イベントを選択するプロパティってのもなかなか複雑だな
2005 か? なら代わりに FormClosing 使え 
415デフォルトの名無しさん:2006/03/31(金) 21:51:58
ありました、ありがとうございます。
416デフォルトの名無しさん:2006/03/31(金) 22:33:31
ArrayListに50文字のstringが1000個ほど入れてあり、
foreachのStreamWriterでファイルに記録しようとしているのですが
もっと良いおすすめの方法などがあれば教えてください。

417デフォルトの名無しさん:2006/03/31(金) 22:42:27
ArrayList やめて一つのベタ string にする。

まともに答えるなら、それでいいんじゃない?
418デフォルトの名無しさん:2006/03/31(金) 22:58:43
ArrayListをシリアライズ
419デフォルトの名無しさん:2006/03/32(土) 00:00:55
べたstringでArrayListにインデックスを持たせる
420デフォルトの名無しさん:2006/03/32(土) 00:27:09
DateTimeで今日の日付ってどうやって取得するんですか?
421デフォルトの名無しさん:2006/03/32(土) 00:28:21
Now 静的プロパティ
422デフォルトの名無しさん:2006/03/32(土) 00:35:09
DateTime date = new DateTime( 2006, 3, 32 );


ArgumentOutOfRangeException はハンドルされませんでした。
423416:2006/03/32(土) 01:11:31
>>420
DateTime dt = DateTime.Now;
int today = dt.Day;

ArrayList list = new ArrayList();
list.Add(new string[] { "山田", "太郎" });
list.Add(new string[] { "山田", "次郎" });

このようなArrayListがあります。
これをシリアライズしてXMLファイルにしたいのですが、
InvalidOperationException はハンドルされませんでした。
XML ドキュメントを生成中にエラーが発生しました。
というエラーになります。
ご教授願います。

XmlSerializer lizer = new XmlSerializer(typeof(ArrayList));
using (FileStream stream = new FileStream("hoge.xml", FileMode.Create))
{
lizer.Serialize(stream, list);
}
424デフォルトの名無しさん:2006/03/32(土) 01:22:51
XmlSerializer(Type, Type[]) 使え。
425416:2006/03/32(土) 01:37:59
>>424

Type[] et = new Type[] { typeof(string) };
XmlSerializer lizer = new XmlSerializer(typeof(ArrayList), et);

で試してみたのですがだめでした。
426デフォルトの名無しさん:2006/03/32(土) 01:45:23
× Type[] et = new Type[] { typeof(string) };
○ Type[] et = new Type[] { typeof(string[]) };

こちらで出来ました。ヒントありがとうございました。
427デフォルトの名無しさん:2006/03/32(土) 08:36:17
おめ!
428デフォルトの名無しさん:2006/04/02(日) 04:11:35
Form1にあるWebBrowser1に表示されているページにて
新しいウィンドウで開くようなリンクなどをクリックした場合、
そのリンク先をForm2のWebBrowser2に表示させたいのですが
どうすればいいでしょうか?

WebBrowser1のNewWindowイベントで何かすればいいのかなぁ・・と漠然としてます。
429デフォルトの名無しさん:2006/04/02(日) 04:20:42
>>428
CodeProjectにサンプルがあるから
Googleで ExtendedWebBrowser で調べてみな。
430デフォルトの名無しさん:2006/04/02(日) 04:24:58
NewWindow が非常に使えない仕様になってるんだよね。
ttp://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=c5aa05c2-73ce-40af-b6b1-7b5900cf4e9f
こういうことやるか、
Interop.SHDocVw.dll 参照して ActiveXInstance プロパティを SHDocVw.WebBrowser にキャストして
NewWindow3 イベントを使うか。
431デフォルトの名無しさん:2006/04/02(日) 04:28:11
>>429
お早い返信ありがとうございます。早速見つけました。
読んで試してみます!
432デフォルトの名無しさん:2006/04/02(日) 04:36:19
>>431
やることわかってるなら>430のフィードバックセンターから
コードをコピーした方が早いよ。
やってることは同じだけどCodeProjectの方が詳しいっていうだけ。
433デフォルトの名無しさん:2006/04/02(日) 05:18:23
>>430
入れ違いで見逃してました、ありがとうございます。

>>432
始めたばかりの自分には二つともコードが長すぎて正直どうすればいいかさっぱりですたorz
もうちょいがんばってみます。
434デフォルトの名無しさん:2006/04/02(日) 19:30:39
最近、C#を勉強し始めたのですが、質問させて下さい。

10 行でズバリ !! リレーショナルデータテーブルの構築 (C#)
ttp://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/relationaldata/cs.aspx

を参考にし、データベースの内容を表示させるようにしてみたのですが、
確かに上記の説明で、リレーションを元にデータを表示する事が出来るのは理解できました。

そこで、単純な疑問が湧いたのですが、
>// Orders テーブル用のデータ アダプタを準備する
>SqlDataAdapter da1 = new SqlDataAdapter ("SELECT OrderID, CustomerID, OrderDate FROM Orders" , con);

>// Orders Details テーブル用のデータ アダプタを準備する
>SqlDataAdapter da2 = new SqlDataAdapter ("SELECT OrderID, ProductID, UnitPrice, Quantity FROM [Order Details]" , con);

とありますが、これだと必ず全レコードを取得してしまうような気がするのですが、どうなのでしょうか?
内部処理がどうなっているのかが不明なのですが、

Orders Detailsを全件ローカルに取得してから、親レコードのOrdersのカレントレコードが変わったときに
該当するデータを絞り込んでいるように見えます。

それとも、こういったソースで、Ordersのカレントレコードと関連のあるOrders Detailsのレコードを
動的にDBから取得しているのでしょうか?

仮に後者なら、業務で数万件〜数百万件のレコードが存在するような親−子テーブルを処理する場合、
レスポンス的に業務では使えないものになるような気がするのですが?
435434:2006/04/02(日) 19:47:43
追記です。

今さっき、ちょっとテストしてみました。

・クエリアナライザをしようして監視
・最初にデータを表示されてから、SQLServerのサービスを停止させる

結局の所、親−子とも全レコードを最初に抽出したあと、リレーションにもとづいて
データを表示させているだけでした。

これを、親レコードが選択された場合に、リレーションにもとづいて
DBからデータを取得するようにするにはどうしたらいいのでしょうか?
436デフォルトの名無しさん:2006/04/02(日) 23:26:55
GraphicsクラスのDrawStringメソッドで改行禁止で文字列を描画したいのですが・・・
事情があって、Rectangleのサイズは変えられません。
Rectangleのサイズが大きめなので文字列が長いと2列になってしまうのですが、
何かいい方法はありませんでしょうか・・・?
437デフォルトの名無しさん:2006/04/02(日) 23:31:11
どんな事情か聞かせろ。

StringFormat 使えば何とかなると思うが。
438436:2006/04/02(日) 23:44:48
xx.FormatFlags = StringFormatFlags.NoWrap; でいけました。
StringFormatは使ってたんですが見落としてました。 ごめんなさい。(´・ω・`)
439デフォルトの名無しさん:2006/04/03(月) 17:29:12
どうしてEventHandlerのsender引数はobject型と決まってるの?
440デフォルトの名無しさん:2006/04/03(月) 17:38:20
EventHandler デリゲートの第一引数が object 型を要求するから
441デフォルトの名無しさん:2006/04/03(月) 19:34:34
EventHandlerから継承したdelegateの第一引数はobjectじゃなくていいの?
HogeHogeEventHandler(string text, int index)とかやってるんだけど無問題?

これがOKならEventArgsがなんのためにあるのか分からなくなってきた・・・
442デフォルトの名無しさん:2006/04/03(月) 19:41:45
デリゲートは全て暗黙に MulticastDelegate から派生するので、EventHandler とはなんの関係もない。
構わないと言えば構わないが、Microsoft のガイドラインに従うのなら、
イベントのデリゲートは delegate void HogeEventHandler(object, HogeEventArgs) にすべきである。
イベント引数の要素を後で変更したくなったときにイベントシグネチャを変える必要がないから。
// HogeEventArgs を継承する HogehogeEventArgs をイベントに渡す。
443439:2006/04/03(月) 19:50:30
そういう意味ではありません。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/cpconeventnamingguidelines.asp
# イベント ハンドラ名には、EventHandler サフィックスを付けます。
# sender および e という名前の 2 つのパラメータを指定します。
# sender パラメータは、イベントを発生させたオブジェクトを表します。
# sender パラメータの型は、より適した型を使用できる場合でも、常に object にします。

この規則が何のためなのかと思ったわけです。
444デフォルトの名無しさん:2006/04/03(月) 20:08:39
ガイドラインであってルールではない
自分なりのガイドラインがあっても良いし、Microsoftのガイドラインに沿ってもいい

今回の場合はMSガイドラインに沿うと拡張性は上がる
でも嫌なら好きなように作ればいい
445デフォルトの名無しさん:2006/04/03(月) 20:09:42
イベントハンドラは複数のイベントで実行されうる。
例えば、IE のメニューの「文字のサイズ-最大/大/中/小/最小」なんて、
同じイベントハンドラを呼び出してそこで「どこから呼び出されたのか」を判断する方が自然だ。
そのための sender 。

で、ガイドラインにするのはイベントをそう言う統一的概念で扱えるようにするため。
446デフォルトの名無しさん:2006/04/03(月) 23:12:02
まあ、イベントは汎用だっていう考え方なんだろね。
447デフォルトの名無しさん:2006/04/04(火) 10:04:08
マイクロソフトのガイドラインが絶対じゃない
自分なりに統一的概念を作れるなら他の実装でも構わない

ただ、自分が考えるガイドラインってのは往々にして「自分の理解の範囲」に特化した劣化版がほとんど
最後は開発側であるマイクロソフトのガイドラインに帰結すると思うよ
448デフォルトの名無しさん:2006/04/04(火) 12:31:03
質問です。
以下のようなメール送信プログラムを作ったのですが、

SmtpMail.Send(textBox1.Text, label2.Text, label5.Text, textBox2.Text);
MessageBox.Show("送信しました", "送信完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();

※送信先(label2)とタイトル(label5)は固定

自分のところではうまく送信できたのですが、ビルドした物を友人に送信して試してもらったところ、
以下のようなエラーが出て送信できませんでした。

System.Web.HttpException: "SendUsing" の構成値は無効です。
---> System.Reflection.TargetInvocationException: 呼び出しのターゲット
が例外をスローしました。

いろいろ試しても自分のところで再現することが出来ず、何が原因かわからず困っています。
上のエラーは何が原因なのでしょうか?
449デフォルトの名無しさん:2006/04/04(火) 16:33:28
一行ずつデバッグしていってエラー飛んだところだカス
450デフォルトの名無しさん:2006/04/04(火) 18:22:24
>>448
あまりに突っ込みどころが多すぎて困る

まずは友人とやらの環境を確認しろ

・SMTPでインターネットへパケットを飛ばせる環境なのか
・SMTPの送信に制限が掛かっていないか
・メールサーバの設定は正しいか
・メールサーバのSMTP認証に反した送信をしていないか
・メールサーバがプロバイダのものなら、そのプロバイダ以外からの接続を許可しているのか

ネットワーク系の場合はコード以外に環境も確認しろ
451デフォルトの名無しさん:2006/04/04(火) 23:38:10
byte→stringしたいのですが、

Convert.ToChar(bytes[i]);
をループさせるのと
Encoding.ASCII.GetString(bytes);
って何が違うの?

逆にstr→byteしたいときも
BitConverterつかうのとASCII.GetBytes(str)
って何が違うの?

文字コードとかワケワカラン・・・

452デフォルトの名無しさん:2006/04/04(火) 23:46:45
AやBだけのキーで実行できるいわゆるワンキーショートカット
を実装したいのですがどうすればいいでしょうか?

もうちょっと具体的にいいますと
ContextMenuStrip内のToolStripMenuItem.ShortCutKeyDisplayStringプロパティに
"A"や"B"などのショートカットを設定してそれを実行できるようにしたいのです。
453デフォルトの名無しさん:2006/04/04(火) 23:48:20
ListView + TreeView みたいなのって、標準では存在しないのでしょうか。
VS2005 の「プロパティ」がまさにそれだと思うのですが。
454デフォルトの名無しさん:2006/04/04(火) 23:53:04
>>453
PropertyGrid
柔軟性が欲しいならコンポ探せ
455デフォルトの名無しさん:2006/04/04(火) 23:53:45
>>451
メモ帳でUTF8とシフトJISのテキストファイルを作って読み込んでみろ

>>452
無理。
KeyDownとかで代用

>>453
あれはPropertyGrid
456デフォルトの名無しさん:2006/04/04(火) 23:55:43
>>451
使われるのが ASCII コード(0x00-0x7F)だけなら変わらん
それ以上知りたければエンコーディングを勉強すれ

>>453
プロパティグリッド? プロパティの表示専用みたいなもんだが。
457デフォルトの名無しさん:2006/04/05(水) 00:01:05

↑これってなんて読むのですか?
ネットで検索したいんだけど一文字だからできなくて
おねがいします
458デフォルトの名無しさん:2006/04/05(水) 00:04:31
まず Unicode の値を取得する。C# なら char 型を int にキャストすればいいな。
あとは ttp://www.unicode.org で調べるんだ。
459451:2006/04/05(水) 00:20:44
みなさんレスありがとうございます。

hmac_md5計算しようとしてるんですが、byteやらstrやらが入り乱れて
わけわからんくなってきてます・・・

地道にがんばります。
460453:2006/04/05(水) 00:22:44
皆さんありがとう。
http://blogs.msdn.com/photos/atc_avalon_team/picture541212.aspx
こういうのナイっすか……
461デフォルトの名無しさん:2006/04/05(水) 00:31:19
>>460
そのままの言葉でぐぐるとこれが出てくるわけだが?
http://www.codeproject.com/cs/miscctrl/treelistview.asp
462デフォルトの名無しさん:2006/04/05(水) 00:32:31
>>459
http://www.google.com/search?num=50&hl=ja&q=hmac_md5+c%23+site%3Awww.zj55.net&lr=
それっぽいもの。
本サイトは落ちてるみたいなんでキャッシュで見られるかも。
463デフォルトの名無しさん:2006/04/05(水) 00:35:06
>>457
「記号 読み方」ネットで検索
464デフォルトの名無しさん:2006/04/05(水) 18:36:31
MSDNライブラリの.NETのクラスリファレンスのURLを教えてください、
465デフォルトの名無しさん:2006/04/05(水) 18:45:39
ms-help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.NETDEVFX.v20.ja/dv_fxgenref/html/

こうですか? わかりません!
466デフォルトの名無しさん:2006/04/05(水) 21:28:52
>>464
その言葉をここに書き込むよりGoogleの検索欄に書いた方が速いよ?

まあこんなレスするより教えた方が速いんだが
467デフォルトの名無しさん:2006/04/05(水) 21:46:10
>>465
ごめんなさい。MSDNサイト上のURLです。
>>464
いままで検索からきていたのですが、新サイトに移行してから分からなくなってしまいました。C#やVB.NETのリファレンスなら見つかったのですが…。
468デフォルトの名無しさん:2006/04/05(水) 21:50:10
.NET 2.0 で追加されたクラスとかメソッドとか検索すれば一発だよ
469デフォルトの名無しさん:2006/04/05(水) 22:00:53
>>468
見つかりました
ありがとうございます
470デフォルトの名無しさん:2006/04/05(水) 23:51:20
textBoxに一行づつstringを書き込みたいんですけど
textBox.Textは一度に読み込ませないとだめみたいで
こういう場合どうすればいいでしょうか?
471デフォルトの名無しさん:2006/04/05(水) 23:56:42
AppendText で追加できるけど。
472470:2006/04/06(木) 00:22:00
>>471
おお、こんな便利なメソッドがあったとは
ありがとうございます
473デフォルトの名無しさん:2006/04/06(木) 15:40:22
BinaryReader.ReadUInt32()で0x12345678を読み込ませると78563412と逆になってしまいます(リトルエンディアン?)
これを逆にならずに読み込ませる方法を教えてください。
474デフォルトの名無しさん:2006/04/06(木) 15:47:40
x86 使う以上、リトルエンディアンでごく自然なことだと思うけどね。
数値をビッグエンディアンで解釈するには System.Net.IPAddress.HostToNetworkOrder なんてメソッドもあるけど。
475デフォルトの名無しさん:2006/04/06(木) 16:40:24
なるほど…
分かりました。ありがとうございました。
476デフォルトの名無しさん:2006/04/06(木) 16:48:10
>>472,474の呼び方は「イベントハンドラ」だと思っていたけど「メソッド」でいいの?
477デフォルトの名無しさん:2006/04/06(木) 16:51:03
>>476
いいだろ?
478デフォルトの名無しさん:2006/04/06(木) 16:55:17
イベントを処理する訳じゃないからな。
イベントハンドラは、イベントに関連づけられてイベントが発生したときに実行されるメソッド。
479デフォルトの名無しさん:2006/04/06(木) 19:31:32
文字列を指定文字で分割する場合Splitがありますが
2文字以上の連続した文字列で分割したい場合
便利なクラスはありますでしょうか?
480デフォルトの名無しさん:2006/04/06(木) 19:37:07
String.Split

.NET 1.x なら Regex 使えば?
481478:2006/04/06(木) 19:50:49
>>480
ありがとう
482デフォルトの名無しさん:2006/04/06(木) 20:49:47
ListViewItem.ListViewSubItem

これはどういう構造なんでしょうか?

ListViewSubItemはListViewItemを継承してるんでしょうか?
こういう感じのものをArrayListを使って作りたいんですけど
やり方がよくわかりません

学校.クラス[0].クラスメイト[0].名前="まっちゃん";
学校.クラス[0].クラスメイト[0].身長="230cm";

みたいなものを作りたいんです
構造はlistviewに近いので参考にしようと思ったのですが
よくわからなくて・・・
483デフォルトの名無しさん:2006/04/06(木) 20:56:45
ArrayList のなかに ArrayList をぶち込めばいいだろ
484デフォルトの名無しさん:2006/04/06(木) 21:07:43
>>483
ぶち込めばいんですがやり方がよくわからないんです

Class クラス:ArrayList
{
  public クラスメイト=new クラスメイト();
}
こういう感じにすればいいんですか?
どうも違うような?これだと、学校からの継承がなくなるし
どうしたらいいもんか・・
485デフォルトの名無しさん:2006/04/06(木) 21:14:59
別に ListViewSubItem は ListViewItem を継承してる訳じゃない。
そんなことしたら ListViewSubItem が ListViewSubItem コレクションを持つことになるじゃないか。

ListView が持つ ListViewItemCollection で ListViewItem を管理する。
ListViewItem が持つ ListViewSubItemCollection で ListViewSubItem を管理する。
特定のコレクションは、ArrayList やら List<T> やらを使ったりを派生させたり CollectionBase から派生させたり。

public class Item {
    public LisT<SubItem> SubItems {get;}
}
public class SubItem {
}

学校はクラスのコレクションを持つ。
クラスはクラスメイトのコレクションを持つ。というだけの話。
486デフォルトの名無しさん:2006/04/06(木) 21:24:07
つーか思考回路がプログラムに向いてないんじゃね?
487デフォルトの名無しさん:2006/04/06(木) 21:42:01
>>485
なんとなくわかったようなわからないような
解説サイトは人間の中の学生の・・とかをモデルに継承を説明してたけど
安易に継承したらダメってことかな

例えば、人間クラスに複数の学生クラスを保持してたとすると
一人一人の学生にすべて学生のクラスを保持できる変数まで継承してしまいますよね?
じゃあなんでそういうモデルを例にあげたのかさっぱりわからない
継承なんかしないで、人間クラスに学生を保持するArraylistを宣言すればいいだけでは?
と思ったり、とにかくこういう場合は継承しないほうがいいみたいですね
488デフォルトの名無しさん:2006/04/06(木) 22:24:16
>>487
> 例えば、人間クラスに複数の学生クラスを保持してたとすると
訳分からんこと言うな。
人間がどうして複数の学生を保持するんだ?
その人間ってのは担任の先生なのか?

学生を持つのは学校であって人間ではない。
そして学校は学生とは継承関係にあるはずもない(「学生は学校である」「学校は学生である」どっちも偽だ)。
489デフォルトの名無しさん:2006/04/06(木) 22:52:19
コレクションと継承をごっちゃにしてるのがまるわかりw
490デフォルトの名無しさん:2006/04/06(木) 22:52:54
>>487 その解説サイトのURLもってこい
491デフォルトの名無しさん:2006/04/06(木) 22:54:15
>>488
なるほどね
492デフォルトの名無しさん:2006/04/06(木) 22:54:58
493デフォルトの名無しさん:2006/04/06(木) 22:57:14
>>489
いや、まったくその通りで

機能ほ受け継ぎたい→継承
量を保持したい→コレクション

こんな感じですかね?
自分が何を誤解してたのかようやくわかった

ありがd
494デフォルトの名無しさん:2006/04/06(木) 23:02:12
もう理解はしたようだからいらん一言になるけど、
そのサイトの例は機能を受け継ぐっつー例やね
495デフォルトの名無しさん:2006/04/06(木) 23:05:43
エクセルのファイルとか作りたいんだけど
エクセル入ってないとつくれない?
496デフォルトの名無しさん:2006/04/06(木) 23:08:08
エクセル持ってないのにエクセルのファイルを作ってどうするんだ
497デフォルトの名無しさん:2006/04/07(金) 03:19:46
継承すげえええええええええええええええええええええええ

今まで同じ基本クラス持ってるコントロールにそれぞれ同じメソッド書いてたけど
自作コントロールを作成してそのにメソッド書いてそれぞれに継承させれば楽チンじゃん!
しかもイベントも全部その自作クラスのイベントにキャストすればイベントコードも1つで済むじゃんん!!!

早く教えてよ!こんな便利な機能
498デフォルトの名無しさん:2006/04/07(金) 08:33:50
WMI RebootでWindowsをリブートさせるにはどうしたらいいんでしょう?
特権がないとエラーが出てしまうんですが・・・。
Web上もリモートPCのなら載ってるんですけどorz

検索して見つけたコードです。サイトの人もエラー吐くかもと認識しているみたいですorz
ManagementObjectSearcher searcher = new ManagementObjectSearcher();
searcher.Query.QueryString = "SELECT * FROM Win32_OperatingSystem";
ManagementObjectCollection operatingSystems = searcher.Get();
foreach (ManagementObject operatingSystem in operatingSystems)
{
operatingSystem.InvokeMethod("Reboot", new string[] { "" });
}
499デフォルトの名無しさん:2006/04/07(金) 08:39:14
エラー通り、シャットダウンや再起動には特権が必要。
で、その特権を獲得するには Win32API を使う必要がある。
ttp://www.google.com/search?num=100&hl=ja&lr=lang_ja&oe=utf8&q=%E5%86%8D%E8%B5%B7%E5%8B%95+%E7%89%B9%E6%A8%A9
500デフォルトの名無しさん:2006/04/07(金) 08:41:21
501デフォルトの名無しさん:2006/04/07(金) 08:47:08
>>499-500
うぅー、やっぱそこら辺になりますかぁ・・・。
宇宙仮面さんのとこは正直分からなかったですがやるしかなさそうですね。
どもでした、おやすみー
502デフォルトの名無しさん:2006/04/07(金) 09:03:32
>>495
XML形式で良ければテキスト操作で作れる
DIFF形式ならXLSoftのExcelCreatorとか買うしかない
自力でDIFF形式出力を実装することもできなくもないが茨の道
503デフォルトの名無しさん:2006/04/07(金) 09:21:04
>>498
ManagementScope.Options使って管理者に偽装すりゃいいんじゃねーの?
504デフォルトの名無しさん:2006/04/07(金) 09:26:27
>>503
権限と特権は別。
505デフォルトの名無しさん:2006/04/07(金) 11:08:52
>>497
うん、まあよかったな。その調子でがんがれよ。
506デフォルトの名無しさん:2006/04/07(金) 16:44:44
C#のlong(Int64)は64ビットですが、
Win32のlongは32bitでいいんでしょうか?

64bit対応を考えたとき、
wParamとかハンドルとか、IntPtrで受けた方がいいですか?
507デフォルトの名無しさん:2006/04/07(金) 16:47:57
x86 でも x64 でも LONG / long は 32bit。
WPARAM とか HANDLE とかは当然 IntPtr だね。.NET の標準ライブラリでもそうなってるし。
508デフォルトの名無しさん:2006/04/07(金) 16:50:14
>>507
ありがとうございます
509デフォルトの名無しさん:2006/04/08(土) 21:02:04
描画関係で質問です。簡易ワードを作っています。
オートシェイプみたいなオブジェクトをドラッグ中、画面が狭いと滑らかに動くんですが
全画面表示にするとフレーム落ちしたような動きになります。

ワードクラス(コントロールを継承) 図形クラス(座標、サイズ、Drawメソッドを持つ)

ドラッグ中の処理(ワードクラスMouseMoveivイベント)
・図形クラスの座標にマウスの座標を設定
・図形クラスのRectangleで Invalidate(rect, false);//必要なエリアだけ描画 OnPaintイベント発生

描画処理(ワードクラスOnPaintイベント)
protected override void OnPaint(PaintEventArgs e)
{
Bitmap bmp = new Bitmap(this.Width, this.Height);
Rectangle re = new Rectangle(0,0,this.Width, this.Height);

using(Graphics g = Graphics.FromImage(bmp))
{
g.Clear(SystemColors.Window);//背景描画
図形クラス.Draw(g);//Rectangleの枠を描画するだけ
e.Graphics.DrawImage(bmp, re, re, GraphicsUnit.Pixel);
}
}

大体こんな感じの処理ですが、アドバイスお願いします。
Framework1.1です。
510デフォルトの名無しさん:2006/04/08(土) 23:21:51
LabelのBackColorを変更したりもとに戻したりしたいのですが、
もとの色は何色でしょうか。
プロパティを見るとBackColorがControlになっていますが、
label1.BackColor = Color.Control;
が出来ないので困ってます。
511デフォルトの名無しさん:2006/04/08(土) 23:29:11
できないって事はないと思うが……
取りあえず ResetBackColor メソッド
インテリセンスには出ないかもしれんが
512デフォルトの名無しさん:2006/04/08(土) 23:31:54
>>511
ありがとうございます。
選択肢に出ないものもあるんですね。
513デフォルトの名無しさん:2006/04/08(土) 23:33:20
あ、なんか違和感があると思ったら。
SystemColors クラス見てみ。
514デフォルトの名無しさん:2006/04/08(土) 23:52:47
509です 解決できそうです。

PaintEventArgsのClipRectangleプロパティを見落としていました。
でもここはあまり問題じゃなかったです。
問題のフレーム落ちみたいになったのは
ダブルバッファようのBitmapのサイズがまさに全画面で...orzなのと
DrawImage()での描画位置などの指定も同じく全画面でした...orz

ところでワードのようなコントロールってないんですかね?
文章書けて、画像が配置できるような。。。
515デフォルトの名無しさん:2006/04/08(土) 23:57:55
Wordつかえば
516デフォルトの名無しさん:2006/04/09(日) 00:04:53
仕事をしている間だけ処理をするプログラムを書いています。
DateTime.Now.HourやDateTime.Now.Minuteを使ったif文だととても複雑になってしまうのですが、
もっとスマートに書く方法はありますか?

たとえば、「8:00-11:30 12:30-17:00」の場合だと
時間部分が8以上かつ12未満で、11の時は分部分が30以下
または
時間部分が12以上かつ17未満で、12の時は分部分が30以上
ただしきっかり17時の時を含める

このように長くなります。
if(8:00-11:30 || 12:30-17:00)
このような感じのものはないのでしょうか?
517デフォルトの名無しさん:2006/04/09(日) 00:10:30
>>516
TimeOfDay プロパティを使えば多少は楽になるだろ
518デフォルトの名無しさん:2006/04/09(日) 00:18:24
DateTime は不等号演算子もオーバーロードしてるから、
日付部分さえ同じなら DateTime 同士の単純な比較で問題ないけど。
519デフォルトの名無しさん:2006/04/09(日) 00:27:46
>>518
お前は一個上も(ry
520デフォルトの名無しさん:2006/04/09(日) 00:46:09
TimeOfDayで楽になりそうです。
気づいたのですが、DateTime.Nowの時間と、タスクトレイの時計の時間は数秒違うのですね。
これは同期する方法はあるのでしょうか?
521デフォルトの名無しさん:2006/04/09(日) 18:58:19
configFile["Width"] = width.ToString();

このような記述を見つけました。
どうやら[ ]は配列では無いことはわかるのですが何を表しているかわかりません。
どんなキーワードで検索すればわかるでしょうか。
522デフォルトの名無しさん:2006/04/09(日) 19:02:50
連想配列、いやどっちかってーとインデクサか?

ていうかまずそのクラスを調べようよ
523デフォルトの名無しさん:2006/04/09(日) 19:10:56
HashTableだったんですね。
ありがとうございます。
524デフォルトの名無しさん:2006/04/09(日) 20:47:33
Visual C# 2005 Express Edition を使用しています。
プロジェクト内のすべての.csファイルを一括印刷する方法はありますでしょうか。
525デフォルトの名無しさん:2006/04/09(日) 20:48:39
>>524
自分で作るってのはどう?
526デフォルトの名無しさん:2006/04/09(日) 22:23:40
>>524
マクロかアドインでって、Expressじゃ使えないんだよな。
527デフォルトの名無しさん:2006/04/09(日) 22:32:00
例えばtextBox1で、デザイナ画面でイベント定義すると、
textBox_Click(object.........
てな感じでメソッド名の始まりが小文字になるでしょ?
でも、作法としてはPascal形式で大文字始まりにする
べきだよね。みなさんどうしてる?
528デフォルトの名無しさん:2006/04/09(日) 22:33:50
プライベートだから気にしない
529デフォルトの名無しさん:2006/04/09(日) 22:40:15
外部から見えるメンバはPascal形式と決まってるだけで、
見えないものはどうでもいい
530デフォルトの名無しさん:2006/04/09(日) 23:53:15
System.Collections.Generic.Comparer <T>
これの <T> を調べたいんだけど、
これなんて呼ばれてんの?
531デフォルトの名無しさん:2006/04/09(日) 23:59:26
型パラメータとか呼ばれるが、そもそも調べてどうすんの?
532デフォルトの名無しさん:2006/04/10(月) 00:10:49
っていうか何を調べたいんだ?
まあ、ジェネリック型パラメータとか、型パラメータ、とかかな。
533デフォルトの名無しさん:2006/04/10(月) 00:47:29
>>531
サンクス
ジェネリックって知らん刈田
534デフォルトの名無しさん:2006/04/10(月) 00:57:07
>System.Collections.Generic.Comparer <T>
おまいは上の名前空間を自分で使ってたんじゃなかったのか!
535デフォルトの名無しさん:2006/04/10(月) 16:50:18
質問します。
C#にリストがあるっぽいので使ってみたの
class Game{
public static ArrayList list = new ArrayList();

プログラムの初期化で
Game.list.Add(new SystemTask(50,50));
適当に追加したの。

で、メインで リストを回してるの。
foreach(Task myObj in Game.list)
{
myObj.OnIdle();
}
このOnIdle内で
Game.listに追加すると
なんか警告出るの。

foreach中に対応リスト追加するとだめっぽい。
追加するための対策どうすればいいですか?

536デフォルトの名無しさん:2006/04/10(月) 16:56:29
for ループにしろ。無限ループにならんようにな。

あと日本語をもっと勉強しろ。
537デフォルトの名無しさん:2006/04/10(月) 16:56:40
foreach以外のループを使う。
538デフォルトの名無しさん:2006/04/10(月) 16:59:44
for文はどうかと思うけどね
539デフォルトの名無しさん:2006/04/10(月) 17:08:17
>>536-537
とりあえずいけたの。
ありがとうなの。

で、
C++のSTLのlistとかmapとかでiteratorみたいなので指定して使いたいけど
それっぽいのはないの?
540デフォルトの名無しさん:2006/04/10(月) 17:34:18
イテレータを使うならforeachと同じじゃないの?
541デフォルトの名無しさん:2006/04/10(月) 17:45:03
Web版のMSDN2の、ページ移動時のフェードアウトがすさまじくウザいのですがどうすれば消せますか?
542デフォルトの名無しさん:2006/04/10(月) 18:38:28
爆破
543デフォルトの名無しさん:2006/04/10(月) 19:08:08
念力
544デフォルトの名無しさん:2006/04/10(月) 19:12:57
継承について質問させてください

基本クラスのListViewを継承したサブクラスのメソッドを使う場合に
当然なんでしょうが、基本クラスのメソッドも見えてしまうのでわかりづらいんです
サブクラスで定義したパブリックなメソッドだけが見えるようにできないでしょうか?
545デフォルトの名無しさん:2006/04/10(月) 20:17:56
そういうのは実装の継承といって、できれば避けるべきパターン。
C#の場合、新規クラスがListViewを保持するのが上席。
546544:2006/04/10(月) 20:53:01
>>545
なるほど、継承するからややこしくなるんですね。
でも、新規クラスが保持した場合、デザイン編集画面には表示されないですよね?
できれば、デザイン編集画面でコラムや外見を編集できるようにもしたいんですが
そういう場合はどうすればいいんでしょうか?
547デフォルトの名無しさん:2006/04/10(月) 21:22:35
ListViewを配置したユーザーコントロールを作成して、
必要なListViewのプロパティを自分のコントロールのプロパティとして間接的に公開
548544:2006/04/10(月) 21:38:29
>>547
ありがとう。試してみます。
549デフォルトの名無しさん:2006/04/10(月) 22:17:02
コントロールに関しちゃそれはあまり当てはまらんと思うぞ。

たいたい、実装の継承を避けるべきってのは依存を避けたいわけで、
はなから特定のクラスに依存しているというか、
そのものの動作を必要とするものを、
わざわざ委譲に書き換える意味が分からない。
550544:2006/04/10(月) 22:42:34
>>549
では、どうすればいいんでしょうか?
ListViewクラスのメソッドなどをprotectedできれば一番いいんですけど・・
呼び出す側にはサブクラスのメソッドだけを見せたいんです
551デフォルトの名無しさん:2006/04/11(火) 11:36:18
C言語みたいに構造体の配列一気に初期化したい
public static StageTablestage_tbl[]=
{
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
{ 20 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
};
}
↑こんなの

これだとエラーでます。

やっぱ、引数ありのコンストラクタ書かないと駄目ですか?

552デフォルトの名無しさん:2006/04/11(火) 11:51:42
>>551
C# 3.0 待ち。
現状は無理。
553デフォルトの名無しさん:2006/04/11(火) 12:56:28
なんかあたかも>>542>>543が正解みたいだな。
いやまあ間違っちゃいないとは思うけど。
554デフォルトの名無しさん:2006/04/11(火) 14:25:35
んでどうすればフェードアウトかくせるんですか(゚Д゚)
555デフォルトの名無しさん:2006/04/11(火) 15:29:11
ちなみにそれってどこ?msdn2.microsoft.com?うちじゃフェードアウトとか
しないけど。
556デフォルトの名無しさん:2006/04/11(火) 16:24:13
>>554
IEなら インターネットオプション-詳細設定-ブラウズ-ページの切り替えを行う をオフに
557デフォルトの名無しさん:2006/04/11(火) 17:04:46
>>556 うほ、サンクスコ
558デフォルトの名無しさん:2006/04/11(火) 18:10:30
文字コードを判別するサンプルはいくつかみつかったのですが、
単純に与えられたstringが半角のみかどうかを調べる方法ってありますか?

559デフォルトの名無しさん:2006/04/11(火) 18:15:11
半角って何を指すのかって話だが。
Shift_jis のバイト列に変換して 2 バイト文字のコードが含まれてるかチェックすれば?
// 別に Unicode のままでもいいか……。
560558:2006/04/11(火) 18:39:08
レスありがとうございます。
byte[] b = Encoding.GetEncoding("shift_jis"))).GetBytes("ほげ");
して、頭から2byte読んでひたすらshift_jisのコードと照らし合わすって事ですか?

561デフォルトの名無しさん:2006/04/11(火) 18:46:21
ヒント:2バイト文字の第1バイトは範囲が限定されていて1バイト文字とかぶらないようになってる。
562558:2006/04/11(火) 18:49:46
何度もありがとうございます。
if (str.Length != Encoding.GetEncoding("shift_jis").GetByteCount(str))
上のコード書いてみました。 

>>561の方法だと
byte[] b = Encoding.GetEncoding("shift_jis"))).GetBytes("ほげ");
のb[0]がascii tableになければ2byteって認識でいいですか?
563デフォルトの名無しさん:2006/04/11(火) 18:51:39
ところで Shift_jis に含まれていない文字はどうするんだ?
564デフォルトの名無しさん:2006/04/11(火) 19:01:56
アプリの名前(プロセスの所にでるやつ)を書き換えるにはどういう手順でやれば
いいんですか?
565558:2006/04/11(火) 19:04:13
>>563
わかりません…

とりあえず今回は普通に使う日本語文字(微妙な表現…)か
普通のascii tableにあるような1byteか判断できれば十分なのでこれでよしとします。
566デフォルトの名無しさん:2006/04/11(火) 21:45:44
>>559
>if (str.Length != Encoding.GetEncoding("shift_jis").GetByteCount(str))
1バイト文字は1文字=1バイトなんだから、
これで良しと思われます。
567デフォルトの名無しさん:2006/04/11(火) 22:50:22
DllImportで uft-8 でエンコードされた char* を受け取りたいのですが
単純に StringBuilder を渡すだけでは文字化けしてしまいました。
解決策はないでしょうか?
568デフォルトの名無しさん:2006/04/11(火) 22:57:44
[Out] byte[] で受け取って Encoding.UTF8 でデコード汁
多分 String.Split で NULL 文字以降を切らんと駄目だぞ
569デフォルトの名無しさん:2006/04/11(火) 22:58:43
>>567 String渡せよ
570デフォルトの名無しさん:2006/04/11(火) 23:50:20
>>568
ありがとうございます。できました。
NULL 文字以降を切らなくてもちゃんとできてるみたいです。
571デフォルトの名無しさん:2006/04/12(水) 10:19:47
C言語の標準習得時間はどのくらいですか?
572デフォルトの名無しさん:2006/04/12(水) 11:05:53
>>571
スレ違いです
573デフォルトの名無しさん:2006/04/12(水) 11:54:27
>>571
もう8年目になるけど
完全に習得できてない
574デフォルトの名無しさん:2006/04/12(水) 12:18:27
共用体の存在意義が未だによくわかりません!><
575デフォルトの名無しさん:2006/04/12(水) 12:21:45
アンマネージドとの相互運用のためだけに存在すると考えて良し。C# 的には。
576デフォルトの名無しさん:2006/04/12(水) 13:42:32
mscorlibのcorって何の略ですか?
577デフォルトの名無しさん:2006/04/12(水) 13:48:43
corin star
578デフォルトの名無しさん:2006/04/12(水) 14:52:37
Microsoft Control Library
579デフォルトの名無しさん:2006/04/12(水) 15:08:18
Microsoft Console Library
580デフォルトの名無しさん:2006/04/12(水) 15:09:17
Microsoft Contikusyou Library
581デフォルトの名無しさん:2006/04/12(水) 15:10:15
Microsoft Corporate Library
582デフォルトの名無しさん:2006/04/12(水) 15:12:10
Microsoft Corpus Library
583デフォルトの名無しさん:2006/04/12(水) 15:25:35
Microsoft C organized Library
584デフォルトの名無しさん:2006/04/12(水) 15:34:58
Microsoft COBOL Routine
585デフォルトの名無しさん:2006/04/12(水) 15:51:43
foreachって何て呼ぶの?
フォレアッチ?
586デフォルトの名無しさん:2006/04/12(水) 15:53:07
フォー・イーチ
587デフォルトの名無しさん:2006/04/12(水) 15:55:32
フォレアーーーーーーーーーーーッチ!!!! ワロスw
588デフォルトの名無しさん:2006/04/12(水) 15:56:40
⊂ ● ⊃
589デフォルトの名無しさん:2006/04/12(水) 15:57:13
ふぉれあっち♥
590585:2006/04/12(水) 15:58:11
>>586-589
ありがとう、一生忘れない
591デフォルトの名無しさん:2006/04/12(水) 20:07:12
ふぉれあっちあげ
592デフォルトの名無しさん:2006/04/12(水) 20:16:11
VC#2003ってSpy++は付属してる?
MSDNに書いてあるフォルダにないんだが。
593デフォルトの名無しさん:2006/04/12(水) 20:51:04
ぐぐったら落とせるとこ見つかるよ><
594デフォルトの名無しさん:2006/04/12(水) 21:19:00
MSのサイト?
Managed Spy は試したが、いきなり例外出るし全然反応しないし
付属ソースも2003じゃIDEでコンパイルできないしですぐに消した。

VC6.0のSpy++があったんで使ってみた。
でもUnknownが多い。反応しないイベントも数あるようだ。
595デフォルトの名無しさん:2006/04/12(水) 21:40:22
VSの評価版入手して抜けば
596デフォルトの名無しさん:2006/04/12(水) 23:47:42
string.Empty が const ではなく readonly になっているのはなぜですか
597デフォルトの名無しさん:2006/04/12(水) 23:48:32
ではなぜreadonlyだといけないのですか
598デフォルトの名無しさん:2006/04/13(木) 00:34:43
readonly だと [DefaultValue(string.Empty)] と書けなくて不便
599デフォルトの名無しさん:2006/04/13(木) 00:38:31
DefaultValue("")
の方がよほど便利だと思うのだが
600デフォルトの名無しさん:2006/04/13(木) 00:40:33
ではなぜ "" で良いのに string.Empty を用意しているのか
601デフォルトの名無しさん:2006/04/13(木) 12:54:05
""だとその都度stringのインスタンスが生まれるけど
String.Emptyだとstatic readonlyだからアプリケーション中に1つだけ
っていうことじゃない?
602デフォルトの名無しさん:2006/04/13(木) 13:47:26
>>601
それも正しくない。
string はインターンプールって領域でインスタンスを管理してて、
基本的に同じ文字列は同じインスタンスを返す仕組みになってる。
// 明示的に new した場合は別。
"" を複数回使った場合もインスタンスは一つ。
で、それと String.Empty は別インスタンスになる。
String.Empty と同じインスタンスを指すのは new string(new char[]) だね。
通常 new したときは必ず新しいインスタンスが作られるんだが、空の char[] 使ったときは例外のようだ。

でも実は String の静的コンストラクタを覗くと "" を Empty にストアしてる不思議。
603デフォルトの名無しさん:2006/04/13(木) 14:01:18
翻訳単位を超えてユニークな""が欲しかったのかな。
604デフォルトの名無しさん:2006/04/13(木) 14:26:45
>>602
string s1 = string.Empty;
string s2 = string.Empty;
string s3 = "";
string s4 = new string(new char[0]);

Console.WriteLine("s1, s2: {0}",
  (Object.ReferenceEquals(s1, s2)) ? "t" : "f");
Console.WriteLine("s1, s3: {0}",
  (Object.ReferenceEquals(s1, s3)) ? "t" : "f");
Console.WriteLine("s1, s4: {0}",
  (Object.ReferenceEquals(s1, s4)) ? "t" : "f");
Console.WriteLine("s3, s4: {0}",
  (Object.ReferenceEquals(s3, s4)) ? "t" : "f");

結果:
s1, s2: t
s1, s3: f
s1, s4: t
s3, s4: f

new string(new char[0])とString.Emptyが一緒になるとは知りませんでした。
そういう情報ってどこで見つけられるんです?
605デフォルトの名無しさん:2006/04/13(木) 17:50:08
MSDN
606デフォルトの名無しさん:2006/04/13(木) 18:09:38
>>605
stringクラスのあたりをmsdnとmsdn2で眺めていたんですけど
見つからなかったんですよね…。
検索スキルが足りてないようなので出直してきます。
607デフォルトの名無しさん:2006/04/13(木) 18:15:30
いや多分載ってないんじゃないか。
今回のは自分で調べただけだし。
608デフォルトの名無しさん:2006/04/13(木) 18:22:43
VBだとFor Eachだから悩まないね。
609デフォルトの名無しさん:2006/04/13(木) 21:24:39
ほんじゃあ結局 const じゃなくて readonly なのはなぜなんだろう
610デフォルトの名無しさん:2006/04/13(木) 23:25:51
const だと、結局リテラルの "" と同じになって、
1つの参照をさすとは限らなくなるとか。
611デフォルトの名無しさん:2006/04/13(木) 23:29:58
>>610
>>602によると同じインスタンスらしいけど
612デフォルトの名無しさん:2006/04/13(木) 23:34:07
>>611
.NET ではそう言う実装になってるが、そうでない実装も考えて、とか?
613デフォルトの名無しさん:2006/04/14(金) 01:01:02
まあ、最適化の結果 >>610 の結果になったと言うだけの話で、
規格として保証されてないからかな。
どんな実装であっても同一の参照になることを保証しようとすると readonly になるのかな。
614デフォルトの名無しさん:2006/04/14(金) 01:10:48
constってのはリテラルと変わらんからな…
って>>610と同じこと言ってた…
615デフォルトの名無しさん:2006/04/14(金) 11:05:40
ストリームから1024バイトで分割しながら出力しているのですが、
最後の配列の内容は、最後に読み取った分+一つ前に読み取った内容
の後ろ部分になってしまいます。
buf.Initialize();で初期化しているつもりなんですが、
どこがいけないのでしょうか?

int byteSize = 1024;
byte[] buf = new byte[byteSize];
int bytesRead;
while ((bytesRead = outStream.Read(buf, 0, byteSize)) > 0)
{
Response.BinaryWrite(buf);
buf.Initialize();
}
616デフォルトの名無しさん:2006/04/14(金) 11:29:42
void バックグラウンド処理中断および中止か再開()
{
 thread.suspend();
 
 if (処理を中止しますか? == Yes)
 {
  thread.resume();←★
  thread.Abort();
  thread.Join();
 }
 else
 {
  thread.Resume();
 }
}

★でResumeしてからAbortしないと「Suspend中です」という例外が
出るので入れてみたんですが、このResumeからAbortの間に、スレッドの
中でちょこっと処理が進んでしまったりしませんか?
617デフォルトの名無しさん:2006/04/14(金) 11:48:08
>>615 Initializeってその型のコンストラクタ呼び出すだけだった希ガス
んでbyteとかのコンストラクタは空
別に0に初期化されるなんてことはない

Clearでも使うヨロシ
618デフォルトの名無しさん:2006/04/14(金) 11:50:00
>>615
Initialize の解説嫁。C# にしか言及してないが VB.NET でも同じだ。

>>616
進むかもね。
Suspend とか使うとデッドロックになりがちだぞ。
619デフォルトの名無しさん:2006/04/14(金) 11:51:12
VB.NETスレと勘違い……orz
620615:2006/04/14(金) 11:56:33
>>617
buf.Initialize()をbuf.Clear()に変えるとコンパイルエラーに
なってしまいます。
Clearの使い方が違ってるのでしょうか?
621デフォルトの名無しさん:2006/04/14(金) 12:06:15
エラーになってしまいます、じゃなくて。
エラーの中身を読もうよ。
622615:2006/04/14(金) 12:09:36
>>621
すいません。
引数を '0' 個指定できる、メソッド 'Clear' のオーバーロードはありません。
というエラーでbyteにはメソッドがないと思われます。
623デフォルトの名無しさん:2006/04/14(金) 12:11:25
そのエラーは、Clear メソッドの引数の指定が間違ってるって意味。
そう言う場合はリファレンスを見るんだ。
624615:2006/04/14(金) 12:35:13
すいません。根本的に間違ってました。
buf.Clear()ではなく、Array.Clear(buf, 0, 1024)
でクリアできているようです。
ありがとうございました。
625デフォルトの名無しさん:2006/04/14(金) 17:18:24
Dictionary<string,int> foo; があったとして
コレクション内のint型の配列を取得するのに今は、

int[] work = new int[foo.Values.Count];
foo.Values.Copyto(work,0);

とint型配列を作ってそれにコピーしていますが

もっとスマートな方法があれば、ご教授お願います。
626616:2006/04/14(金) 17:25:48
>>618
工エエェェ('д`)ェェエエ工工
デッドロックといえば、実はスレッドの終了時に終了イベントを
出していまして、それを受けたフォームがボタンのEnabledを実行前に
戻したりしているんですが、それをInvokeでやると固まってしまって、
BeginInvokeだと通ります。Suspendを抜かして速攻Abortにしたら
InvokeでもOKでした。Suspendは難しいんですね。。。
Suspend抜きでこういう「中止しますか」処理をするにはどうしたら
いいですか?
627デフォルトの名無しさん:2006/04/14(金) 17:32:19
>>625
それでいいんじゃないかな。
あえて書くなら
new List<int>(foo.Values).ToArray()
なんてのもあるけど、コピーが二回発生するし。
628デフォルトの名無しさん:2006/04/14(金) 17:35:45
>>626
スレッドを処理するメソッドが、中断フラグを随時確認するとか。
スレッド側が自分で流れを管理するようにして、外部スレッドはオブジェクトの状態を変更するだけ。
Abort とか Suspend なんて必要なし。
と言うのが良い。
629デフォルトの名無しさん:2006/04/14(金) 23:36:30
デッドロックなんて話は別にしても、
基本的に非同期に例外を発生させるようなことは避けたほうがいい。
スレッドのアボートも同様。
例外が発生するタイミングが予測できないコードを適切に記述するのは困難。
630デフォルトの名無しさん:2006/04/15(土) 00:23:14
結局544氏の質問は、547がファイナルアンサー?
631デフォルトの名無しさん:2006/04/15(土) 00:33:50
overrideすりゃ見えなくなるような気するけど・・・
632631:2006/04/15(土) 00:43:58
なんか勘違いしてる気がしてきたので気にしないで(´・ω・)

GUI関連についてはメソッドかくさんでもいい気はするけどなーということで俺は>>549
633616:2006/04/15(土) 02:36:58
>>628
ああ〜じつはVB6でDoEvents使った非同期処理を作ってるときに
そう言う書き方してました。そっかスレッドだからって同じでいいのか・・・
サンクスです。
634デフォルトの名無しさん:2006/04/15(土) 21:17:49
大規模な修正をしたい場合、プロジェクト全体を丸ごとコピーしてから
修正加えて、やっぱりやめたーってときは破棄して、また元のプロジェクトをやりたいんですけど
そういう場合どうすればいいですか?
635デフォルトの名無しさん:2006/04/15(土) 21:41:23
VSS (Visual Source Safe)、AnkhSVN、CVS から好きなものを使う。
636デフォルトの名無しさん:2006/04/15(土) 21:43:32
>>635
あらら、やっぱ専用ソフトみたいなのがいるんですねぇ
ありがとー。試してみますー。
637デフォルトの名無しさん:2006/04/15(土) 22:10:01
>>636
バージョン管理とか必要ないなら
Zipで固めといて戻したいときに削除してZip展開でいいんでない?
638デフォルトの名無しさん:2006/04/16(日) 01:46:59
くだらないとは思うんですが、
OpenFileDialog にある
RestoreDirectory なんですが
RestoreDirectory=falseが既定値ですよね

trueの方がイイと思うんですが、
理由が判る方教えてください
639636:2006/04/16(日) 01:47:47
>>637
今まではそうしてましたw
なんか、あんまかっこよくないかなぁーって思って
640デフォルトの名無しさん:2006/04/16(日) 01:59:53
>>638
Windows の標準的にもディレクトリは保存される方向だと思うのだが。
初期ディレクトリ固定したけりゃ明示的に指定すれば良いんだし。
true の方が何故良いと思ったのさ?
641デフォルトの名無しさん:2006/04/16(日) 02:09:44
falseだとカレントディレクトリまでもが変わっちゃうよ
642デフォルトの名無しさん:2006/04/16(日) 18:37:42
独習Cという本で勉強しています。
まだ if 文、else 文がでてきたあたりですが、
if の意味、else の意味のみ抑えておいて、
演習や説明文をすっとばしたい欲求にかられてしまうのですが、
やっぱりひとつひとつこなして行った方が良いのかな?
643デフォルトの名無しさん:2006/04/16(日) 18:41:02
C 言語はスレ違いだが、別にそんなの何時間もかかるもんじゃないんだから素直にこなしとけ
644デフォルトの名無しさん:2006/04/16(日) 18:44:24
>>643
レスありがとう。

C#ってまた別のもんだったのか。
スレ違い失礼しました。
645デフォルトの名無しさん:2006/04/18(火) 07:32:07
最近ようやく自作DLLを扱えるようになったのですが、dllファイルがなかったら処理を変更する場合、
普通にifでファイルがあるかないか判別してその中で処理するだけでいいんでしょうか?
646デフォルトの名無しさん:2006/04/18(火) 08:14:11
Assembly.Load とかそのへんつかえ
647645:2006/04/18(火) 22:34:08
>>646
調べてみたけどなんだかさっぱりだ・・・
もう少し本を読むなり調べるなりして使えるようにがんばります。
ありがとうございました。
648デフォルトの名無しさん:2006/04/19(水) 02:30:22
>>647
いなくなったようなので簡単な方法を教えるが、
DLLが無い場合には DLL への初回呼び出し時に例外が発生するので、
これを catch するのが簡単。
649645:2006/04/19(水) 21:23:51
>>648
|Д゚)ジーッ

そっちでも弄ってみます。
ありがとうございました。
650デフォルトの名無しさん:2006/04/20(木) 22:24:24
System.XML.Serialize.XmlSerializer()でTestクラスの連想配列を保存したいのですが、

// 普通ではできなかった
public class Test1 {
  public Dictionary<int ,string> testDict;
  public SaveClass() {
    this.testDict = new Dictionary<int ,string>();
}  }
// ぜんぜん解らないのですが、こんな事もしてみました
public class Test2 {
  public MyDictionary myDict = new MyDictionary();
  public class MyDictionary :Dictionary<int ,string>
  {
    public MyDictionary()
      : base() { }
  }
  public Test2b()
  {
    this.myDict = new MyDictionary();
}  }
651デフォルトの名無しさん:2006/04/20(木) 22:24:56
// 改行多くて書き込めなかった・・・
void Serialize() {
  using( FileStream fs = new FileStream( filePath ,FileMode.Create )) {
    // Test1での記述
    XmlSerializer xs = new XmlSerializer( Test1 );
    // Test2での記述
    Type[] types = new Type[]{ typeof( Test2.MyDictionary ) };
    XmlSerializer xs = new XmlSerializer( Test2 ,types );
    // 共通部位
    xs.Serialize( fs ,test );
}  }
これらの何れが悪いかご指摘お願いします。
少しでも良いので何か仰っていただければ、後はそれもとに気合で調べます。
652デフォルトの名無しさん:2006/04/20(木) 22:29:09
DictionaryはXMLシリアライズできないよ
っていう例外が投げられてくるはずだけど
653デフォルトの名無しさん:2006/04/20(木) 22:33:11
あ、そうだったんですか、例外出てました。
でも型の宣言とか初期化が上手くないのかな?とか思っちゃって。お手数おかけしました。
できないとわかってさっぱりしました!ありがとうございます。

とりあえずリスト2つとインデクサをつかってにせ辞書は保存できましたので、
そのまま以降と思います。
ご指摘ありがとうございました。 さっぱりした。感謝です。
654デフォルトの名無しさん:2006/04/23(日) 20:47:44
OLEでexcelを操作しようと思い、button1_Clickに次のようなコードを書きました。
参照するExcelファイル(test.xls)にはA1〜C10の各セルに適当な数値が入っています。

Excel.Application XL;
Excel._Workbook WB;
Excel._Worksheet Sheet;
Excel.Range range;

XL = new Excel.Application();
WB = XL.Workbooks.Open(@"E:\cygwin\tmp\Visual Studio Projects\ocha\bin\Debug\test.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
Excel.Sheets sheets = WB.Sheets;
Object after = sheets[sheets.Count];
Object before = System.Reflection.Missing.Value;
Excel.Worksheet sheet = (Excel.Worksheet) sheets.get_Item(1);

range = sheet.get_Range("A1", "C10");
Object[,] saRet;
saRet = (System.Object[,])range.get_Value(Missing.Value);
double x = (double) saRet[0,0];

一番最後の行で例外が発生します。(配列の境界外へのアクセス)
デバッガで見てみると、saRet[,]は確保されており、各要素にはきちんとdoubleが納められています
(saRetは、10行3列の配列になっていることが確認できます)
なぜ例外が投げられるのか分かりません。
ご指摘おねがいします。
655デフォルトの名無しさん:2006/04/23(日) 20:56:52
GetLowerBound とかしたらどうなる?
656デフォルトの名無しさん:2006/04/23(日) 21:13:41
>>655
それでした。
行も列も1から始まってました。(なんで?)

ありがとうございました。
657デフォルトの名無しさん:2006/04/26(水) 01:17:28
STLの pair<,> のようなクラスを作って使っているのですが、make_pair<,>関数のようなものを
C#で実装するのは不可能でしょうか?
配列の中でいちいち { new Pair<string, int>("Taro", 32), new Pair<string, int>("Kazuo", 14), ... }
と書いていくのが面倒なので。

ついでにSTLでいう set, multiset, multimap のようなコンテナってありますか?
658デフォルトの名無しさん:2006/04/26(水) 08:56:22
>>657
using Pair Pair<string, int>; とかしとけば?
あと、C# 3.0 を待つなら、new { new { "Taro", 32 }, new { "Kazuo", 14 } } でも OK になる。

set とかは、確か、ない。
659デフォルトの名無しさん:2006/04/26(水) 09:12:46
>>657
型推論できるのならそう言うメソッド書けば推論してくれるよ。

// のような ばっかりだね。
660デフォルトの名無しさん:2006/04/26(水) 14:24:49
質問させてくださいな。
下記の用法で使われる"[]"はなんでしょう?

/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]←--------------(・ω・)
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
661デフォルトの名無しさん:2006/04/26(水) 14:29:38
属性
662デフォルトの名無しさん:2006/04/26(水) 15:05:22
[STAThread]
=[STAThreadAttribute]
663デフォルトの名無しさん:2006/04/26(水) 17:01:26
>>661-662
ありがとう(・ω・)
664デフォルトの名無しさん:2006/04/26(水) 18:38:40
>>658-659
レスどうもです。

>>658
using にそのような使い方があるとは知りませんでした。
でもソースファイルレベルで宣言しなくてはならないのがちょっと不便ですね。

>>659
普通にC++のように宣言すればできたんですね。
書き込む前に試してみるべきでした。
どうもありがとうございました。
665デフォルトの名無しさん:2006/04/26(水) 19:47:33
DelphiからC#に入ろうと思ってるんですが、二つの差異はどのあたりにあるのでしょうか?
文法的なもの以外で

というかDelphiから入るのは間違ってますか
666デフォルトの名無しさん:2006/04/26(水) 19:49:47
設計者が同じだよ
667デフォルトの名無しさん:2006/04/26(水) 21:04:46
質問です。
DataGridViewの編集中のRow/Col、あるいはCellを取得するにはどうしたらよいでしょうか。
DataGridViewのメンバにはそれらしいものがないように見えます。
668デフォルトの名無しさん:2006/04/26(水) 21:08:21
CurrentCell でいいんじゃね?
どのタイミングで取得するのさ?
669デフォルトの名無しさん:2006/04/26(水) 21:21:43
とりあえずはEditingControlShowingイベントのタイミングで取得できれば十分です。
編集中のセルがCurrentCellと等しいというのはどんなときでも保障されているのでしょうか?
670デフォルトの名無しさん:2006/04/26(水) 21:39:20
と言うか現在のセルしか編集できない
671デフォルトの名無しさん:2006/04/26(水) 21:59:24
>>665
間違ってないと思う。
言語設計者が同じだし、ある意味Delphiの後継としても使えるし。
672669:2006/04/27(木) 06:05:26
>>670
なるほど、了解しました。
どうもありがとうございました。
673デフォルトの名無しさん:2006/04/27(木) 19:50:45
DataViewのRowFilterで使うSQLのSelectみたいな言語で
比較演算の値は¥でエスケープすると思うのですが、

..RowFilter = "ColumnName Like ’ * ¥’ * ’ ” // ※見難いので大文字空白入り
としたい場合、どのように入力すればよいのでしょう?
(シングルクォーテーションをエスケープするには)
"ColumnName Like ’ * \ ' * ' ";
でもダメですし、
"ColumnName Like ' * \ \ ' * ' ";
でもダメでした。
674デフォルトの名無しさん:2006/04/27(木) 20:15:04
>>673
> // ※見難いので大文字空白入り
よけい見づらい

シングルクォーテーションもう一つでエスケープ
675デフォルトの名無しさん:2006/04/27(木) 20:26:04
>>674
ありがとうございます。出来ました!
[[] ' []] とか試したり、結構検索してみたんですが甘かったです。
助かりました。ありがとうございました

>>よけい見づらい
失礼しました。|||orz
676デフォルトの名無しさん:2006/04/27(木) 21:01:13
673>>674
ちょっと試してみました
比較する値に関しては、

' " \ * % [ ] がエスケープする必要あり
' \ は自身で、"は\で、任意文字記号と中括弧は中括弧でくくるみたいですね。

1つ解ったおかげでいろいろ知る事が出来ました。改めてありがとう
677デフォルトの名無しさん:2006/04/27(木) 21:53:59
= @"foobar";
とかでもいいんじゃないかと思った。思っただけ。
678667:2006/04/27(木) 22:28:18
すみません、DataGridView に関してもう一度質問させてください。

セルのドロップダウンリストの内容を動的に変更したいと思っています。
そこで、EditingControlShowing イベントで e.Control as DataGridViewComboBoxEditingControl に対して
 ctrl.Items.Clear();
 ctrl.Items.AddRange(new string[] { ... } );
のように項目を追加しました。
すると、リストから選択すると「DataGridViewComboBoxCell の値が有効ではありません」とのメッセージが出るようになってしまいました。
ドロップダウンリストの内容を動的に変更するにはどうしたらよいのでしょうか?
679デフォルトの名無しさん:2006/04/27(木) 22:35:41
今までどうやってたの?
DataTable とかにバインドしてたのならそっちを書き換えれば良いわけだけど。
DataGridViewComboBoxColumn をまともにいじろうと思うと結構大変だよん。
680667:2006/04/27(木) 22:48:35
最近使い始めたばかりなのでよくわからないのですが、
ListView の拡張版くらいの感じで使おうと思っているので
データは内部にもたせようと思っています。
681デフォルトの名無しさん:2006/04/27(木) 23:28:56
内部か外部かはどうでも良いけど。
かなり面倒だよ。
取りあえず思いついたのは、
・DataTable 作成。long の ID 列と string の NAME 列を持つ。
・DataGridViewComboBoxColumn に上記の DataTable を設定。ValueMember と DisplayMember は NAME に。
・EditingControlShowing で、該当の列だった場合
 ・DateTime.Now.Ticks を取得。これを ID とする。
 ・上記の DataTable に、上記の ID と、必要な NAME を持った行を必要なだけ追加する。
 ・その DataTable を元に DataView を作成し、RowFilter で ID 列を先ほど取得した ID のみにフィルタする。
 ・e.Control を ComboBox にキャストして、DataSource をこの DataView に。
  ValueMember と DisplayMember を NAME にする。
これだけだと選択するたびに DataTable が増え放題だからなんらかの対応が必要だけど。
ID を DateTime.Now.Ticks の代わりになんか適当な識別子使うのが良いかな。
682デフォルトの名無しさん:2006/04/28(金) 02:08:13
DDE通信するCOMオブジェクトを利用するコードを
VBScriptで書いたものですが、
これをC#で実現するコードとか教えてもらえませんか?

Sub B2_onclick
 dim result
 
 Set o = CreateObject("KNDDDEML.DDEClient")
 If Not (o Is Nothing) then
  o.Initialize
  If Err.Number = 0 Then
   document.f01.T1.value = "Initialized"
   Call o.Connect("RSS", "7203.T")
   If Err.Number = 0 Then
    document.f01.T1.value = "Connected"
    result = o.Request( "銘柄名称", 1000)
    If Err.Number = 0 Then
     document.f01.T1.value = result
    else
     MsgBox "Connection failed. Error=" & Err.Number
    End if
   Else
    MsgBox "Connection failed. Error=" & Err.Number
   End if
  End if
 End if
End Sub
683デフォルトの名無しさん:2006/04/28(金) 02:34:44
COM の参照設定すりゃ多分大体直感的に使えるだろ
684667:2006/04/28(金) 05:35:00
>>681
よくわかってなくてすみません。
なかなか大変そうですね・・・。
勉強しながら少しずつ実装していきたいと思います。
どうもありがとうございました。
685デフォルトの名無しさん:2006/04/28(金) 13:33:18
C#.NETでアプリケーションのウィンドウクラス名を変更したいのですが
どのようにすればよいのでしょうか?
686デフォルトの名無しさん:2006/04/28(金) 13:38:36
なんでそんなことしたいのかさっぱり分からんが、
ttp://azumaya.s53.xrea.com/index.php?page=doc/dotnet/originalclassname
687685:2006/04/28(金) 13:59:02
>>686
ありがとうございます。

ウィンドウクラス名を固定にすることはできないのでしょうか?
"WindowsForms10.{クラス名}.appX"
appXのXが起動毎に変わらないようにしたいのです。
688デフォルトの名無しさん:2006/04/28(金) 15:06:27
無理だと思うよ
689682:2006/04/28(金) 16:54:26
>>683
どうも。

ExcelをCOM登録して起動するMSのサンプルを参考に、
登録したCOMをnewして変数に入れてみると
Initialize、Connect、Requestが出てきました。
どんなクラス?メソッド?があるか分からなくてもなんとかなりそうです。
確かVS6からだったと思いますが、ほんとすごい開発環境ですね。
690682:2006/04/29(土) 06:34:01
textBox1.Text = (string)dataGridView1[0, 0].Value;

これでセルのデータを取得するだけで半日調べまくった。
掲示板では丸カッコ使ってるのが多くって。

こことか。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28164&forum=7&11
>そんなわけで、Me.DataGridView1([行], [列]).Style.ForeColor = Color.Red
>などとすれば、他の行や列の Style も変更可能です。
691デフォルトの名無しさん:2006/04/29(土) 08:02:28
C#とVBの区別もつかんのか
692682:2006/04/29(土) 08:32:20
>>691
うん。無理。
693デフォルトの名無しさん:2006/04/29(土) 10:42:49
>掲示板では丸カッコ使ってるのが多くって。
わろた
694デフォルトの名無しさん:2006/04/30(日) 11:44:41
MSDNにはoutキーワードは[Out]属性に対応すると書いてあるのに、
デリゲートのパラメータではoutと[Out]は同一にみなされないのが気になるんだけど
695デフォルトの名無しさん:2006/04/30(日) 12:19:47
別物だもの。
out は呼び出し先で値が代入されることを表す、参照渡しを意味するキーワード。
OutAttribute は呼び出し先で値の中身が書き換えられることを表す、参照が渡ったときにしか意味がないキーワード。
OutAttribute の MSDN の解説は間違い紙一重だね。
696デフォルトの名無しさん:2006/04/30(日) 13:04:25
なるほど。同じではないんですね。ありがとう。
697デフォルトの名無しさん:2006/04/30(日) 15:10:23
C#に限った事ではないと思いますし、初歩の初歩なのですが、
ある例外があった際、try catch で処理するのと自前で処理するのは
理想、思想、効率的などにはどちらが良いのでしょうか?
例えば、string数値をintに変換したい場合など、

try { intNum = Int32.Parse( strNum ); }
catch( System.FormatException ) { // 無視 }
と、try catch するかそれとも自前で
foreach( cahr c in strNum ) {
if( Char.IsNumber( c ) )
blnIsNum = false;
} if( blnIsNum ) { intNum = Int32.Parse( strNum ) };
// 実際にはローマ数字とか問題ありますが。

一長一短だとは思うのですが、基本的にはみたいな考え方と聞いてみたいんです。
698デフォルトの名無しさん:2006/04/30(日) 15:12:14
あ、すみません、自分の今の考えかいてなかったです。
今はなるべくtry catchは控えています。なんだか対処療法みたいな感じでなので。
なるべく根本敵に排他したりしています。
699デフォルトの名無しさん:2006/04/30(日) 15:19:50
そこで TryParse、と梯子を外してみる。

Parse ならともかく、そうでないなら事前に値チェックするのが基本、と言うのが
どっかの掲示板の決着点だったと思う。
でもたとえばファイルのオープンとかは事前に存在チェックした上で try-catch しなきゃなんないし。
700デフォルトの名無しさん:2006/04/30(日) 15:30:18
パーズ可能な文字列が入力される確率を弄りながら
Parse と TryParse の速度比較をするためのプログラムが
WinFX のサンプルにあったとおも
701デフォルトの名無しさん:2006/04/30(日) 15:45:19
>>699
はっきりした例外はともかく、基本的にはチェック、
それでも必要なときはやっぱりある。
ケースバイケースというか。。。
ともかくすごく参考になりました。ありがとうございます。
>>700
情報ありがとうございます。ちょっと検索してみます。

事前にチェックするか、例外が少ないなら後にするか、
条件によって全然異なりますよね。
経験によるものも多いと思います。とにかく書いていろいろ
勉強していきたいと思います。

どちら様もありがとうございました。大変参考になり勉強になりました。
702デフォルトの名無しさん:2006/04/30(日) 16:22:46
TryParseが使えるならこれ使えばいいでそ。
使えないなら知らんが…
703デフォルトの名無しさん:2006/04/30(日) 16:35:15
>>701
tryは呼び出し側に設置、呼び出され側はthrowを返すのが基本
ユーザーから数字を受ける場合はregexを判定すればいい
704デフォルトの名無しさん:2006/04/30(日) 17:02:47
正規表現で有効な数値を正しく判定するのは存外骨なんだよな
705デフォルトの名無しさん:2006/04/30(日) 17:08:20
>>702,703
ご進言ありがとうございます
>>702
Parseがどうとかではなくて、例外に対して基本的に try catchすべきか
どうかという事でした。例が悪くてすみませんでした。
>>703
具体的な対処法お知らせ頂いてありがとうございます。
これまで正規表現などは余り利用していなかったので
これからちょくちょく使っていこうと思います。
706デフォルトの名無しさん:2006/04/30(日) 18:57:01
C#で、DataSetから上位5件を取り出す場合、
SQL Serverの(Transact-SQL)とかOracleならできるらしいと分かりましたが、
C#で盛り込まれたというLINQではできないでしょうか?

SQLにはこだわらないので、類似のことをするコードがあれば紹介してください。
707デフォルトの名無しさん:2006/04/30(日) 19:53:32
LINQ はまだ preview だが。C#3.0で取り込まれる予定。

DataView つかってソートして、
DataTable を元の DataTable から Clone でスキーマとってきて、
ソート済み DataView から先頭 5 つの行を ImportRow 。
とかどう?
708706:2006/04/30(日) 20:31:48
>>707
2005版はまだC#3になってなかったんですか。

件数が少ないかDataGridViewが速ければ簡単で良い方法なんですが。
DataGridViewが遅いから、DataSetからなん通りかのランキングだけを
画面に出そうと思ったんで、その方法はいただけないですね。
ソートは単独でなん通りかでやるんで、ソート済み配列も無駄だし。

データは常に更新するんで、データを更新するときにランキングのリストに反映するのがよさそうです。
ランキングは過去のデータからの変動率が関係するから、ランク外のデータも持っておく必要はあるんですが。
709デフォルトの名無しさん:2006/04/30(日) 20:36:09
DataView と DataGridView をごっちゃにすんじゃねぇ
710706:2006/04/30(日) 20:38:12
>>707
試しに二つめのDataGridViewを作って同じDataSetを指定してみたらできました。
ありがとうございました。

自分でソートとかの処理なしに、一つのDataSetに持っておくだけでそれぞれにランキングを表示できました。

BindingSourceが同じだと操作もリンクしてしまいましたが、
BindingSourceを別にしておけば単独で動作しました。

>>709
それぞれあるんですか?よく分からなくて。
711デフォルトの名無しさん:2006/05/01(月) 10:03:30
あせんぶりばーじょん

ふぁいるばーじょん

違いって何でしょうか?
712デフォルトの名無しさん:2006/05/01(月) 18:03:10
コンソールアプリケーションを統合環境で実行したときに、
最後にウインドウを閉じない方法はないでしょうか。
最後に、ブレークポイント設定する方法もありますが面倒です・・・。
713デフォルトの名無しさん:2006/05/01(月) 18:04:28
Console.ReadLine();
でも仕込んどけ
714デフォルトの名無しさん:2006/05/01(月) 22:52:50
マルチスレッドのlockステートメントなんですが、
ロック対象のオブジェクトに属する下位のオブジェクトも含まれるのでしょうか?
具体的にはDataTableをロックした場合、DataTableが持つDataRowのValueオブジェクト
もロックされるのでしょうか。

MSDNでlockステートメントを読んでみたんですが、ちょっと確信が持てなくて。
誘導先などでもお知らせ頂ければ幸いです。
715デフォルトの名無しさん:2006/05/01(月) 23:24:54
そんなときはテストしてみるんだ

public class B {
   public C C = new C();
}
public class C {
   public long count;
}
public class A {
   public B B = new B();

   const int count = 10000000; // 負荷が軽いならもっと増やす
   static A a = new A();
   static void Hoge() {
      for (int i = 0; i < count; i++) {
         lock(a) { a.B.C.count++; }
         //a.B.C.count++;
      }
   }
   [STAThread] unsafe public static void Main() {
      Thread t = new Thread(new ThreadStart(Hoge));
      t.Start();
      Hoge();
      t.Join();
      Debug.WriteLine(a.B.C.count);
   }
}
716デフォルトの名無しさん:2006/05/02(火) 00:06:49
つうかlockをちゃんと理解してるか?
717デフォルトの名無しさん:2006/05/02(火) 00:08:51
しかもテストになってねーだろ。
718デフォルトの名無しさん:2006/05/02(火) 00:11:15
結論だけいうなら、ロックされない。
719デフォルトの名無しさん:2006/05/02(火) 00:16:41
>>715-717
テストしました!自分でも>>715さんを参考にしてテストしてみたところ、
ロックした場合書き込む際、きちんと待ってから書き込んだようです。
ありがとうございました。
>>716
恥ずかしながら理解していません。
オブジェクトの状態を保持するという事でしたので、
もしかしたらDataTableをロックした場合、Rowの参照アドレスの値を保障していて
参照先のオブジェクトが保持する値までは保障されないのかなとか思ったんです。
実際にはきちんとロックしてくれたようです。

愚問だったと思いますが、付き合って頂きありがとうございました。
720デフォルトの名無しさん:2006/05/02(火) 00:19:34
>>718
え・・・ あれ? あ、書き込んだからロックされてないのか
どうもかなりお馬鹿さんでした・・・

みなさん感謝です。

もう一度しっかり理解する為にもテストをしっかり作って確かめて
理解してみたいと思います。
721デフォルトの名無しさん:2006/05/02(火) 00:29:32
ロックってのは、他のスレッドからアクセスできなくするものではない。

全てのスレッドのうち、特定のオブジェクトのロックを獲得できるのは
ひとつのスレッドだけ。これが基本、かつこれがすべて。

>>715のテストでは、ロックしてる対象のオブジェクトは唯一のa。
aのロックを同時に獲得できるのは1スレッドだけだから、
当然排他処理になる。

でも、これはaオブジェクトの内部のオブジェクトを
ロックしていることにはならない(ていうかしていない)。
722デフォルトの名無しさん:2006/05/02(火) 00:40:05
あ、言い忘れたけど、参照先のオブジェクトがロックされないからって
それがまずいわけじゃない。
論理的な排他範囲を明確にして、その中での代表オブジェクトを
ロックするようにすれば十分。
>>715だとaにあたる。
だから>>715はテストにはなってないけど
使い方としては特別おかしいわけではない。
723デフォルトの名無しさん:2006/05/02(火) 00:48:01
>>721
ご教授ほんとうにありがとうございました。
>>715さんのテストでは、aを排他しているだけで、結果的にロックされている様に
見えるが、実際には内部オブジェクトはロックされていないのですね。

本当に勉強になりました。
>>715-722さん本当にありがとうございました。
724デフォルトの名無しさん:2006/05/02(火) 00:48:41
あ、またアホな書き方を・・
オブジェクトじゃなくてコードをロックしているんですね。
725デフォルトの名無しさん:2006/05/02(火) 00:52:39
>オブジェクトじゃなくてコードをロックしているんですね。
いや言葉的にはオブジェクトをロックするの方が普通の言い方だと思うが、
ただ、実動作的にはコード(というかスレッド)をロックするという
感覚のほうが近いかもしれん。

ただし、このコードというのが、上記プログラム上のaという意味で
書いてるならそれはちがうぞ。
それならまだオブジェクトをロックのほうがいい。
726デフォルトの名無しさん:2006/05/02(火) 01:04:09
>>725
感覚としては lock( obj ) と示されるように、オブジェクトのロックと感じていいのですね。

まだまだ勉強不足で抽象的な知識と具体的な知識が大幅にかけています。
もっと勉強して頑張って行きたいと思います。

最後まで面倒見て頂いて本当に申し訳ありません。
でもすごくためになりました。本当にありがとうございました。
727デフォルトの名無しさん:2006/05/02(火) 03:01:32
個人的には
オブジェクトのロックを取得する、ロックを獲得する、ロックを要求する
って表現が、感覚的に実態をよくあらわしていて分かりやすい。
というか誤解されにくい表現だと思う。
728デフォルトの名無しさん:2006/05/02(火) 17:44:30
double d = 1 / 2;
とやってもd=0.0になってしまいますが、この式何か問題ありますか?
729デフォルトの名無しさん:2006/05/02(火) 17:45:33
1 も 2 も int なので演算結果も int
730デフォルトの名無しさん:2006/05/02(火) 17:46:12
>>728
整数 / 整数 は 整数 になるんじゃね?

だから、
 double d = 1.0 / 2;

 double d = 1 / 2.0;
でいいんじゃね?
731デフォルトの名無しさん:2006/05/02(火) 17:51:03
double d = 1d / 2d;
でもいいのかな
732デフォルトの名無しさん:2006/05/02(火) 18:02:25
レスありがとうございます。
皆さんの言うとおりでした。
733デフォルトの名無しさん:2006/05/02(火) 18:25:33
ListViewなどだとデザイナ上で、Itemsプロパティをコレクションエディタを用い編集できますよね。
これに必要な準備というのは、どんなことをすればよいのでしょうか?

CustomItemを定義し、ICollection<CustomItem>, IList<CustomItem>を実装したCustomCollectionを
CustomControlに持たし、Itemsプロパティを定義したのですか、これでは不足か間違っているようです。

どうかご教授お願いします。
734デフォルトの名無しさん:2006/05/02(火) 19:58:35
1/2・・ひさびさになごむ質問を見た。
735デフォルトの名無しさん:2006/05/02(火) 20:26:20
>>733
そのプロパティに System.ComponentModel.EditorAttribute 属性を付加する。
EditorAttribute 属性の引数には typeof(System.ComponentModel.Design.CollectionEditor) と typeof(System.Drawing.Design.UITypeEditor) を与える。
コレクションの要素が特殊なら、CollectionEditor の代わりにその派生クラスを独自に作成する必要があるかも知れない。
736デフォルトの名無しさん:2006/05/02(火) 21:08:57
>>733
CollectionBaseの継承
737デフォルトの名無しさん:2006/05/02(火) 23:32:09
>>735-736
お二方、回答どうもありがとうございます。
CollectionEditorの派生クラスを作らないといけないようで、
難しそうですが、なんとかなりそうです。
738デフォルトの名無しさん:2006/05/03(水) 00:22:36
2005ExpressってCollectionEditorないよね?
ComponentModelもない・・・
739デフォルトの名無しさん:2006/05/03(水) 00:26:11
へ?
740738:2006/05/03(水) 00:29:31
キーワードで探してもないの・・><
741デフォルトの名無しさん:2006/05/03(水) 00:35:01
ComponentModel は名前空間の一部だから、それだけでは引っかからないだろうけど。
742733,737:2006/05/03(水) 00:43:24
自分もそこでつまずいてちょっと焦ったけど、
System.Designを参照するといいよ。
743738:2006/05/03(水) 01:05:33
ソリューションエクスプローラで参照設定でSystem.Disignを追加しても

using System.

って入力してもDesignって文字が出てこにゃい><

ヘルプにもない死・・・・

もう、だめにゃん><無料ではダメみたいにゃん><
744デフォルトの名無しさん:2006/05/03(水) 01:08:54
いや、System.Design なんて名前空間もクラスも存在しないが……
745デフォルトの名無しさん:2006/05/03(水) 01:10:13
ヘルプは .NET 2.0 SDK を入れれば多分大丈夫
VC#2005 Exp. だけだと確か不完全だったはず
746738:2006/05/03(水) 01:12:27
>>744
System.ComponentModel.Designってのがあったけど
やっぱり、このネームスペースのメンバ情報とか全然にゃい

>>745
それで試してみるにゃん。情報ありがとにゃん。
747738:2006/05/03(水) 01:18:05
って・・・すでに無料版落とす時に一緒に落としてインストール済みにゃん・・・>2.0 SDK
みんなのはちゃんとヘルプで見れるの?

うう・・・マイクロソフトのばかぁ・・・
748デフォルトの名無しさん:2006/05/03(水) 01:19:38
どうでもいいがにゃはよせキモウザい
749733,737:2006/05/03(水) 01:35:06
>>738

自分も2005Expressなんだが、
System.Designの参照追加、System.ComponentModel.Design.CollectionEditorで本当にできないのか?

ttp://msdn2.microsoft.com/ja-jp/library/system.componentmodel.design.collectioneditor(VS.80).aspx
750738:2006/05/03(水) 01:40:07
>>749
ヘルプがないとダメなの!
ネットのヘルプだと遅いにゃん
ローカルヘルプになんでComponentModelがないの?
マイクロソフトのばか!
751デフォルトの名無しさん:2006/05/03(水) 12:22:11
ローカルヘルプも死ぬほど遅いわけだが……
752デフォルトの名無しさん:2006/05/03(水) 12:30:44
ベータの時のに比べりゃ天国だぜ
753デフォルトの名無しさん:2006/05/03(水) 13:13:16
Helpを見るとよくわからんインストーラが起動するorz
2ページに1回出て激しくウザい。
しかたなくOperaでWebのMSDNを見る始末。下の階層にいくと左のフレームだけで1MB越え。IDEより重い。
754デフォルトの名無しさん:2006/05/03(水) 13:15:19
ていうか SDK 入れ直せ。
755デフォルトの名無しさん:2006/05/03(水) 14:36:54
OperaだとMSDNちゃんと表示されない…
ビルゲイツのアホ
756デフォルトの名無しさん:2006/05/03(水) 15:42:50
ゲイツのバカ
757デフォルトの名無しさん:2006/05/03(水) 16:32:41
>>755
(´・ω・)人(・ω・` )
758デフォルトの名無しさん:2006/05/03(水) 19:09:11
Q) Helpを見るとよくわからんインストーラが起動するのですが?
A) 面倒ですがインストーラで修復、再インストールしてください。
  インストーラの情報が壊れているのが原因です。
  今後はレジストリ操作系のソフト(Officeの情報まで壊してしまうソフトあり)
  はなるべく使わない。あるいは慎重に手動で操作する。
  また、これとは別にファイルも手動でいじったりしないように。
759デフォルトの名無しさん:2006/05/03(水) 19:40:24
ちょっと気になったんですが描画の時に使う Pen や Brush や StringFormat などのオブジェクトも
使い終わったら Dispose しないとまずいんでしょうか。
ふと気づいたらそういったものをまったく Dispose していなかったもので・・・
760デフォルトの名無しさん:2006/05/03(水) 19:59:27
>>759
できる奴はしたほうがいいけど、できないものはDisposeのメソッドがないはず
まあ、しなくても勝手にしてくれたりするし気にしなくてもいい
761デフォルトの名無しさん:2006/05/03(水) 20:02:03
頻繁に呼ばれるようなものなら Dispose しないとまずいだろね
で Paint イベントは頻繁に呼ばれるのに入るだろうなぁ
762デフォルトの名無しさん:2006/05/03(水) 20:32:39
なるほど、どうもありがとうございます。
Brushes.XXX 系のと new SolidBrush(...) 系のものが入り混じってるのでかなり億劫です・・・
必ずしも必須というわけではないんですね。
気が向いたら修正することにします。
763デフォルトの名無しさん:2006/05/03(水) 20:53:00
かくしてリークしまくりアプリがまたひとつ
764デフォルトの名無しさん:2006/05/03(水) 21:00:15
今時高性能PCでメモリリークなんて気にするほどでもない
765デフォルトの名無しさん:2006/05/03(水) 21:08:21
この場合はメモリじゃなくてその他のリソースだろう
766デフォルトの名無しさん:2006/05/03(水) 21:36:23
リソースってなんだよ
日本語でしゃべれよ
767706:2006/05/03(水) 21:39:34
濃口醤油
768デフォルトの名無しさん:2006/05/04(木) 01:23:52
李宋守 (り そうす・1273?〜1349・元)

南宋の武人の家に生まれる
幼い頃より兵法を学び、天賦の才から来る洗練された用兵を行ったことで有名
宋守の用兵は人馬のみならず大自然のあらゆる要素を複雑に計算し尽くしたものであり、その緻密な戦術は地球シミュレータですら打ち破れない
この宋守の功績は遥かユダヤにも及び、その末裔が携わったコンピュータシステムであらゆる要素を表す言葉として「リソース」が使われるようになった

民名書房刊「魂の秘より得るもの多し」より
769デフォルトの名無しさん:2006/05/04(木) 04:12:37
マルチスレッドを使わずにウィンドウプロシージャを多重実行する方法ってありますか?
マルチスレッドはできたんですが、1スレッドに1MBも使っちゃってて、
できればそれを300個作りたいんでもうちょっと省メモリでいけないかと思うんですが。
770デフォルトの名無しさん:2006/05/04(木) 04:27:40
ウィンドウプロシージャを多重実行? 300?
状況がさっぱり分からんから答えようもないな
771769:2006/05/04(木) 08:49:09
>>770
マルチスレッドでメモリ食い過ぎなんで・・・
でも、Threadの引数でスタックを指定できてましにはなりました。


ところで、DataGridViewにリンクしたDataSetのデータアクセスが遅いので、
更新をコピーしたDataSetに対してやってて、たまに戻してやりたいんですが、
セル一個ずつしかコピーできなくて、しかもめちゃめちゃ遅いんですが、どうにかなりませんか?
.Copy()を入れようとしても、互換性がないとか言われるし。
772デフォルトの名無しさん:2006/05/04(木) 10:05:43
>>769
18めっけ
773769:2006/05/04(木) 10:43:08
とりあえず全データを消して追加し直したら驚くほど速かったです。(約1秒)
ただ、ユーザーが変更したデータをすぐにコピーにも反映させておかないと、
データは眺めるだけになっちゃいますね。

testDataSet.RSSTABLE.Clear();

testDataSet.RSSTABLE.Rows.Add(dsCollect.RSSTABLE.Rows[i].ItemArray);
774769:2006/05/04(木) 13:22:44
一応レコード単位でのコピー方法(20秒)も書いておきます。
testDataSet.RSSTABLE.Rows[i].ItemArray = dsCollect.RSSTABLE.Rows[i].ItemArray;

レコード単位とかまとめてコピーしようとして気付いたのが、
DBから持ってきたDataSetは、上記で言えばtestDataSet型になってて
型互換がなかったことですね。驚きました。

testDataSet型にしたらテーブル名もtestDataSet.Tables[0].Rowsから
testDataSet.QTABLE.Rowsて感じでテーブル名が使えてなるほどだった。

最初めちゃめちゃお手軽だったけど、やっぱいろいろ不満で手を加えていくと、
やっぱりDB読み込みからデータ操作、画面はそれぞれしっかり設計して
コーディングしないとだめだと思いました。
でも、最初にほとんどコーディングしなくても動いたからその後も続けられたんですよね。
775769:2006/05/04(木) 13:44:05
C#って、Cで書いたダイヤログウィンドウプロシージャみたいにできますか?
やっぱFormクラスみたいなpublic partial classを作ればいいんですかね?
776デフォルトの名無しさん:2006/05/04(木) 13:45:23
>>758
もう一度VSを入れ直しましたが、やはりインストーラが起動してしまいますorz
777デフォルトの名無しさん:2006/05/04(木) 14:06:18
>>776
昔、C:\Documents and Settings\ユーザー\Local Settings\Temp の下を
綺麗に掃除したら直ったこともあった。
778769:2006/05/04(木) 14:13:45
NativeWindow クラス
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.nativewindow.aspx

これ使ったらC#のみで直接DDE通信できたりできますか?
779デフォルトの名無しさん:2006/05/04(木) 14:23:18
>>774
>型互換がなかったことですね。驚きました。
どんなDBから生成してるか知らんけど、普通はDataSetを継承した型だと思うが、
DataSetにキャストすればいいだけのような気がする。
あとそのDBから持ってきたDataSetは、DBの制約なんかもそのまま持ってきてると思うので、Addなんかが遅くなる。
780デフォルトの名無しさん:2006/05/04(木) 16:06:29
>>774
基本的にデータはstruc型に格納して、それに対して操作(検索、削除、追加)する
ListViewやDataGridはあくまで表示させるためだと言う風に割り切ると処理が速い
removeやAddを直接Datasetで扱うと非常に処理が遅い
加工したデータはAddRangeでdatasetに追加
ユーザーが項目を削除したのを反映する場合も一旦すべてのアイテムをClearしてからAddRangeで追加したほうが速い
781769:2006/05/04(木) 16:13:48
>>780
structですか。検討してみます。
DataSetなら集計とか便利な機能がついてるかなとか、
DBとリンクするからDB更新とかも簡単かなとか思ったんですが・・・・

WindowMessageのセットの仕方は分かりました。
あとはどうやってDDE鯖に送るか・・・
C# クリップボードへコピーpublic static Message Create (
IntPtr hWnd,
int msg,
IntPtr wparam,
IntPtr lparam
)
782デフォルトの名無しさん:2006/05/04(木) 16:16:55
>>781
便利だけど、今のPCの現状じゃ処理重いんだよな
783デフォルトの名無しさん:2006/05/04(木) 16:56:04
>>781
いまさらDDEより、IPCチャネルのリモーティングじゃダメなん?
784769:2006/05/04(木) 22:50:47
>>782
あの重さはまるで10年前のパソコンのようですよね。
実際動かすまで、ちょっと想像できませんでした。


PInvoke を使用してマネージ コードからネイティブ DLL を呼び出す
User32.dll をインポートしてSendMessageを使うのか・・・

>>783
相手がDDEなんで。NetDDEでもないDDEなんで。
785デフォルトの名無しさん:2006/05/05(金) 00:30:51
つか DDE にはなんか COM 作って公開してるのがあったぞ
このスレでも出てたはずだが
786769:2006/05/05(金) 00:45:32
>>785
ラクテンショウケン(←nazeかカナにしか変換されない)のRSSでそれを使うと、
違う銘柄のデータを受け取ろうとすると初期化しちゃって
1件に0.1秒くらいかかってしまうんです。
その時間をなくすために1スレッド1件の接続にすると120件で40MB消費します。
しかも、そのCOMコンポーネントの制約で127件までしか使えず、
RSSの制限の300と比較して少なすぎます。

結局RSSと効率よく通信するには専用の部品を作るか自分でDDE通信するしかありません。
787769:2006/05/05(金) 00:54:18
Initializeを10回やれば銘柄切り替えても問題なかったりするかな?
788デフォルトの名無しさん:2006/05/05(金) 01:12:16
Form1のツリービューの内容をForm2のツリービューに反映?させるには
どうしたら良いのでしょうか。
やりたいイメージはOutlookExpressでツリーのところ右クリックして
フォルダの作成を選んだときになんか出てきて場所を選べるやつです。
789デフォルトの名無しさん:2006/05/05(金) 01:16:53
なんか出てきて場所を選べるやつ。わかりやすすぎて涙が出そうだ。

然るべきイベントで然るべき処理を書けばいいよ。
790デフォルトの名無しさん:2006/05/05(金) 01:41:50
.NET Framework 2.0 SDKでC#を始めようとしているんですが、
ネット上のサンプルとかが上手くコンパイルされません。

Form1とかButton2とかは使用できないんですか?
791デフォルトの名無しさん:2006/05/05(金) 01:44:09
>>790
.NET Framework のバージョンが違うとそのままコンパイルできないよ
792デフォルトの名無しさん:2006/05/05(金) 01:48:52
ソースコードレベルでは後方互換性はほぼ確保されているが。
サンプルというのがどんなのか分からんし。
どうやってコンパイルしているのかも分からんし。
793デフォルトの名無しさん:2006/05/05(金) 01:53:12
>>790
推測だけど、Nunit使ったテスト駆動とかかな?
794デフォルトの名無しさん:2006/05/05(金) 01:55:25
僕のおしりからも場所を選ばずになんか出てきます。ちなみに右クリックはしてません。
795790:2006/05/05(金) 02:53:03
>>794>>790

Form Form1 = new Form();

ってやったらあっさり解決してしまいました。
俺が見たサンプルの真意はわかりませんがとりあえず何とかなりました。
796デフォルトの名無しさん:2006/05/05(金) 02:56:56
というかそのサンプルというの教えてくれんか
797788:2006/05/05(金) 03:20:44
getitemを使うのでしょうか?



798デフォルトの名無しさん:2006/05/05(金) 03:22:34
何の話か全く分からんのでもっと詳細に説明しろ
特に*具体的に何が*分からんのかを
799sage:2006/05/05(金) 03:42:38
あwせdrftgyふじこlp;@
800sage:2006/05/05(金) 04:11:16
private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
ここに何を入れるか分かりません。
}
801788:2006/05/05(金) 04:13:49
↑自体が見当違いかもしれないですね。
2回も間違えてすみません。
802デフォルトの名無しさん:2006/05/05(金) 04:29:37
ちょっと説明下手すぎてどうにもならないので諦めます。
ありがとうございました。
803デフォルトの名無しさん:2006/05/05(金) 04:57:01
ま、それならそれで良いけどな。

・何をしたいのか
 ・〜〜みたいな、は使わない
 例:ContextMenuStrip で右クリックメニューを出すとき、イメージ表示領域を消したい。
・何をしたのか
 ・コードをずらずら書かない。書くなら必要最小限
 例:ContextMenuStrip の ShowImageMargin を false にしたら一階層目は消えた。
・何が駄目なのか
 ・エラーメッセージがあるなら書く
 例:しかし二階層目以降が消えない。解決方法はないか。

サンプルは最近本スレであがった質問だが。
804デフォルトの名無しさん:2006/05/05(金) 16:26:40
魚おおおおおおおおおおおおおおおおおおお
説明できねえええええええええええええええ

・したいこと
別のフォーム間でコントロールを参照したい?
言い方が分かりません

・Form1とForm2があります
Form1にTreeView,contextmenuを配置
Form2(フォルダの作成ダイアログ)にTextBoxとtreeViewを配置

Form1のTreeViewを右クリック→contextmenuからフォルダの作成を選択→
Form2が出ます。

そこで出たForm2のTreeViewにForm1のTrEeViewの中身を表示したいです。
分かりにくかったらすみません。おねがいします。

805デフォルトの名無しさん:2006/05/05(金) 16:39:12
TreeView の中身って具体的には何よ。
たとえば Form1.TreeView1 の選択されているノード以下のツリー構造を Form2.TreeView2 で表示したいとか。
806769:2006/05/05(金) 18:49:59
>>804
2つのTreeViewに同じ内容で表示したいわけ?
807デフォルトの名無しさん:2006/05/05(金) 21:00:02
Form2でTreeViewを表示するのに必要なデータを
何らかの型でForm2のコンストラクタ引数として渡す

つーか両方にTreeViewって設計間違ってない?
808804:2006/05/05(金) 22:47:56
>>805
中身は全てのノードです。
選択されているかいないか関係なく全部です。

>>806
2つのTreeViewに同じ内容で表示したいです。

>>807
>つーか両方にTreeViewって設計間違ってない?

そうなんですか?!普通はどのように設計するのでしょうか?
表示したいのはアプリケーション内で作ったフォルダなので、
FolderBrowserDialogは使えないと思ったので、こういう風に
したのですが…

みなさんありがとうございます。


809デフォルトの名無しさん:2006/05/05(金) 23:03:29
同じ物を表示する意味ってどこにあるんだ?

取りあえずそれを実現するだけなら >>807 の言う通り、
各トップレベルノードをそれぞれ Clone した配列を、
Form2 のコンストラクタとか自作の Show のオーバーロードとかに渡してやればいいんだが。
810804:2006/05/06(土) 00:20:26
コンストラクタとかデストラクタとかオーバーロードとか難しすぎです・・・
>>809さんの言うように、わざわざダイアログ出さなくていい気がしてきたので
この使用はやめようと思います。
OEを参考にしてソフトを作っていたので、なんかこだわりすぎました。
右クリックでダイアログを出さず、直接その場所にフォルダを作ることにします。

アドバイスしてもらったのにすみません

811デフォルトの名無しさん:2006/05/06(土) 12:37:45
http://lab.msdn.microsoft.com/express/vcsharp/quicktour/CSharpExpress/Lessons/CSharp2005Express/Exercise1CreatingaUserInterface/Exercise1CreatingaUserInterface.htm
ここのProjectの名前を入力するところで
名前を入力できません
マウスのポインタの形は変わるのですが
クリックしても文字を入力する事ができません
812デフォルトの名無しさん:2006/05/06(土) 12:48:50
目に見えないだけなので、クリックして MyNotePad 入力すれば OK
813769:2006/05/06(土) 13:41:40
そうそう。
心の目で見ることも大切ですよ。パソコンは。
814デフォルトの名無しさん:2006/05/06(土) 18:40:23
ポインタって何ですか?
815デフォルトの名無しさん:2006/05/06(土) 18:52:18
816デフォルトの名無しさん:2006/05/06(土) 19:09:40
大雑把に言えば、C# には関係ない物。
817デフォルトの名無しさん:2006/05/06(土) 19:12:24
unsafe で関係あるだろ。
818デフォルトの名無しさん:2006/05/06(土) 19:13:49
ファイルポインタ
819デフォルトの名無しさん:2006/05/06(土) 19:14:39
だから大雑把にって言ってるじゃん
820デフォルトの名無しさん:2006/05/06(土) 19:32:45
大雑把杉
821デフォルトの名無しさん:2006/05/06(土) 23:24:51
>>814
参照


とは微妙に違うが
822デフォルトの名無しさん:2006/05/06(土) 23:26:51
C++/CLIだと、ハンドル型として区別されてるね
823デフォルトの名無しさん:2006/05/10(水) 01:06:25
みんな連休明けでまだ本格稼働していないのか
連休中働いて代休消化中なのか
代休なんてもらえずに働きづめで書き込む気力もないのか知らんが
明日も何もないよい一日でありますように。
824デフォルトの名無しさん:2006/05/10(水) 02:29:47
仕事もないし、希望も無い
825デフォルトの名無しさん:2006/05/10(水) 11:18:34
時間はある
826デフォルトの名無しさん:2006/05/10(水) 11:29:30
クリック
827デフォルトの名無しさん:2006/05/10(水) 11:43:05
フォームのマウスイベントを無視して
重なった下のウィンドウやデスクトップを操作できるようにしたいのですが、
どうしたらいいでしょうか?
828デフォルトの名無しさん:2006/05/10(水) 16:16:52
まずその設計をなんとかしてみる
829デフォルトの名無しさん:2006/05/10(水) 18:15:35
C#でファイラを作ろうと思うのですが、C++のシェルと同等の機能は.netではないのでしょうか。
ex)ゴミ箱等の特殊なフォルダの表示、ファイルの実行など
またひどく初歩的な質問なのですが、javaから移行してきたせいか例外のthrowsがないことがとても不安に感じます。
上級者の方々はどのように例外を処理してますか?
830デフォルトの名無しさん:2006/05/10(水) 18:23:47
>>829
ある程度はあるが、ある程度以上はないな。
//「C++ のシェル」が意味分からんが。

> またひどく初歩的な質問なのですが、javaから移行してきたせいか例外のthrowsがないことがとても不安に感じます。
> 上級者の方々はどのように例外を処理してますか?
どうせ処理しきれない例外なら Application.ThreadException で纏めて処理。
831デフォルトの名無しさん:2006/05/10(水) 18:25:02
.NET C#でウィザード形式のアプリケーションを作りたいんですが、どうすれば良いですか?
832デフォルトの名無しさん:2006/05/10(水) 18:27:45
>>829
・特殊なフォルダはP/Invoke
・ファイルの実行は Process.Start()
833デフォルトの名無しさん:2006/05/10(水) 18:30:54
>>831
そう言う風に作る。
834829:2006/05/10(水) 18:43:51
>>830
最近までC++を使うつもりだったので思わず付けてしまいました。

> どうせ処理しきれない例外なら Application.ThreadException で纏めて処理。
そうですか、例外の処理はJavaよりもC/C++に近い感じですね。

>>832
細かい処理はシェルを使わないとだめですか。
835デフォルトの名無しさん:2006/05/10(水) 18:54:17
>>833
その最初の一歩が分からないのです……
ウィザード形式でないふつうのアプリならwindowsフォームの追加で
作れるんですが
836デフォルトの名無しさん:2006/05/10(水) 19:10:46
つっても「普通のアプリ」と変わらんし
ウィンドウの遷移なら ApplicationContext でも使うとか
837デフォルトの名無しさん:2006/05/10(水) 19:54:19
>>835
単純に固定位置でボタン押してフォーム切り替えていくだけでないの?
838デフォルトの名無しさん:2006/05/10(水) 21:06:43
>>834
次の質問を予想:複数ファイルのプロパティ画面をだすのってどうやるんですか?
839デフォルトの名無しさん:2006/05/10(水) 21:43:02
WindowsFormのCheckboxをプログラムからチャックをはずすにはどうすればいいでしょうか?
840デフォルトの名無しさん:2006/05/10(水) 21:47:34
チャックを外すのは難しいな
チェックなら、チェックが付いてるか確認するプロパティが実は
841デフォルトの名無しさん:2006/05/10(水) 21:58:56
×チャックをはずす
○チャックをあける

chuck.opened=true;
842デフォルトの名無しさん:2006/05/10(水) 22:02:44
最近C言語始めました。開発の環境にLSIC86を使って教科書通りにやっているのですが、コンパイルしようとすると lccは操作可能なバッチファイルとして認識されていません と表示されます どうしたらいいのでしょう… 助けて下さい。
843デフォルトの名無しさん:2006/05/10(水) 22:07:42
スレ違い
844デフォルトの名無しさん:2006/05/10(水) 22:07:57
スレ違いです
845デフォルトの名無しさん:2006/05/10(水) 22:08:28
ケコン
846839:2006/05/10(水) 22:23:03
>>840
難しいですか。Checkbox辞めて別の方法試します。
ありがとうございました。
847デフォルトの名無しさん:2006/05/10(水) 22:32:20
>>846
ネタじゃなかったの?
checkBox.Checked = false;




最後に釣られたか?
848デフォルトの名無しさん:2006/05/10(水) 23:46:36
C言語をある程度勉強していたのですが、C#とつながることがあるのでしょうか?
ちょっとやり始めた感じだと、全く違う言語のように見えるのですが・・・

あと、まっさらな状況でやるのだったらJAVAとどちらが将来性がありますか?
849デフォルトの名無しさん:2006/05/11(木) 00:04:07
>>848
C# は C の孫。
世代違うけど、血族。
血筋自体違うほかの言語一度覗いてみ。

Java と C# 比べると、俺の感覚では将来的には C# 有利だと思う。
(ただ、このスレでその質問すれば C# よりの返事が返ってきて当たり前だと思ってね。)
どうも、世界的に見るとすでに C# 有利っぽい感じだけど、
日本では携帯アプリのおかげか Java が健闘してて、
現状はまだちょっと Java 有利かも。
850デフォルトの名無しさん:2006/05/11(木) 00:08:50
Form1 form = new Form1();
form.Show();
のようにモードレスのフォームを表示しているのですが、
Show()のときに非アクティブなまま表示するにはどうしたらよいのでしょうか?
851デフォルトの名無しさん:2006/05/11(木) 00:16:26
任意のPath文字列またはUriが、
ファイルかディレクトリを示しているのかを調べるにはどうすればいいでしょう?
852デフォルトの名無しさん:2006/05/11(木) 00:46:08
厳密に調べたいなら実際に問い合わせるしかあるまい。
853デフォルトの名無しさん:2006/05/11(木) 01:24:03
>>852 回答ありがとうございます。

実際に問い合わせるとは、
new DirectoryInfo(path)をやってみて例外を投げたら、今度はFileInfo〜ということでしょうか?
これだと、もし同じファイル名とディレクトリ名があった場合駄目じゃ…。
と思ったら、そういうことは出来ないようになっているんですね。プログラム以前の問題でした。
854デフォルトの名無しさん:2006/05/11(木) 01:25:55
あ、よく考えたらDirectory.Exists(path)、File〜でもいいや
スレ汚しすみませんでした。
855デフォルトの名無しさん:2006/05/11(木) 01:36:33
>>850
Win32API の ShowWindow 使う必要がある
856デフォルトの名無しさん:2006/05/11(木) 03:10:46
>>848,849
将来の就職意識してとかでなく、趣味でプログラム組むんだったら、Windowsでだけ
動けばよいソフトを作るのか、そうでないのかで決めればよかろ。
とはいえ、Microsoft&Windowsが3年後・5年後も安泰だったら、C#選んで問題ない
と思うけど、将来どうなるかはわからんもんなー。
857デフォルトの名無しさん:2006/05/11(木) 04:22:25
858デフォルトの名無しさん:2006/05/11(木) 11:13:29
>>848
基本はC#もJavaも似たようなものだから両方やっときゃ無問題。
文法が多少違うぐらいだし。
859846:2006/05/11(木) 11:45:22
>>847
>checkBox.Checked = false;

え、そんな簡単な方法で良かったの?
切り替えスイッチ作っちゃったよ。

ネタじゃなかったのに・・・ ネタじゃなかったのに・・・ ネタじゃなかったのに・・・・・・・・・ orz
860デフォルトの名無しさん:2006/05/11(木) 11:50:31
840 が一応答えてたのに……
861デフォルトの名無しさん:2006/05/11(木) 11:53:07
僕のチャックも外されそうです
862850:2006/05/11(木) 14:41:38
>>855
そうなんですか。それに関するソースってないでしょうか。
863デフォルトの名無しさん:2006/05/11(木) 16:47:21
[DllImport( "user32.dll" )]
private static extern bool ShowWindow( IntPtr hWnd, int nCmdShow );

private void button1_Click( object sender, EventArgs e )
{
 Form2 form2 = new Form2();

 IntPtr p = form2.Handle;

 ShowWindow( p,8 );
 //this.BringToFront();
}

864850:2006/05/11(木) 17:50:27
>>863
できました。
それにしても何でこんなことがAPI使わないとできないんだろ。
865デフォルトの名無しさん:2006/05/11(木) 17:53:37
>>864
普通そういうことは想定されてないから、だと思うが。
866デフォルトの名無しさん:2006/05/11(木) 18:29:40
if (User.Identity.Name == null)
と書いたら、NullRefernceExceptionが出ます。
nullのチェック方法がまちがっているのでしょうか?
867デフォルトの名無しさん:2006/05/11(木) 18:33:16
User.Identity が null なんだろ
User が null なんかもしれんが
868デフォルトの名無しさん:2006/05/11(木) 18:36:30
>867

その通りでした。
2時間くらい悩んでいました。。
あなたは神です。
ありがとうございます。
869デフォルトの名無しさん:2006/05/11(木) 22:28:36
>>864
アンマネージドもマネージドもAPI
.NETはまだOSの全機能を網羅していないだけ
870デフォルトの名無しさん:2006/05/12(金) 01:53:05
>>864
WinFormsの基本設計のせいかな
Visibleプロパティ遷移にパラメータなんてないから。

んーむ、SetVisibleCoreあたりにパラメータつけてShowを
オーバーロードしたらよかったね>MS。今更無理だが
871デフォルトの名無しさん:2006/05/12(金) 12:10:32
DirectoryInfo.GetDirectories()でディレクトリを取得したんだが、
この並び順はどっからもってきてるんだろう。

文字コード順かと思うと微妙にエクスプローラーの並び順とは違うし、
かといって日付とも違う。取得時に並び替えのオプションなんてあったか?
872デフォルトの名無しさん:2006/05/12(金) 12:28:59
FindFirstFile で見つかった順。
どういう順かはファイルシステムによる。
NTFS なら文字順(文字コードとは別の基準)。
873デフォルトの名無しさん:2006/05/12(金) 15:03:45
>>872
なるほど。ありがとん。
じゃ、いちいちソートしてやんないといけないね。( ゚Д゚)マンドクセー
874デフォルトの名無しさん:2006/05/13(土) 14:39:43
ASP.NETでページ内のテキストボックスをすべてクリアするメソッドを作ろうと
しているのですが,どのように実装していいのかわかりません。一応,次のよう
作ってみましたが,「 'System.Web.UI.Control' に 'Text' の定義がありません。」
というエラーが出てしまい,コンパイルできません。

TextBoxにキャストすれば,うまくいくと思ったのですが,どうも,ダメなようです。
なお,このメソッドはClearAll(this)にような形で使う予定です。

よろしくお願いします。

public void ClearAll(Control parent)
{
foreach (Control c in parent.Controls)
{
if (c.HasControls())
{
ClearAll(c);
}
if (c is TextBox)
{
(TextBox)c.Text = String.Empty; // ここでエラー
}
}
}
875デフォルトの名無しさん:2006/05/13(土) 14:46:06
クライアントサイドのスクリプトでクリアした方が良いと思うんだがなぁ……

> (TextBox)c.Text = String.Empty; // ここでエラー
c.Text を TextBox にキャストする、になるぞ、これだと。
876デフォルトの名無しさん:2006/05/13(土) 14:53:30
C#とVBのどちらか始めようと思うのだけど、どっちがいいと思う?
仕事があるかないかという視点で判定をお願いします。
877デフォルトの名無しさん:2006/05/13(土) 15:01:18
日本では圧倒的に VB 。
まあ .NET 案件そのものが大して無いけどな。
878デフォルトの名無しさん:2006/05/13(土) 15:08:48
世界的にはC#なの?
以前、MS社のC#開発者のインタヴュー記事を読んだのだけど、
アメリカではVB使用者が減ってるって言っていた。
879デフォルトの名無しさん:2006/05/13(土) 15:15:41
一概には言えないが参考資料、Google Trends
ttp://www.google.com/trends?q=C%23,VB%7CVB.NET&ctab=1&sa=N

日本はまだまだ旧VB/VBAの需要が大きい
880デフォルトの名無しさん:2006/05/13(土) 15:28:56
>>875
確かにそういうのはクライアントサイドの方がいいよね

要するに
((TextBox)c).Text = String.Empty;
って書くんじゃないの?>>874
881デフォルトの名無しさん:2006/05/13(土) 15:34:47
>>874
List<TextBox>に全部つっこんどいてforeachでまわしたら?
882874:2006/05/13(土) 15:39:49
>>880

レスサンクス。その通りでした。どうもありがとうございます。
883デフォルトの名無しさん:2006/05/13(土) 19:03:03
.netのリファレンスみにくいんだよ!
あるコントロールのメンバの一覧表示するなら、せめて一般的に使われそうなメンバと、
ただ継承されただけのメンバを分離して表示しろよ。
884デフォルトの名無しさん:2006/05/13(土) 19:41:04
>>883
継承(のみの)メンバ含むかどうかとかチェックボックスですぐに
切り替えられるんだけど何が不満?
885デフォルトの名無しさん:2006/05/13(土) 20:10:29
>>884
その態度が...
886デフォルトの名無しさん:2006/05/13(土) 20:33:13
>>884
オフラインならな
887デフォルトの名無しさん:2006/05/13(土) 20:54:20
>>884
継承元の大事なメンバも表示されずイライラする
888デフォルトの名無しさん:2006/05/13(土) 22:11:49
>>887
何が大事かなんて主観やし。
最小機能ならCompact Frameworkでもみたら?
889デフォルトの名無しさん:2006/05/13(土) 22:26:54
JavaAPIリファレンスなんかに比べたら遥かに見やすいと思う
890デフォルトの名無しさん:2006/05/13(土) 23:03:30
できればメソッドやプロパティの型くらいは一覧でも出てくれると助かる。
ただまあオーバーロードの場合にどうかってのもあるしな…
総評としてはそこそこ見やすいとは思うんだけどね。
891デフォルトの名無しさん:2006/05/14(日) 02:19:03
Webのほうは仕方ないにしろローカルの方は起動遅すぎ。
これなんとかしてほしい
892デフォルトの名無しさん:2006/05/14(日) 02:39:47
>>891
フォームの読み込みに時間がかかるけど
処理速度は他の言語よりもダントツ早い
てのがC#じゃなかったっけ?
893デフォルトの名無しさん:2006/05/14(日) 02:45:49
>>892
いやドキュメントのことです。すんません
894デフォルトの名無しさん:2006/05/14(日) 13:04:38
>>892
Managed C++より遅い
895デフォルトの名無しさん:2006/05/14(日) 13:09:48
Managed C++ で C# のような使い方をしたら大差がないか逆に遅くなるんじゃないかな
896デフォルトの名無しさん:2006/05/14(日) 14:42:16
確かに起動は異様に重いってか表示も結構重い。
これはなんとかしてほしいなあ。
897デフォルトの名無しさん:2006/05/14(日) 15:52:17
遅いって言ってる人って、どんな環境?
自分ので、WinXP・P4の2.26・メモリ1Gで、ハードディスクは
5400rpmでちょっと遅め。この環境だと、特に起動が遅いとか、
動作が遅いとかいう事はそんなに感じないんだけど。まあ、
走らせるものの大きさにも影響されるだろうけど。
後、常駐ものが動いてるから、.Net Frameworkの初期読み
込みの時間が節約できてるのかもしれない。
898デフォルトの名無しさん:2006/05/14(日) 16:07:22
>>897
だから問題は初回起動と描画の遅さだって。
899デフォルトの名無しさん:2006/05/14(日) 16:31:16
>>898
だな、明らかに遅い。高速起動パッチ当てたらマシになったけど
900デフォルトの名無しさん:2006/05/14(日) 17:23:45
>>899
詳しく
901デフォルトの名無しさん:2006/05/14(日) 17:29:55
902デフォルトの名無しさん:2006/05/14(日) 17:43:42
単に ngen するだけの糞ツールだろ
宣伝してんじゃねえよ
903デフォルトの名無しさん:2006/05/14(日) 17:44:11
パッチじゃないし
904デフォルトの名無しさん:2006/05/14(日) 18:58:00
ngen使うと動作が遅くなるらしいけど
905デフォルトの名無しさん:2006/05/14(日) 19:01:26
>>904
遅くなる場合もある
906デフォルトの名無しさん:2006/05/14(日) 19:03:49
>>904
>>905
詳しく
907デフォルトの名無しさん:2006/05/14(日) 19:07:23
あ、でもngen1.0はイマイチだったけど2.0はとても優秀だよ。
だから >>904 は心配しなくていい。
908デフォルトの名無しさん:2006/05/14(日) 20:21:54
ぶっちゃけ速度は大して変わらない
ngen をする手間の分だけ無駄になるだけ
909デフォルトの名無しさん:2006/05/14(日) 20:31:59
>>908
動作速度は知らないけど起動速度はかなり改善されるぽいよ
ちょっと ngen 使ってない場合と使った場合測定してみたら
顕著なところでは 平均 80→20ms な箇所と 50→0ms な箇所があった
910909:2006/05/14(日) 20:33:26
てか起動直後とはいえアセンブリロードしたあとの処理だから動作速度か。
911デフォルトの名無しさん:2006/05/14(日) 20:42:21
結論

Frameworkはウンコ
912デフォルトの名無しさん:2006/05/14(日) 20:47:09
結論

>>911はウンコ
913デフォルトの名無しさん:2006/05/14(日) 20:47:13
万能じゃないだけで確かに速くなる。
914デフォルトの名無しさん:2006/05/14(日) 21:15:36
>>912はウンコのスーパークラス
915デフォルトの名無しさん:2006/05/14(日) 21:15:49
こんばんは。質問させてくださいな。
VC#2005を使ったアプリで、http通信を用いてとあるPHPをたたき、
その処理が終了したことを検知したいのですがどうすればよろしいでしょうか。

申し訳ありませんが
1)PHPの軌道の仕方
2)処理終了の検出
の二つに分けてヒントを教えていただければと思います。
よろしくお願いします。
916デフォルトの名無しさん:2006/05/14(日) 21:17:11
>>915
APIでやったほうが早い
917デフォルトの名無しさん:2006/05/14(日) 21:28:18
>>916
レスありがとうございます。
ただ、もそっと詳しく教えていただければ…。
「2)処理終了の検出」をAPIを用いて取得するのでしょうか。
918デフォルトの名無しさん:2006/05/14(日) 21:29:23
これからはFedoreCore5+Mono-C#の時代だね。
Javaの時代は終わりつつある。
919デフォルトの名無しさん:2006/05/14(日) 21:43:37
>>917
教えてあげないよ!ジャン♪
920デフォルトの名無しさん:2006/05/14(日) 22:26:08
>>915
構成がよく分からんのだが。
http ってことはリモートサーバの Web アプリ?
それなら HttpWebRequest とかで良いが。
921デフォルトの名無しさん:2006/05/14(日) 22:38:13
>顕著なところでは 平均 80→20ms な箇所と 50→0ms な箇所があった
ぜんぜんうれしくない。
その箇所が100個とかあって軌道が数秒以上変わるんなら別だが。
922デフォルトの名無しさん:2006/05/14(日) 22:38:47
>>920
レスありがとうございます。

処理の目的は、DBのデータをCSVに書き出して、それをローカル側に取得することです。
(サーバ:RedHatEE+PostgreSQL クライアント:WinXP + VS2005)
サーバにはhttp経由でしかアクセス出来ないので、DBのストアドプロシージャをキックする
PHPを作成して、それをクライアントから叩こうかと思ったのです。

上記を満たすようなことがHttpWebRequestを用いれば実現出来るでしょうか。
923デフォルトの名無しさん:2006/05/14(日) 22:43:15
HttpWebRequestって何か分かってる?
924デフォルトの名無しさん:2006/05/14(日) 22:50:10
>>923
今調べました。
GetResponse()を使えば、PHPが処理終了時に返す値を取得することができそうですね。
925デフォルトの名無しさん:2006/05/14(日) 22:51:46
.Netで作った常駐アプリをスタートアップに登録して、常に走らせとけば
.Net Frameworkの読み込み時間分起動速くなるんでねえの?
926デフォルトの名無しさん:2006/05/14(日) 22:58:57
>>925
天才
927デフォルトの名無しさん:2006/05/14(日) 23:00:24
タイムスリップ気分をありがとう
928デフォルトの名無しさん:2006/05/15(月) 00:10:14
>>921
それはあくまで顕著な部分であって、他の部分も総合的に速くなってるよ
800ms 程度かかってた起動時間が 500ms 程度になった。
929デフォルトの名無しさん:2006/05/15(月) 21:08:56
800msと500msの違いなんてあってないようなもの
930デフォルトの名無しさん:2006/05/15(月) 21:49:10
脳経由の反応速度が0.3秒だしね
931デフォルトの名無しさん:2006/05/15(月) 23:54:39
んなわきゃない。
932デフォルトの名無しさん:2006/05/16(火) 00:57:34
OpenFileDialog()でファイルを開くときに画像のプレビューを行いたいのですが
.NETでコモンダイアログボックスの拡張は出来るのでしょうか?

http://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/chtml/chtml.cgi?key=comdlg1
Win32SDKでの実例はあるみたいなのですが。。。
933デフォルトの名無しさん:2006/05/16(火) 01:01:23
OpenFileDialog を使う限り不可能。何故か sealed だからな。
FileDialog もコンストラクタが internal なので拡張不可能。
DllImport 駆使して自前で書くしかないな。
codeproject とかの集積所に誰か既に書いたのがあるかも知れないけど。
934デフォルトの名無しさん:2006/05/16(火) 09:08:27
            _,,,-ー、_,,..                  り 発 あ
           ,," _、、..._   ヲ、_                 近 射 り  オ
          イttv'-‐-、弋   ゙`、_,,._            づ す  丶 チ
          i(.)(.)ノ  ト  ヾミ、 う             き  る そ ン
          | レ'、レ'レ'  { 、_    ゙~=、_       た  丶 .こ チ
     _,,     |       i゙ ー三~__,,,....,,,r-、、     く  .と .か ン
    ,->_,(((、 ̄'ー.| {{・}} _,,." ,r"~ ̄  _(((_ ァ''"ー- 、 な  い ら が
  / / i \~゙ー-、ト'' ヽ" _,,.、,'' イ r-''"~ /  i ヽ   _,ゝい う  火 3
 /  ノ  t   ,,..  〉゙`'"~  . 丿 ノ _/ /  ノ   て~  妖 あ 炎 つ
/     `t  (  ,`{  ⌒ヽ    {   ノ    /^ー'     怪 ま を  も
⌒ヽ    rr( i !、ノー-、 `      )   _/⌒ー'        。
   し'⌒ー`{ ( ヾ}  ( ( ( ノ-‐   i'_/  
        `i_j〜´,r'ソ'ソソ'ヽ    }_,、_,-、  
          r"ソ/ r"ソ  `ヽ  ' _}}} .{
         , ''"r"ソ,'"    `-'" {  j
        r"ソ ,''"rソ         ''`゙'
     : .、 ''" rソ '" , ''
    \从、仆从,'// , '
935デフォルトの名無しさん:2006/05/16(火) 09:42:01

 パシャッ    パシャッ
    パシャッ
       ∧_∧ パシャッ   
 パシャッ (   )】Σ
.      /  /┘   パシャッ
     ノ ̄ゝ
936デフォルトの名無しさん:2006/05/16(火) 11:13:05

 __[警]
  (  ) ('A`)
  (  )Vノ )
   | |  | |
937デフォルトの名無しさん:2006/05/16(火) 21:40:22
Socketを使ってFTPサーバーからテキストファイルをダウンロードするプログラムを組みました。
(組んだというより本を見ながら書いたという感じですが・・・。)

byte[] bb = new byte[256];

for (; (count = socket.Receive(bb)) > 0; )
{
tempS = Encoding.ASCII.GetString(bb, 0, count);
output += tempS;
if (socket.Available == 0)
{
break;
}
}

こんな感じで256バイトずつ読み込んでいるのですが、最後まで読み込まないうちにSocketに
データがなくなってしまいます。
600kくらいのデータなのに半分くらいしかダウンロードできません。

しかも、うまく行くときもあれば行かないときもあり、50kダウンロードできるときもあれば
400kダウンロードできるときもあります。

で、何を聞きたいかというとどうやってデバッグすればいいのでしょうか?
コードは何度も見直しましたがどうしてもわかりません。
938デフォルトの名無しさん:2006/05/16(火) 21:48:32
読み込み処理に、転送が追いついてないんだろう。
Available == 0 なのはバッファが空と言うだけの意味であってそれ以上転送されないと言う意味ではないからな。
Read の返値が終了条件、で良いはずだ。

ところで何故 while じゃなくて for なんだ?
939デフォルトの名無しさん:2006/05/16(火) 21:59:12
>>937
たぶん承知してるとは思うんだけど、マルチバイトのエンコーディングの場合は
少なくとも行区切りまでためてから GetString する必要があって結構面倒。

ここは素直に StringReader 使うのが吉。
940デフォルトの名無しさん:2006/05/16(火) 22:10:59
StreamReader の誤字?

しかしネットワークストリームに対して StreamReader 使うのは個人的にどうも信用おけないんだよな。
途中でぶち切られるような気がして。

マニアックだが Decoder クラスを使う手があるぞ。
これなら勝手に泣き別れをバッファしてくれる。
941939:2006/05/16(火) 22:24:16
まー漏れも実は自前で改行探したりしてるけど。
DoS 攻撃とか考えると、1行は1024バイトまでしか読まないとか自分で制御したいし。
942937:2006/05/16(火) 23:08:54
>>938
なるほど。読み出せないからといってもう全部読み込んだというわけではないのですね。
読み込めるまで待つのが正解ということですね。

あと、なぜwhileじゃないのかというと、お恥ずかしながら「本にそう書いてあった」というのが正直なところ。
理解した部分は自分なりに応用したりして書き換えてますが、問題無い部分はそのまま流用してたりします。


StreemReaderとDecoderクラスも調べてみます。
ありがとうございました。

#解決できなかったのでユーザーに「別のソフトでファイルをダウンロードして、ダウンロードしたファイルを読み込んでください」とか言ってごまかしてました・・・。これでボタン一つで処理してもらえるようになるかもしれません。感謝します。
943デフォルトの名無しさん:2006/05/17(水) 00:32:50
つかASCIIエンコーディングとか使ってるから関係ないんでね?

944デフォルトの名無しさん:2006/05/17(水) 22:16:46
NumericUpDown みたいなやつの矢印だけのコントロールで矢印が左右向いてる
やつってないんですか?
ようするにmsctls_updown32の横向きで作りたいんですが
UpDownBaseにもそれらしいプロパティがないですし
945デフォルトの名無しさん:2006/05/19(金) 00:18:37
this.listView1 = new ListView();
これでフォームのリストビューが
新規に生成したリストビューに代わるかと思ったら変化なし。なぜ?
946デフォルトの名無しさん:2006/05/19(金) 00:23:55
フィールドにセットしただけで入れ替わったらびっくりだ。
947デフォルトの名無しさん:2006/05/19(金) 00:25:10
実際に表示してるのは Controls プロパティに格納されている ListView 。
で、this.listView1 に新しいインスタンスを代入すると、
元々は一致していた this.listView1 と Controls 内の ListView が別インスタンスを指すことになる。
948945:2006/05/19(金) 00:39:43
根本的な部分で激しく間違えてた。深夜に速攻をありがとう。
949デフォルトの名無しさん:2006/05/20(土) 17:19:59
3ペインのアプリケーションを作っています。
ツリービューからマイドキュメントなどのフォルダを選んで、リストビューに
そのフォルダの内容を表示します。リストビューで選択した項目を
axwebbrowserに表示したいです(表示したいものはhtmのファイル)。

緑のバイクのコードを参考にして下記のコードを記述しています。

private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
//ブラウザに表示する
object o = null ;
string my_url = "c:\\Documents and Settings\\Owner\\My Documents\\HomepageDesigner\\index.htm";
axWebBrowser1.Navigate(my_url, ref o, ref o, ref o, ref o) ;
}

このコードでリストビューの項目を選択したらaxwebbrowserに表示させること
はできました。

これを選択したアイテムを表示されるようにするにはどのへんにどのような
コードを記述すればいいでしょうか。
950949:2006/05/20(土) 17:24:34
なんか日本語おかしかったかも
上記のコードではいつでもindex.htmが表示されるのを→その選択している項目
が表示されるようにしたいのですが・・・
951949:2006/05/20(土) 17:40:37
すみません。できました。
宇宙仮面のC#さんからとってきたステータスバーにファイル名までのフルパス
を表示させるコードをstring my_url = のところにそのまま貼り付けたら
できました。でもそのコードでは違う項目を選択したらエラーになるし
同じ内容を2回記述していて変なのでもうちょっと修正します。
すみませんでした。
952デフォルトの名無しさん:2006/05/20(土) 19:40:58
既製のコマンドラインのプログラムに対するラッパー的なフロントエンドのプログラムを
作りたいと思っています。その手のプログラムを組むに当たって初心者向けの解説サイト
というのはございますか?
953デフォルトの名無しさん:2006/05/20(土) 20:00:02
無いんじゃね?
954952:2006/05/20(土) 20:02:28
。・゚・(ノД`)・゚・。
955デフォルトの名無しさん:2006/05/20(土) 20:30:23
>>952
その手もなにもGUIだけ作ればいいんじゃない?
956952:2006/05/20(土) 20:34:53
>>955
たとえばどうパラメータをコマンドラインプログラムの引数として渡してやるかとか、
コマンドラインプログラムを実行した結果生じるステータスをどうしたら知ることができるのかな
と思いまして・・・
957デフォルトの名無しさん:2006/05/20(土) 20:42:43
そんなの悩むもんじゃないからな
958952:2006/05/20(土) 21:32:40
( ´・ω・)・・・
959デフォルトの名無しさん:2006/05/20(土) 21:47:27
>>958
Process.StandardOutput でぐぐる。
960952:2006/05/20(土) 22:14:02
>>959
> Process.StandardOutput

便利な関数ありがとうございます。
以下のような複数行からなる返り値も余すことなく拾いたかったところなんですよ( ´∀`)

C:\temp>hoge.exe
rep Run = LIVE
status ok
C:\temp>
961デフォルトの名無しさん:2006/05/20(土) 23:30:54
>>960
関数じゃなくてプロパティ。まずは基礎を…。
962952:2006/05/21(日) 03:04:57
あ、プロパティでしたか、こりゃ失敬(*´∀`)

ところで実際のコマンドラインプログラムの振る舞いをもう少し詳細に説明しますと、

C:\temp>hoge.exe
rep Run = LIVE
status ok

の状態で止まっているんです。しかも二行目、status okが表示されるまでそこそこの
時間がかかります。このプログラムを抜け、プロンプトに戻るためにはCtrl + Cを押さな
ければなりません。

C:\temp>hoge.exe
rep Run = LIVE
status ok
^c
C:\temp>

このようなコマンドラインプログラムでも2行目の
status ok
まですべての出力を余すことなく拾うことはできますか?
963デフォルトの名無しさん:2006/05/21(日) 03:11:49
WaitForExit
つーか、ドキュメント、読め、ハゲ。
964952:2006/05/21(日) 03:25:55
>>963
> WaitForExit

どうもです。WaitForExitというのはプログラムが終了するまで待ってろと言う意味ですね。
ということはこの場合、明示的にCtrl + Cを押してやらない限りいつまでたっても

rep Run = LIVE
status ok

の文字列は読み込めないということですね?
できることならCtrl + Cを押す前の待機中の状態でも読みたかったんですが・・・。
と、言いますのも、
status ok
の部分次第ではさらに新しい命令を続けて打ち込む必要があるので・・・。
965デフォルトの名無しさん:2006/05/21(日) 05:40:53
自分で簡易サイドバーみたいなものをつくりたいのですが、
タスクバーみたいに画面の領域を占拠?するにはどうしたらいいんでしょうか?
966デフォルトの名無しさん:2006/05/21(日) 12:44:49
>>964
お前は死んだ方が良いと思うよ
967デフォルトの名無しさん:2006/05/21(日) 13:02:07
>>965
簡単で良いのなら、Screen クラスを使えばデスクトップの範囲を取得できるので
それを元に Form の位置サイズを調整すればいい。
TopMost にしとけば隠れることもない。他のウィンドウが後ろに行ってしまうけどな。

本格的にやるのなら、大変面倒。
MSDN で Taskbar の仕様を調べるところから。
// Band Objects でいいのかな?
968デフォルトの名無しさん:2006/05/21(日) 17:38:25
C#の#ってどんな意味をこめているのですか?

あげて、質問いたします。
969デフォルトの名無しさん:2006/05/21(日) 17:41:22
C++++
970デフォルトの名無しさん:2006/05/21(日) 17:46:46
そういえばC++ってどうして++Cにしなかったんだろうね?
971デフォルトの名無しさん:2006/05/21(日) 17:51:57
++CだとCに仕様を追加した格好になる
C++だとこれから仕様を追加する格好になる
したがって、C++にはこれからみんなでCを使いやすくしようという意味が込められている
972952:2006/05/21(日) 19:55:00
う〜ん、やはり

C:\temp>hoge.exe
rep Run = LIVE
status ok

hoge.exeプロセスが生きている間は
Console.WriteLine(p.StandardOutput.ReadToEnd());
を実行しても文字列は拾えませんね。
というか、

C:\temp>hoge.exe
rep Run = LIVE
status ok
^c
C:\temp>

Ctrl + Cをかけた後でなければ途中の文字列は拾えません。
でもそれだとプログラムが終了してしまうのでアクションが取れなくなってしまうんですよね(´・ω・`)

C:\temp>hoge.exe
rep Run = LIVE
status ok

プログラムの実行中でもまずここまで読んで、
その上で

C:\temp>hoge.exe
rep Run = LIVE
status ok
set Text = test
という風にさらにコマンドを実行したいんですが・・・
973デフォルトの名無しさん:2006/05/21(日) 20:00:36
ヒント:別スレッド
974952:2006/05/21(日) 20:03:44
いやでも、C#に関する、質問なんですが(;´Д`)・・・
975デフォルトの名無しさん:2006/05/21(日) 20:07:43
釣られてもいいですか?
976デフォルトの名無しさん:2006/05/21(日) 20:08:58
952は凄腕の釣り師だなw
977952:2006/05/21(日) 20:12:13
(´・ω・`)ショボーン
978デフォルトの名無しさん:2006/05/21(日) 20:14:12
>>977
別スレッドをスレ違いと読み違えたのはおそらくネタなんだろうが、
それでもお前は基礎から勉強した方が良いぞ
979デフォルトの名無しさん:2006/05/21(日) 20:15:30
System.Threading.Thread と言えばいいか?

しかしまあこの場合の問題は別だな。
冷静に考えろ、ReadToEnd() ってことは終わりまで読むんだよな。
終わりって何だ?
980デフォルトの名無しさん:2006/05/21(日) 20:17:00
>>967
ありがとうございます、本格的な方ですねorz

ざっと見た感じでは
VisualStyleElement.Taskbar
でしょうか?
981952:2006/05/21(日) 20:26:35
>>978
> 別スレッドをスレ違いと読み違えたのはおそらくネタなんだろうが
>>979
> System.Threading.Thread と言えばいいか?

Σ(´Д`; )!

(´・ω:::::.....

そういう意味でしたか。ありがとうございます。

> 「結論から言えば、スレッドは起動するな。」と予め言っておく、
> スレッドを起動しないでも別スレッドで処理を実行する方法はある。
> 別スレッドで処理をするという事の説明の前段階であり、
> これを見て喜んでスレッドを起動しないでほしい。
ttp://www.ailight.jp/blog/kazuk/articles/6281.aspx

結構鬼門そうなテクニックですね。
ちょっと調べてみます。
982デフォルトの名無しさん:2006/05/21(日) 20:30:20
>>980
SHAppBarMessage()
983952:2006/05/22(月) 00:07:10
スレッドに関して調べてみました。
ですがどうも自分のやりたいことと違うような気もするのですが・・・

C:\temp>hoge.exe
rep Run = LIVE
status ok

hoge.exeを実行し、任意の時間ののち status ok の表示でプログラムが停止しているとします。
この表示が出されたことを確認した上でさらに続けてコマンドを入力していくわけですが、

C:\temp>hoge.exe
rep Run = LIVE
status ok
set Text = test

別スレッドでこれをやるとなるとまた他のプロセスでhoge.exeを実行することになり
連続性が失われてしまいます。あくまでも最初に動かしたhoge.exeに続けてコマンドを
入力していきたいのですが、それでも別スレッドを立てて実行した方がいいのでしょうか?
984デフォルトの名無しさん:2006/05/22(月) 00:10:21
985デフォルトの名無しさん:2006/05/22(月) 00:14:25
もう帰れ
986952:2006/05/22(月) 00:17:25
>>979
> しかしまあこの場合の問題は別だな。
> 冷静に考えろ、ReadToEnd() ってことは終わりまで読むんだよな。
> 終わりって何だ?

つまりプログラムが終わらない限りReadToEnd()は全く読んでくれないということですね。
そして肝心のhoge.exeを終了させるにはCtrl + Cをかけなければならないと( ´・ω・)・・・
987デフォルトの名無しさん:2006/05/22(月) 00:22:11
で、StandardOutput である StreamReader には読み込むのに ReadToEnd しか用意されてないってのか?
988952:2006/05/22(月) 02:23:08
>>987
そういえばReadToEnd()だけでなく、ReadLine()というメソッドもありましたね(*´∀`)
ただ一度にではなく、不定期に現れてくる文をどう拾ってやるかという問題がありますね。
文が現れたときに読み込んでくれるようなメソッドがあれば便利なんですが・・・
989952:2006/05/22(月) 03:35:57
いや、ReadLine()で出来ました(*´∀`)・・・
990デフォルトの名無しさん:2006/05/22(月) 03:43:28
こんばんわ。
mhtmlを使わずにHTMLのタグを取得したいのですがつまずいてしまいました。

1object htm;
2type typ ;
3string docbody;

4    typ = Type.GetTypeFromProgID("mhtmlfile") ;
5    htm = axWebBrowser2.Document ;
6docbody = typ.InvokeMember("title",BindingFlags.GetProperty, null, htm, null).ToString();
7textBox1.Text=("" + docbody);

上記のソースを記述しています。
タグの全てを表示したいのですが、うまくいきません。
とりあえず6行目の"title"できちんとHTMLで書かれたTITLEが表示されるのですが、
全体を表示しようとするとうまくいきません。
他のHPなどを参考に"title"の部分を"body"とか"outerHTML"とか"documentElement"に
変えてみたんですが、エラーが出ます。
どなたかご教授いただければと思います。

991デフォルトの名無しさん:2006/05/22(月) 07:59:02
せめてエラーとやらの内容ぐらい書け。
992デフォルトの名無しさん:2006/05/22(月) 09:38:17
c#8.0,win2000です
FrameWork2.0から追加されたWebBrowserコントロールを使って
ページが読み込まれるまで待ってからページのDocumentに対
して操作したいのですが
WebBrowser.IsBusyプロパティを使った判定の仕方がわかりません

private void button1_Click(object sender, EvebtArgs e)
{
WebBrowser wb = new WebBrowser();
wb.Navigate("http://www.google.com");

//ここでwbがページ読み込み中かどうか判定したい
while(wb.IsBusy)
{

}
//ここに来た時点でページの読み込みは完了しているはず
//しかし wb.Document.GetElementById("xx");などとすると
//System.NullReferenceException例外が起こる
//ステップイン実行してみるとwhile(wb.IsBusy)のループを
//一度も回っていない
}
993デフォルトの名無しさん:2006/05/22(月) 10:16:55
そういうのってDocumentCompletedイベントでやるべきでは?
994992:2006/05/22(月) 10:49:15
ありがとうございます
やってみましたが駄目でした
bool b = false;

private void button1_Click(object sender, EvebtArgs e)
{
WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
wb.Navigate("http://www.google.com");
b = true;
//ここでwbがページ読み込み中かどうか判定したい
while(b)
{

}

wb.Document.GetElementById("xx"); //同じエラーになってしまう

}

private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
b = false;
}

どこか間違っているでしょうか?
995990:2006/05/22(月) 11:44:12
>>991
例えばHTMLのタイトルがふらっとC#だとしたら"title"でちゃんと「ふらっとC#」とでます
が"body"にすると「mshtml.HTMLBodyClass」と表示されて中身が出ません。
すみません、他にも「文字列が長すぎます」とか出たんですがそれは今出ません。
996デフォルトの名無しさん:2006/05/22(月) 15:47:31
>>994

private void button1_Click( object sender, EventArgs e )
{
 WebBrowser wb = new WebBrowser();
 wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler( wb_DocumentCompleted );
 wb.Navigate( "http://www.google.com" );
}

void wb_DocumentCompleted( object sender, WebBrowserDocumentCompletedEventArgs e )
{
 HtmlElement element = ((WebBrowser)sender).Document.GetElementById( "1a" );
 MessageBox.Show( element.InnerHtml );
}
997デフォルトの名無しさん:2006/05/22(月) 17:02:28
>>995
body で取得できるのは HTMLBodyClass オブジェクトであって文字列じゃないから。
大体中身って何を想定してるんだ?
998990:2006/05/22(月) 23:51:12
>>997
そうなんですか・・・
中身はhtmlのソース(タグ?)をそうていしています
999デフォルトの名無しさん:2006/05/23(火) 01:59:11
>>996

できたー!
ありがとうございました

ただ、DocumentCompletedイベントってあんましあてに
ならないのです。
例えば最初に飛んだページがLocationヘッダ吐いても、
ページがフレームで構成されていても、IFRAME使っていても
その都度DocumentCompetedが起こってしまいます。
1000デフォルトの名無しさん:2006/05/23(火) 02:30:13
うんこぶりぶり
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。