5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C♯相談室 Part18

1 :名無しさん♯:04/09/25 20:43:08

(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。


過去スレは>>2-5あたり。


関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D

ソース置き場.NET
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&rm=10

2 :名無しさん♯:04/09/25 20:43:39
過去スレ
Part17 http://pc5.2ch.net/test/read.cgi/tech/1091284402/
Part16 http://pc5.2ch.net/test/read.cgi/tech/1087297504/ (現在HTML化待ち)
Part15 http://pc5.2ch.net/test/read.cgi/tech/1083066815/ (現在HTML化待ち)
Part14 http://pc5.2ch.net/test/read.cgi/tech/1076933504/ (現在HTML化待ち)
Part13 http://pc2.2ch.net/test/read.cgi/tech/1071663456/ (ログ行方不明)
Part12 http://pc5.2ch.net/tech/kako/1066/10660/1066038651.html
Part11 http://pc5.2ch.net/tech/kako/1061/10612/1061262958.html
Part10 http://pc5.2ch.net/tech/kako/1051/10518/1051842450.html
Part9 http://pc2.2ch.net/tech/kako/1039/10396/1039646808.html
Part8 http://pc3.2ch.net/tech/kako/1032/10324/1032488831.html
Part7 http://pc3.2ch.net/tech/kako/1027/10275/1027531796.html
Part6 http://pc3.2ch.net/tech/kako/1022/10222/1022257078.html
Part5 http://pc3.2ch.net/tech/kako/1019/10195/1019533942.html
Part4 http://pc.2ch.net/tech/kako/1016/10165/1016597767.html
Part3 http://pc.2ch.net/tech/kako/1009/10094/1009473982.html
Part2 http://pc.2ch.net/tech/kako/1002/10024/1002468050.html
Part1 http://pc.2ch.net/tech/kako/977/977112364.html

3 :デフォルトの名無しさん:04/09/25 20:46:01
Scheme の .NET 対応マダー?

4 :デフォルトの名無しさん:04/09/25 21:35:03
4様参上(゚Д゚≡゚д゚)

5 :デフォルトの名無しさん:04/09/25 21:52:38
独自のメッセージを送るとき、WM_など既存の物と
値が衝突しないようにするにはどの範囲を使えいいですか。

6 :デフォルトの名無しさん:04/09/25 22:03:01
ユーザ

7 :デフォルトの名無しさん:04/09/25 23:14:55
VSのデザイナでフォーム作るとき、複数のフォームで共通のコネクション・コントロール使う方法無いかな。
フォームごとにコントロール用意しなきゃならないのは何か無駄というか、後々問題起こりそうな気がする・・・。


8 :デフォルトの名無しさん:04/09/25 23:52:41
WM_USERよりもWM_APP

9 :デフォルトの名無しさん:04/09/26 00:59:58
MVPになりてぇなぁ・・・

10 :デフォルトの名無しさん:04/09/26 01:51:35
>>9
頑張ってコミュニティに貢献しろ

11 :5:04/09/26 10:46:04
>>8
WM_APPで検索したら、それ以降の値はシステムのIDと衝突しないことが
保証されてるみたいですね。ありがとうございました。

12 :デフォルトの名無しさん:04/09/26 21:28:47
そんなこと言わないで。
これは男の性だから。

13 :デフォルトの名無しさん:04/09/26 21:30:39
おっとっとすれ違いすまん。

14 :デフォルトの名無しさん:04/09/27 00:40:11
DataGridって、カラムごとにIMEのモード切替とか、KeyPressイベントの処理とかはムリポ?


15 :デフォルトの名無しさん:04/09/28 10:12:12
スクロールバーはオーナドローできないんですか?

16 :デフォルトの名無しさん:04/09/29 04:31:19
SQLServerに画像を格納するにはどうしたらいいんでしょうか?
すでに格納してある画像を取り出してImage型に変換する方法は分かったんですが・・・。

17 :デフォルトの名無しさん:04/09/29 07:27:46
前スレの988なんだけどさ
実際今一番人気の言語ってなんですか?
C++とかが人気多そうだからやりたいような気もするけど
店ではもう売ってないんですよね?

まあ、おれなんかは、趣味でたーんまにソフト作って
自己満足してるだけの奴なんで言語は何でもいいんだけど
しょぼいソフトでもいざ配布するとなると
C++なんかがいいなって思ったりする

プログラムなんてなんも知らない人からすれば
Frameworkを入れなければいけないってだけで面倒だもんね
そりゃ、それを入れてまでやりたいような魅力あるソフト作れればいんだけどさ

今後、Frameworkなんかがアプリやゲームなどで取り入れられてて、
知らないうちにFrameworkがインスコされてるって状況なればいいんだけど
どうなんだろ?

18 :デフォルトの名無しさん:04/09/29 07:32:12
>>17
Windows 2003 以降では標準で .NET Framework がついてきます

他の突っこみどころにはスルー

19 :デフォルトの名無しさん:04/09/29 08:00:33
>>18
w2003?そんなの出るんだ?
てか、出てるの?
XPは標準?

とにかく、標準でついてるってのはいいね

もうすこし.NETしてみるか

20 :デフォルトの名無しさん:04/09/29 08:10:04
アホが二人

21 :デフォルトの名無しさん:04/09/29 10:38:23
VB6.0(VB.NETではありません)のソースをC#に変換するツールを探しています。
市販ソフトでもフリーウエアでも、どちらでも構いません。
情報をお持ちの方がいらっしゃいましたら、ご教授ねがえませんでょうか?

よろしくお願いいたします。



22 :デフォルトの名無しさん:04/09/29 10:52:08
>>21
VS.NETにそのまんまの機能があるんだが

23 :21:04/09/29 11:14:31
>22
Visual Basicアップグレード ウィザードのことでしょうか?
VB6.0⇒VB.NETへのUGWは知っていましたが、C#への変換も可能
なのですか?


勉強不足で申し訳ないのですが、もう少し詳細をおしえていただけませんでしょうか?


24 :デフォルトの名無しさん:04/09/29 11:19:41
>>23
どうせコンバートしたまんま利用できるわけじゃないから、勉強がてら
手で移植した方が結局早いよ。

25 :デフォルトの名無しさん:04/09/29 14:56:12
ついでになんですが、VB.NETからC#への変換はどうしたらいいのですか?

26 :デフォルトの名無しさん:04/09/29 15:36:24
>>25
変換するツールがあるのかどうかは知らんけど、ラクしようとして
そんなの使っても気付かぬところで仕様違いが出てハマったり
すると却って多くロスるよ。

27 :デフォルトの名無しさん:04/09/29 17:07:53
>>17
一応マジレスすると今も店にはVCでもBCBとかのC++コンパイラは売っている。

28 :デフォルトの名無しさん:04/09/29 18:08:34
>>17
WindowsXP SP2導入以降は、たしか.NETframeworkが同梱のハズ
違ってたらゴメソ



29 :デフォルトの名無しさん:04/09/29 18:09:12
>>22
っぷ


30 :デフォルトの名無しさん:04/09/29 18:15:20
>>28
SP1にも.NET Framework入っていると思う。
この間の正月に買ったPCに最初っから入っていたし。

31 :デフォルトの名無しさん:04/09/29 20:19:31
>>28>>30
入ってないよ。最近自作APのテスト環境として1台セットアップしたからわかる。

32 :デフォルトの名無しさん:04/09/29 20:22:29
メーカー製には後付けで入ってることが多いんだよ。

33 :デフォルトの名無しさん:04/09/29 21:06:34
ウインドウズアップデートで勝手に入っていくのじゃないのか?

34 :デフォルトの名無しさん:04/09/29 21:37:55
入らなかったと思うけど(記憶違いかも知れない)。
もちろん .NET Framework 1.1 入れてれば 1.1 SP1 は入ってくる。

35 :デフォルトの名無しさん:04/09/29 21:39:28
OEのアドレス帳をインポートするにはどうしたらいいですか?
Beckyみたいにしたいんですけど。

36 :デフォルトの名無しさん:04/09/29 22:33:59
ファイルを開いて読み込むだけ。

37 :デフォルトの名無しさん:04/09/30 00:11:09
ど素人ですが質問させてください。
SQLServerから読んだデータを表示した後
DBのコネクションを閉じないで終了するコンソールアプリを
1秒ごとに連続して動かすと30秒後ぐらいにパフォーマンスが極端に悪くなります。

試しにコネクションを閉じてやると、パフォーマンスが悪くなる事はありませんでした。

ガベージコレクションはプログラムが終了する時にメモリに残った
オブジェクトを自動的に開放してくれると聞いたのに
なぜコネクションを閉じるコードを書く必要があるのですか?


38 :デフォルトの名無しさん:04/09/30 00:15:12
>>37
その部分のコードを書いてみろ

39 :デフォルトの名無しさん:04/09/30 00:21:58
>>37
GCだとオブジェクトは解放するがリソース(この場合はSQLServerのコネクションか)は解放しないからじゃないかと。
ファイルをオープンしたらクローズしなきゃならんのと同じ理屈だと思われ。多分。

40 :デフォルトの名無しさん:04/09/30 01:00:29
>>38改行が多いと叱られたのでソースは多少省略してますが以下のように書いてます。
 cDBCon.DBOpen(); SqlCommand cmd = null; SqlDataReader dr = null;
 string strSQL; string strWText;
 strSQL = "SELECT 以下略";
 try{
  cmd = new SqlCommand(strSQL, cDBCon.Con);
  dr = cmd.ExecuteReader();
  while(dr.Read()){
   if(dr["Fil1"] != DBNull.Value) {strWText = dr.GetString(0);}
   //ここで値を表示
 }
 dr.Close();
 }
 catch(Exception e){
  if(dr != null){if(!dr.IsClosed){dr.Close();}}
  strWText = e.Message;
  }
 }
以下はcDBConの中身です
 public static SqlConnection Con;
 public static int DBOpen()
 {
  string strConStr = "User ID=USERID;Initial Catalog=DBNAME;Data Source=SERVERNAME";
  try{
   Con = new SqlConnection(strConStr);
   Conn.Open();
  }
  catch(Exception e){
   string strWText = e.Message;
  }
 }
宜しくお願いします。

41 :デフォルトの名無しさん:04/09/30 01:01:18
>>39
なるほど、そこには全然頭が回っていませんでした...orz
これから確認してみます。

42 :在日外国人参政権反対:04/09/30 01:07:39
SQLserverがわの接続数なども関係してると思われ

43 :デフォルトの名無しさん:04/09/30 01:26:40
>>40
まず、DataReader使うのなら、読み込み終わったら、すぐにCloseメソッドを実行する必要あり。
DataReaderに関連付けされているコネクションは、Closeメソッドが実行されるまで
ビジー状態になってて、閉じる以外の操作ができない。

あと、SqlConnectionを使っているので、接続プーリングが働いている。
Closeメソッド(またはDisposeメソッド)で接続を開放しないと、接続プールに
戻らない。ADO.NETのデータプロバイダでは、閉じない接続はデフォルトで
60秒間は再利用されない。

44 :デフォルトの名無しさん:04/09/30 01:59:11
>>43閉じない接続はデフォルトで60秒間は再利用されない。
これはじめて聞いた、どこかに記述があるなら教えて欲しい。

しかし、プロセスが終了してもってのは考えにくい。
ような気がするけど実装によってはそうなのかもしれない…

45 :デフォルトの名無しさん:04/09/30 02:21:51
なんでProcessってDiagnosticsなんですか???

46 :デフォルトの名無しさん:04/09/30 02:36:29
>>45
すみません。自己解決しますた

47 :デフォルトの名無しさん:04/09/30 08:58:02
>>44
プログラミング ADO.NET by MS Press

48 :デフォルトの名無しさん:04/09/30 10:05:14
コンボボックスが開かれているかどうか
(コンボボックスのリストが表示されている状態か?)を
調べる方法はありませんか?

またコンボボックスのリストをプログラムから開く事はできますか?

方法があれば教えてください。

49 :デフォルトの名無しさん:04/09/30 10:39:22
>>48
メンバをよく調べろ。

50 :デフォルトの名無しさん:04/09/30 10:45:39
>>48
DropDownイベントやね。

51 :デフォルトの名無しさん:04/09/30 10:50:43
イベント……?
48は開いた時に通知がほしいんではなくて、開いてるかどうかを静的に調べたいだけじゃないのか?

52 :デフォルトの名無しさん:04/09/30 11:19:46
>>48
コンボボックスが閉じている状態をビットマップで保存して、開いているか調べたいときに画面のハードコピーをとって、保存してある画像を比較しろ

53 :50:04/09/30 11:23:04
>>51
そんならDroppedDownプロパティやね。

54 :デフォルトの名無しさん:04/09/30 11:42:43
コンボボックスのドロップダウンなんですが、
▼ボタンを押してもドロップダウンを表示させないようにすることは出来ますか?

ネイティブだとコンボボックスの高さを小さくしておくことで可能なんですが、
。NETだと強制的に空白一行分のドロップダウンが表示されてしまいます。

OnDropDownやcomboBox_DropDown内で
DroppedDown = false; とかしてみましたがダメでした。

方法をご存知でしたら教えてください。

55 :デフォルトの名無しさん:04/09/30 12:47:26
>>54
普通に考えたんだけど、コンボボックスのドロップダウンを表示されたくないのに、
コンボボックス使う必要あるのか?

それとも、何か特別な理由で何かの処理のタイミングで
一時的にコンボボックスの値が変更されないようにしたいだけなのか・・・

56 :50:04/09/30 12:55:00
>>55
手軽に入力内容を絞りたいとか、補完を利用したいとか?

57 :デフォルトの名無しさん:04/09/30 12:57:43
>>54
そこまでやるんだったら、独自のコントロールを作成した方が早いと思う

58 :54:04/09/30 13:08:53
>>55-57
ありがとうございます。

コンボボックスを使う理由は、ビジュアルスタイルが適用できることです。

独自のコントロールも作ったんですが、
期待の動作はもちろん実現できるものの、
ControlPaintで書いた外観が、ビジュアルスタイルが適用された回りのコントロールから
浮いて見えてしまうんです。

59 :在日外国人参政権反対:04/09/30 13:12:13
ビジュアルスタイルも実装しる

60 :デフォルトの名無しさん:04/09/30 15:35:35
プログラミングよく知らない者なんですけど、
同じ.NET対応言語のVB.NETと比較してC#の優れている部分と、
劣る部分はどういったものがあるでしょうか?

61 :デフォルトの名無しさん:04/09/30 16:02:53
マネージドクラスでラップされているものはマネージド資源として見なしちゃってOKですか?

62 :デフォルトの名無しさん:04/09/30 16:14:06
んなこたーない

63 :61:04/09/30 16:30:11
>>62
難しいなぁ

Dispose(bool) の実装で、マネージ&アンマネージの区別が付かずに困っていたんですが……
……ま、趣味グラマだし今のところは適当でいいか

64 :デフォルトの名無しさん:04/09/30 16:34:15
ぼくのオブジェクトに滝沢君の顔を実装するプログラムを作ってください

65 :デフォルトの名無しさん:04/09/30 16:39:28
ハンドルされていない例外 : System.ArgumentException: 適応先のオブジェクトが不正です
   at ConsoleTest.Class1.Main(String[] args) in d:\visual studio projects\consoletest\class1.cs:line 17


66 :デフォルトの名無しさん:04/09/30 17:08:14
>>60
.NET対応言語は色々あるけど、

VB.NET・・・VBプログラマを名前で騙して.NETに取り込む製品
C#.NET・・・Borlandから引き抜きまでしてJAVA潰し。MSの最重要製品
J#.NET・・・J++の失敗で開き直った製品。似非JAVA。恥の上塗り。
C++.NET・・・そのうちC#に移行してもらいたいのでVSに加えた。X-BOX御用達?

てな感じでしょうか?

C#の方がよりオブジェクトオリエンテッドなのかなって印象はありますが。

67 :デフォルトの名無しさん:04/09/30 17:09:43
>>60
どこかに各言語を比較したホムペでもないしら

68 :デフォルトの名無しさん:04/09/30 17:22:23
>>63
Disposable なものはどんどん Dispose しないとまずいイケースが多いと思うよ。
FileStream なんか gc で回収されるまで開きっぱなしだし、Bitmap は巨大メモリ占有し続けだし。

69 :61:04/09/30 17:30:53
>>68
あ、それはもちろんわかってます
……いや、それがわかってないから 61 みたいな事を言っちゃったのか^_^;
中途半端な知識でスマン

とりあえずマネージド資源はメモリに関してのみ……という認識でいいのかな?
他のマネージド資源って何だろ

70 :デフォルトの名無しさん:04/09/30 17:40:57
public class Form3 : System.Windows.Forms.Form
{
private System.ComponentModel.Container components = null;
private System.Windows.Forms.TextBox textBox1; //@
private TextBox textBox2= new TextBox();    //A

この2つのコントロールの貼り付け方で異なる点はなんですか?
通常は@の貼り方ですが、Aでもいけるので何が違うのか分かりません。

71 :デフォルトの名無しさん:04/09/30 17:45:23
>>70
基礎から勉強してこい

72 :70:04/09/30 17:50:53
じゃあ、MSが@の方法を推奨する理由だけでも教えてくれませんか?

73 :デフォルトの名無しさん:04/09/30 17:58:29
71 じゃないけど

>>72
using System.Web.UI.WebControls;

なんてのが入っていると、Aでは

System.Windows.Forms.TextBox
System.Web.UI.WebControls.TextBox

のどっちを使えばわからないから文句を言われる
ただそれだけ

74 :デフォルトの名無しさん:04/09/30 19:21:25
新規クラスを作る場面がよくわかりません。

例えば、サブフォルダ内すべてのファイルをリストアップする場合
再帰処理が必要ですが、標準ではないので
ソフトごとに毎回、メインクラスに再帰処理メソッドを書き込んでるのですが、
毎回書き込むのが面倒だから、別にクラスを作って流用しようって考えでいいのでしょうか?

私が作るのは小規模なプログラム大体3000行ぐらいなので
今までメインクラスのメソッドに毎回かいてたんですけど・・・・

新たなクラスを作るのは面倒だから、見やすいからってアバウトな感じで新規クラスを作ってもいいのでしょうか?

75 :デフォルトの名無しさん:04/09/30 19:33:25
まずはOOPの勉強からだな。

76 :74:04/09/30 19:35:48
最後の1行意味わからないですね。訂正

新たなソフト作る度に同じ処理のメソッドを作るのは面倒だし、見やすいからってアバウトな感じで新規クラスを作ってもいいのでしょうか?

77 :デフォルトの名無しさん:04/09/30 19:42:59
>>76
軽く本を読んでもいいけど、けっきょく勘所は慣れないとわからない。
最初は思いついたようにやってみたらいい。
使いづらいクラスができあがったら、間違ってたってこと。
向上心を持ちながらたくさんやってれば、どんどん見えるようになってくる。

78 :74:04/09/30 19:46:36
>>75
どうも、GOTOのころの言語から頭が離れなくて・・^^;

>>77
なるほど、気楽にクラス作っていこうと思います。

どうもでした

79 :デフォルトの名無しさん:04/09/30 20:25:20
というか、クラスを分けないと最近はまともなプログラミングも出来なくなる罠

80 :デフォルトの名無しさん:04/09/30 23:11:24
pictureBoxかLabelで数枚の画像をパラパラマンガみたいに表示したいのですが
うまくいかないのです
どうしたらいいでしょうか?

81 :デフォルトの名無しさん:04/09/30 23:15:17
>>80
そこでアニメーションGIFですよ

82 :デフォルトの名無しさん:04/09/30 23:15:51
数枚の画像を印刷してパラパラマンガを作る

83 :80:04/09/30 23:17:31
すみません。自己解決しますた

84 :デフォルトの名無しさん:04/09/30 23:19:46
>>83
氏ね

85 :デフォルトの名無しさん:04/10/01 00:26:45
>>83
どのように解決したか書いてよ〜

86 :80:04/10/01 00:35:10
パラパラ用画像をグラフィックソフトで横一列にづらっと並べて
描画時に画像をスライドさせながら表示することでできました

87 : :04/10/01 01:36:58
C#で64bitバイト列からulong型へ変換したいのですがなんか良いAPIあります?

↓みたいなことがしたいんですが

String ssource = "この文字列からハッシュを生成したい"; // ソース(文字列)
byte[] bsource = ASCIIEncoding.ASCII.GetBytes(ssource); // ソース(バイト列)
byte[] hsource = new SHA1CryptoServiceProvider().ComputeHash(bsource); // ハッシュ生成(160bitのはず)
byte[] hash = new byte[64];
Array.Copy(hsource, 0, hash, 0, 64); // 上位64bit取得
// ここでhashをulongに変換したい

88 :デフォルトの名無しさん:04/10/01 01:38:25
>>87
そこでunsafeですよ

89 :デフォルトの名無しさん:04/10/01 01:41:01
>>87
普通は BinaryWriter、効率を求めるなら >>88

90 :デフォルトの名無しさん:04/10/01 01:42:21
BitConverterは駄目か。

91 :デフォルトの名無しさん:04/10/01 01:44:01
>>90
こんなおいしいクラスがあったとは知らなかったぜ

92 :87:04/10/01 01:55:35
>> 書き込んでくれたみなさま
早レスありがとうございます。こうしてみました。

String ssource = this.IP + this.Port;
byte[] bsource = ASCIIEncoding.ASCII.GetBytes(ssource);
byte[] hsource = new SHA1CryptoServiceProvider().ComputeHash(bsource);
byte[] hash = new byte[20];
Array.Copy(hsource, 0, hash, 0, 8);
this.Hash = BitConverter.ToUInt64(hsource,0);

93 :デフォルトの名無しさん:04/10/01 02:00:56
せっかくToUInt64が開始点を決められるようになってるのに、
一旦Arrayにコピーする意味があるのか? いやない。
8バイト固定だぜ。

94 :デフォルトの名無しさん:04/10/01 02:05:37
>>93
ないっすね。へんなものみせてごめんなさい。
そもそもBitConverterにコピーしたhash渡してないし...

95 :デフォルトの名無しさん:04/10/01 02:47:16
FolderBrowserDialogというクラスが2003から対応してるみたいなんですが、
現在C#std2002を持っているのですが、このクラスを使うにはどうすればいいのでしょうか?

96 :デフォルトの名無しさん:04/10/01 02:52:27
どうしようもない。
FolderBrowserDialogはSHBrowseForFolderのラッパだから、自前で実装すればいい。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;306285

97 :95:04/10/01 03:05:48
>>96
ありがとうございます。ちょっと自分には難しそうですがなんとかやってみます

それとちょっと変なこと聞くのですが、c#2002の最新版有無チェックの機能ありますよね?
あれでバージョンアップしても、買った当初からずっと「これは最新版です」って言われるのですが
2002はバグ修正とかはなかったのでしょうか?
MSのサイトみても、2002用のバグ修正のファイルとかは見つからないし
たまに挙動が変な時があるので、バグ修正とかあればいいのですが

98 :95:04/10/01 05:45:59
>>96
やっとこさできました

サイトみながらコピペしたり四苦八苦して、エラーばっかりでて
アセンブリ名やらクラスやらよくわからないこと言われて
DLLはstdじゃ作れないから、どうやったらいいか調べたり
結局エラー大量でもう無理かって思った時に

そういえば、あのサイトからDLした奴があるなぁ
それ開いてみようって思ったら
ソースだった・・・今までの苦労なんだったんだよって思いながら
コンパイルすると、DLL出力するファイルを直接利用できないとかわけの
わからないエラーがでて、まあそれでもやっとDLL作れて
やっと、安心して使えるフォルダ選択ダイアログが手に入りました

たぶん、教えてもらわないと、1ヶ月かかってもわからなかったと思います
たすかりました。ありがとう

99 :デフォルトの名無しさん:04/10/01 22:10:19
DataGridの使い方がめちゃくちゃ難しーよー。
DataSet, DataTable などと絡めて、
GUIプロパティの動的な設定とか、
詳しく、かつ、わかりやすく説明している書籍とか、
ウェブサイトを教えていただけませんか?
MSDNのサンプルソース見たり、解説を読んだりしても、
ちょっと理解しづらいです。

100 :54:04/10/01 23:21:38
報告ご苦労。下がってよいぞ。

101 :デフォルトの名無しさん:04/10/02 08:03:07
>>99
ここのDataGridの関連のTIPSがいいんでないかな
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html

本ではこれがサンプルとしては役に立ったかなぁ。
http://www.gihyo.co.jp/books/syoseki.php/4-7741-1757-9
ただ言語がVB.NETなんで読みにくかった。



102 :デフォルトの名無しさん:04/10/02 08:34:26
Process.Start(アプリ名)
だと、そのアプリのiniファイルなどを読み込まないでデフォルトで起動したりするのですが
通常ダブルクリックでアプリが起動するように起動させるにはどうすればいいでしょうか?

103 :102:04/10/02 09:00:50
自己解決

System.Diagnostics.ProcessStartInfo pInfo = new System.Diagnostics.ProcessStartInfo(string filename);
System.Diagnostics.Process process = System.Diagnostics.Process.Start(pInfo);
これでいけました。なぜかわかりませんが

104 :102:04/10/02 09:37:15
んーやっぱり、うまく起動するものとしないものがある
マウスでアプリのアイコンをダブルクリックしたのと同じように起動できる方法教えて下さい

105 :デフォルトの名無しさん:04/10/02 10:53:59
>>104
pInfo.WorkingDirectory = (exeのあるディレクトリパス)
でどう?

//Process.Start(string)と単にProcessStartInfo.FileName指定しただけのとで差はないはずなんだが……。

106 :102:04/10/02 11:41:35
>>105
あ、なるほど!うまくいきました!
pinfo.workingdirectoryを設定してないと、規定フォルダが自作のアプリのディレクトリになるためだったんですね
ありがとうございます

>//Process.Start(string)と単にProcessStartInfo.FileName指定しただけのとで差はないはずなんだが……。
Process.Start(string)これだと、iniファイルを読みに行かなかったりするんです。
ソフトにもよるんでしょうけど・・・いまいちよくわかってません

107 :デフォルトの名無しさん:04/10/02 12:54:04
>>102
単に、起動させようとしているアプリが糞なんじゃないんか

108 :デフォルトの名無しさん:04/10/02 13:03:47
>106
Startの引数はふるパス?

109 :102:04/10/02 13:29:03
>>107
どうなんでしょうか、私にはわかりかねます
一応起動はするけど、iniファイルのデータが取り込まれないんです

>>108
引数はフルパスですよ。起動はするけど、起動後
同じフォルダ内のexeファイルも読みに行ったりするので
規定ディレクトリ設定してないとだめだったみたいです

110 :デフォルトの名無しさん:04/10/02 13:33:25
自分で適当なアプリ作って情報見てどう違うのか見るのが一番速い

111 :110:04/10/02 13:50:52
コマンドライン引数とか、カレントディレクトリのことね

112 :デフォルトの名無しさん:04/10/02 14:58:17
100%カレントディレクトリの問題だけどな

113 :デフォルトの名無しさん:04/10/02 15:16:40
テキストファイルから FileStream.ReadByte() で取得した
バイト配列を保持しています。

このバイト配列に格納されたファイルデータを
Proccess.Start 等を使い指定アプリで開くためには、
一旦テンポラリとして物理ファイルに書き出す方法しか
私には思いつかないのですが、
今回、できればこのテンポラリを作りたくないのです。

バイト配列状態にしたファイルデータを、
物理的なファイル形式に書き出さずにアプリで開くことは可能なのでしょうか?

114 :デフォルトの名無しさん:04/10/02 15:19:15
一部のアプリは STDIN から読み込めるのもある。
一部のアプリは ShellFolder に対応してるのもある。
一部のアプリは COM インターフェイスを提供しているのもある。
一部にアプリは DDE ・・・ってサイズ制限あったっけ?

115 :デフォルトの名無しさん:04/10/02 15:20:44
共有メモリ使え
C#でどうやるかは知らん
後は親プロセスの情報なんかで渡してリモーティングとかソケットとか

116 :デフォルトの名無しさん:04/10/02 15:23:21
要は受け取るアプリに応じて渡せ、と。
どう受け取るかをまず作らないとな。

117 :デフォルトの名無しさん:04/10/02 16:12:57
>>115
> 共有メモリ使え
> C#でどうやるかは知らん

API呼び出し。

こんなのもある。
http://blogs.users.gr.jp/hidori/articles/WinCL.aspx
なんか直接落とせない、junktestの中から落とした。
http://www.hidori.jp/Downloads/junktest/

118 :デフォルトの名無しさん:04/10/02 17:27:07
c#standerdで作ったソフトは配布してもいけますか?

119 :デフォルトの名無しさん:04/10/02 18:51:55
C#にstanderdなどというバージョンは存在しない。
それ以前にstanderdなどという単語は存在しない。

>>118も存在しないでいいや。

120 :デフォルトの名無しさん:04/10/02 18:54:25
c#スタンダードで作ったソフトは配布してもいけますか?

121 :デフォルトの名無しさん:04/10/02 19:14:00
pictureBoxの上にLabelを配置してpictureBoxの画像の上に
LabelのTextを表示させるにはどうしたらいいでしょうか?

pictureBoxは実行時に大きさを変更するのでpictureBoxのTextだと表示位置がずれてしまうので^^;

122 :デフォルトの名無しさん:04/10/02 19:16:19
その場合PictureBoxのPaintイベントで文字を直接描画する方が良いような気がする。

123 :デフォルトの名無しさん:04/10/02 19:47:05
>>120
基本的には問題ないんじゃないかい。

124 :デフォルトの名無しさん:04/10/02 20:02:12
毎回エラーが出るような処理を回避する場合
IFなどの条件文か、tryで回避するかどちらがいいんでしょうか?

例えば、リストビューに画像ファイルの一覧が表示されていて
リストをクリックされたら選択されているファイルをpictureBoxで表示させるプログラムの場合

ユーザーがクリックして選択されてない状態でも画像表示させようとして
選択されてないので、当然エラーになります。

IF文で選択されていれば画像表示という風にするべきか
tryでエラー回避して表示できる場合だけ表示するようにするべきか

どちらがいいんでhそうか?

125 :デフォルトの名無しさん:04/10/02 20:19:07
IFに一票


126 :デフォルトの名無しさん:04/10/02 20:23:15
>>124
ifでチェック可能なものならifで。
例外処理はコストが大きめなので。

127 :デフォルトの名無しさん:04/10/02 20:29:50
>>124
「tryで回避」などという表現が使われているので恐らく「例外」のことを言ってるんだろう。
「エラー」は誤解を招く恐れもあり、ここでは不適切。

まず、例外周りはパフォーマンス的にかなりのコストがかかることは知っておくべき。

つーかそれ以前に、
例外が発生することを「考慮した」コードを書くのは当然のこととして、
例外が発生することを「前提とした」コードは一般には好ましくない。

128 :デフォルトの名無しさん:04/10/02 20:33:12

// 「前提とした」コード?
// arrayの要素を0で埋める。
int i=0:;
try { while (true) array[i++] = 0; } catch {}

129 :デフォルトの名無しさん:04/10/02 20:35:50
tryで回避というのは、家庭教師に何とかしてもらおうということでは?

130 :127:04/10/02 20:37:36
>>129
なるほど、そういうことだったか。
行間読めなくてすまんかった。 m(_ _)m

131 :デフォルトの名無しさん:04/10/02 21:44:34
ん〜labelの親コントロールをpictureBoxにしてみたのですがlabelが表示されないんですよね
なんでなんでしょ?

>>122
Paintイベントはよくわからないのですorz

132 :デフォルトの名無しさん:04/10/02 21:45:47
RADの弊害か・・・
お前がプログラム組むのは1年早ぇよ。

133 :デフォルトの名無しさん:04/10/02 21:50:19
1年じゃ足りないだろ
Paintイベントすら理解出来ないゴミは一生VBでも使ってろ

134 :113:04/10/02 22:20:45
>114-117
やはりWin32の出番ですか。ありがとう。

中途半端なフレームワークだなぁ…。

135 :デフォルトの名無しさん:04/10/02 22:25:29
いや受け取るアプリの問題だろ?
私は.NETアプリ間の通信はソケット使ってるし。

136 :124:04/10/02 22:30:39
>>125
>>126
>>127
>例外が発生することを「前提とした」コードは一般には好ましくない。
なるほど。tryはできるだけ、使わなくてもいい設計にしないとだめなんですね
>>129

レスありがとうございます。

みなさん、コストがかかるって言われてますが、どういう意味なのでしょうか?
あと、実際tryを利用する場合というのはどういう場合なのでしょうか?

137 :デフォルトの名無しさん:04/10/02 22:35:54
>>101
サンキュー、DataGridの件、情報ありがとう。

138 :デフォルトの名無しさん:04/10/02 22:40:51
>>136
普通に複数の箇所から呼ばれるメソッドの例外処理とか、

try
{
  // なにか処理
}
finally
{
  // リソース開放とか絶対やらないといけない処理
}

とか。

139 :124:04/10/02 22:46:19
>>138
まさに、>>124の処理とかはいろんなとこから呼び出されるんですよ
クリックイベントやkeydownイベントやその他

private void PicView()
{

  //画像表示
}

でも、IF文でまず
んー、なかなか、使い道がよくわからないなぁ、もう少し勉強してきます

140 :138:04/10/02 23:15:50
>>139
あー、いや「普通に複数の箇所から呼ばれるメソッドの例外処理」ってのは

try
{
  複数の箇所から呼ばれるメソッド
}
catch(Exception)
{
}

みたいな処理の話で、そのメソッドの中の話じゃあない。

で、そのメソッドが呼び出し元に例外を投げるんじゃないなら俺もifのほうがいいと思うんだが。

141 :デフォルトの名無しさん:04/10/03 00:28:55
まあ、ifですむんならifですますな、俺も。


142 :124:04/10/03 00:37:55
>>140
あ、なるほどー

よくメソッド定義元内で、例外がでないようにする処理(if(File.Exists(filename))など)しようと思うけど
そうすると、例外が出て処理できなかったことをどうやって呼出元で取得するのかわからなくて
メソッド呼出元に例外がでないようにする処理していた。
すると、メソッド呼ぶ側全部に同じような処理させないとだめなので、
なんか無駄だなーって思ってた。

なるほど、理解した。ありがとう

143 :デフォルトの名無しさん:04/10/03 01:10:53
いまVC#2003stdでDLLの作成をしています。
※Stdなので、.csprojのsetting-outputTypeをLibraryに書き換える方法でやってます

するとInterop.SHDocVwの参照がないとかいって怒られますが、
HDの中を検索してもそれらしきものが見つからないんです。
どうしたらいいんでしょうか?別の名前で存在しているんでしょうか?
自分で作るとか、M$から落とすとかそんな方法でやるんでしょうか?

教えてください。

144 :デフォルトの名無しさん:04/10/03 01:37:26
>>143
> ※Stdなので、.csprojのsetting-outputTypeをLibraryに書き換える方法でやってます

これ意味わかんないんだけど、普通にクラスライブラリのプロジェクトを作ったらだめなの?

あと、Interop.SHDocVwはMicrosoft Web Browserをフォームに貼り付けると自動的に作成されて参照が追加される。
手動で作りたいならTlbimp.exeを使ってshdocvw.dllから作成しろ。

145 :デフォルトの名無しさん:04/10/03 02:26:51
>>144
>>143
>いまVC#2003stdで

146 :144:04/10/03 02:35:31
>>145
手元にインストールされてるVC#stdは普通にクラスライブラリプロジェクトを作成できるんだけど。

147 :144:04/10/03 03:01:21
http://www.microsoft.com/japan/msdn/vstudio/productinfo/featurelist.asp
機能比較一覧を確認したが、VB.NETstd以外ならどれでも対応してる。

148 :デフォルトの名無しさん:04/10/03 09:40:28
リッチテキストファイルから特定の文字のフォント情報を取得するにはどうしたらいいのですか?

149 :デフォルトの名無しさん:04/10/03 09:41:37
>>146
あ、ごめん。「Windows Control Library」で作っているのです。都合上。

150 :デフォルトの名無しさん:04/10/03 09:47:59
>>148
RichTextBoxでLoadFileして必要ならFindして
SelectionStartとSelectionLengthを適切に設定して
SelectionFontを取得する。

151 :デフォルトの名無しさん:04/10/03 14:35:02
メソッドの作り方はわかるのですが、クラスのクラス?の作り方がわかりません
MyClassという自作のクラスがあって
MyClass.MyItemsというクラスを作りたい場合何を勉強すればいいでしょうか?

152 :デフォルトの名無しさん:04/10/03 14:44:26
プロパティを定義したいのかネストクラスを書きたいのかどっちかすら分からないんだが。
取りあえず
ttp://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html
ttp://wisdom.sakura.ne.jp/programming/cs/cs.html
ttp://www-ise2.ist.osaka-u.ac.jp/~iwanaga/programming/csharp/index.html

153 :デフォルトの名無しさん:04/10/03 15:00:54
>>151
内部クラスのことか?

class MyClass {
    class MyItem {
    }
}

みたいに MyClass の中で MyItem を宣言すれば OK よん

154 :153:04/10/03 15:01:53
152 完全に無視してたスマソ

155 :デフォルトの名無しさん:04/10/03 15:04:57
>>152
MyClass
{
  public MyClass()
  {
  }

  public MyItem items=new MyItem();//これでいけました

  public void Add()
  {
  }


こういう風にメソッドの外でクラスを作ることをなんていうんでしょうか?

156 :デフォルトの名無しさん:04/10/03 15:11:17
>>155
>>152
まず基礎から一つずつ積んでけ。

157 :デフォルトの名無しさん:04/10/03 15:14:42
何をしたいのかというと

ListViewにPictureBoxの機能を連動するようなMyClassを作りたかったんですが
PictureBox継承にしてしまうと、MyClassを使う場合、pictureboxの機能も使えてしまって
ごちゃまぜでややこしいので、できればMyClass使う場合、pictureBoxを意識しないで
使えるような設計をしたかったんです

MyClass.items //ListView
MyClass.View  //ListViewで選択されてるitemをPictureBoxに表示するメソッド

158 :デフォルトの名無しさん:04/10/03 15:15:40
基礎から出直してきます
どうもでした

159 :153:04/10/03 15:23:23
俺、完全に無視されたヨカン

160 :151:04/10/03 15:28:38
ここIDでないんですね・・

>>159

>>153で書かれてることは>>155こういうことなのでしょうか?
このことを内部クラスっていうんですね
ありがとうございます

161 :デフォルトの名無しさん:04/10/03 16:10:59
いやそれは違うから

162 :デフォルトの名無しさん:04/10/03 17:29:44
フィールドについて調べてみよう。

163 :153:04/10/03 17:52:22
そういうことか。何となく流れが混乱している意味がやっとわかった。


@ 『内部クラス』は『クラスの中で宣言されたクラス』を指す。
>>153 では MyItem がコレ

A 内部クラスといっても、普通のクラスとの本質的な違いは殆どない。
>>155 はスコープの問題。

B 『クラスの宣言』と『インスタンスの作成』は全く違うことに注意。
下手すると両方とも「クラスの作成」になっちまうからな


>>160 は、内部クラスを『メソッドの外で宣言する物と思い込んでいる』
ような気がする。(合ってなくはないが微妙にニュアンスが……)

164 :デフォルトの名無しさん:04/10/03 18:03:41
C# ver2.0で追加される
クラスのライブラリってどこか参照できるところがあれば
教えてください。

165 :デフォルトの名無しさん:04/10/03 19:04:31
Itemって名前のプロパティ作って怒られたよ俺

166 :151:04/10/03 19:17:51
>>163
んーなかなかむずかしいすねー
内部クラスっていうのは作ったことないです

クラスっていうのは実体がない設計図みたいなもので
インスタンスはその設計図を元に具現化したもの・・・

実際MyClassを使うメインのクラスでは
public Form1:
{
  private MyClass[] mc=new MyClass();//>>155のMyClass

  public Form1()
  {
  }

  private void View()
  {
    //mc.AddでMyClassのListViewにファイル名追加してさらに
    //MyClassの中のprivateなPictureBoxでform1に画像を
    //表示する
    mc[0].Add("filename");
  }
}
結局、Form1でインスタンス化するんだから、MyClass内でMyItemsをインスタンス化
するのは無駄なことなのかも?
内部クラスとスコープこの二つの単語をもう少し勉強してきます

167 :デフォルトの名無しさん:04/10/03 19:27:40
( д) ゜ ゜

168 :デフォルトの名無しさん:04/10/03 19:28:09
その前にオブジェクト指向の基礎を勉強してこいよ

169 :151:04/10/03 19:41:23
やっと、自分の考えていること表現する方法がわかった↓
こんな構造作りたいんだけど・・

MyClass.View.PictureBox
MyClass.ListView

>>166のやり方でさっきからやってるけど
MyClassのメソッドでPictureBoxに画像表示してるけど
Form1に表示されない・・・・
んー、素直にPictureBoxを継承すればすんなり行くんだけど・・
pictureBoxの機能はすべてMyClass内で自動でやってほしんだよね・・

170 :151:04/10/03 19:47:15
あ、違う
MyClass.View.PictureBox
これじゃなかった
pictureBoxはMyClassのプロパティ?として使いたいんだった
あーやっぱ出直してくる

171 :デフォルトの名無しさん:04/10/03 19:58:19
まず、この話に内部クラス(ネストクラス)は一切関係ない。スコープも取りあえず関係ない。
アクセシビリティもおいとこう。

根本的にFormに表示できるのは、
・祖先がControlであるクラスで、
・FormのControlsプロパティに追加された上記クラスのインスタンス
のみだ。
お前さんのMyClassとやらは条件を満たしてるのかね?

//しかしフィールドも知らない人がよくこんなことしようと考えるなぁ。
//Hello worldから始める人って少なくなったのかなぁ。

172 :151:04/10/03 21:12:35
>>171
PictureBoxを継承した自作クラスでFormに描画できるのはそういうことだったんですね

MyClassは継承もしてないし、Controlでもないと思います
Controlもよく意味がわかってないですが^^;

フィールドというのは、クラスの先頭で宣言するpublic int a;などのように
データを保存するだけのもののことをいうんですよね?

FormにListViewなどを配置すると、Formクラスの先頭に
private ListView listView1;
ていうのができますが、これはプロパティ?それともフィールド?

173 :デフォルトの名無しさん:04/10/03 21:25:07
少しはその足りない頭で考えようとしてみろ
お前の聞いてることはC#とか言語以前の問題だ

174 :デフォルトの名無しさん:04/10/03 21:25:35
>>172
・・・・・。

175 :デフォルトの名無しさん:04/10/03 21:27:47
もうどうしようもねえな

176 :デフォルトの名無しさん:04/10/03 21:35:03
>>172
まずは入門書を読み飛ばさず一冊読んでおおまかな概要や用語をつかむことだ。
用語がわからないのでは、まさに文字通り、話にならないから。

ttp://pc5.2ch.net/test/read.cgi/tech/1065196964/

177 :デフォルトの名無しさん:04/10/03 23:14:15
すげぇ…。

178 :デフォルトの名無しさん:04/10/03 23:17:06
RADの弊害だな
しかしここまでひどいのは初めて見た

179 :176:04/10/03 23:26:21
>おおまかな概要
「白い白馬」やっちまった。

180 :デフォルトの名無しさん:04/10/04 00:47:13
>>178
ほんとそうだよな。
こういう書き込み見てると頭の頭痛が痛いよ。

181 :デフォルトの名無しさん:04/10/04 01:02:01
>>180
なんかそのせりふ頭痛に寄生されてるみたいでキモイ

182 :151:04/10/04 01:22:49
>>176
一応C#と独習C#は基礎的な部分は繰り返し呼んでたんだけど
勉強の仕方が悪いのか頭に入ってないですね
説明文自体が専門用語ばかりで・・

183 :デフォルトの名無しさん:04/10/04 01:29:42
悪いのは勉強の仕方ではなくおまいの頭・・・

184 :デフォルトの名無しさん:04/10/04 03:08:31
151は神だと思うw

185 :デフォルトの名無しさん:04/10/04 07:02:23
頭に入ってなければそれは勉強したとは言わない
眺めただけという

186 :デフォルトの名無しさん:04/10/04 09:18:45
>>185
座布団一枚!


187 :151:04/10/04 12:00:58
プログラムできないとバカ扱いされるんですか?
ちゃんと仕事して家族養ってるし年収も1000万もらってるんですけど
ちょっと興味湧いたのでプログラム始めたんです
プログラム初めてからまだ1週間です
わたしはバカって言われたことありません

188 :デフォルトの名無しさん:04/10/04 12:16:38
よかったな、初体験だ。

189 :デフォルトの名無しさん:04/10/04 12:20:43
>>187

本物のネ申が降臨しました

190 :在日外国人参政権反対:04/10/04 12:20:43
>187
馬鹿かどうかはわかりませんが、貴方のここで書いていることはほとんどが釣りと疑わせるようなものであることはまちがいないです.
私も釣られてるんでしょうか?

191 :デフォルトの名無しさん:04/10/04 12:21:29
さすがに 187 は別人の釣りだと思う。

192 :デフォルトの名無しさん:04/10/04 12:30:04
雰囲気悪くなるからそんなにいじめるなよ

193 :デフォルトの名無しさん:04/10/04 12:39:51
すべてのプログラマの基底クラス、その名は151


194 :デフォルトの名無しさん:04/10/04 12:59:41
>193
そんなもん継承させないでくれ...

195 :151:04/10/04 15:05:36
いろいろ調べててわかったんですが
自作コントロールというのはいわゆるDLLのことだったんですね

196 :デフォルトの名無しさん:04/10/04 15:27:49
なんかおかしいぞ。

197 :デフォルトの名無しさん:04/10/04 15:45:17
相変わらず斜め上だな……。

198 :151:04/10/04 15:49:32
Controlクラスや、その派生クラスから継承して作ったGUIクラス = コントロールでよいのでしょうか。
それを /target:library オプションを付けてコンパイルしたものがDLLなんですね。

そこで質問なんですが、自動車免許(大型)の更新には、焼きそばは必要なんでしょうか?

199 :デフォルトの名無しさん:04/10/04 15:57:17
まだ続ける気があるなら151はトリップつけろ、やりかたはクラスの継承と同じだ。


200 :デフォルトの名無しさん:04/10/04 16:04:45
>>198
だから、コントロール=DLLじゃないって。

201 :デフォルトの名無しさん:04/10/04 16:35:13
モッコリはにゃ〜ん

202 :デフォルトの名無しさん:04/10/04 16:38:28
モッコリはにゃ〜ん

203 :デフォルトの名無しさん:04/10/04 16:40:52
モッコリはにゃ〜ん

204 :151 ◆0XlGlYK4pE :04/10/04 16:42:10
どういうクラスを作りたいのかというと
ファイルが送られてきたら、リストビューにファイル名追加して
さらに画像をピクチャーボックスに表示する
こういう動作をするクラスを作りたいんです
ListViewの機能にPictureBoxの機能を加えたようなもの

このクラスの名前を例えばMyClassします
MyClassにPictureBoxを継承してしまうと
MyClassを利用する側はPicturBoxのメソッドにもアクセスできることになる
利用する側は直接PictureBoxのメソッドを利用することはないのに
利用できるようになるのは無駄というかわかりにくいですよね?
利用する側からはPictureBoxのメソッドの存在を隠蔽したいんです
そこで、継承ではなくMyClassの内部にPictureBoxをオブジェクトとして扱おうとしたけど
今度は利用する側(Form1)に表示されない・・

そこで自作コントロールを作ればいいと考えたんですけど
DLL作ってるんですけど、結構面倒ですね、うまく動作してるか
デバッグしながら確認出来ないから
一旦DLL作って、それをフォームに貼り付けてやらないと
チェックできないし・・

じゃあ、どうすればいいのか・・・コントロールを作りながらそのコントロールを
利用する側も一緒に作っていく方法がわからなくて困ってます

205 :151 ◆0XlGlYK4pE :04/10/04 16:43:25
自作コントロールはDLL化しないと、Form1などで
利用するこはできないですよね?
もしできるなら、この問題は解決するんですけど

206 :デフォルトの名無しさん:04/10/04 16:47:25
>>151
こっちのスレに行け。
http://pc5.2ch.net/test/read.cgi/tech/1065196964/l50

207 :デフォルトの名無しさん:04/10/04 16:47:41
>>205
Form1はDLLにしないとMainメソッドから呼べないとでも?

208 :デフォルトの名無しさん:04/10/04 16:48:07
>>204
どっから送られてくるのか知らんがw

とりあえず、大量の画像のファイル名をListViewに羅列して、
マウスがListViewのアイテム(画像ファイル名)上に来たら、該当する画像を表示する。

こんな感じでいいの?

209 :デフォルトの名無しさん:04/10/04 17:03:44
PictureBoxとListViewをぶっこんだユーザーコントロール作ればいいだけちゃうんかと

210 :151 ◆0XlGlYK4pE :04/10/04 17:11:53
>>208
今画像の振り分けソフトを作っているんです
起動時にlistView1に画像のアドレスが一覧されていて
Form1上のMyClass.PictureBoxをクリックすると、listView1で選択されている画像ファイルが表示されるとともに
そのファイルがMyClass.ListViewに追加されるというものです

この処理をすべてForm1のメソッドでやればいいんですけど、MyClassを何十個も増やせるようにしたいので
そうなってくると非情に面倒な結果になります

あと、今適当にやってたら、プロジェクト右クリックでユーザーコントロール追加できるんですね
これで簡単にユーザーコントロールをグラフィカルに作ることができました。これ便利ですね
クラスの説明とかはいろいろあるのに、VC#自体の説明書がないので、まだ、このソフト使い慣れてない・・

で、ユーザーコントロールは簡単に作ることができて、フォームに追加することはできたんだけど
いざ、デガッグしようとすろと、ユーザーコントロールはビルドされていなければいけませんと出て
やっぱり、いちいちビルドしてからでないと使えないみたいです

211 :デフォルトの名無しさん:04/10/04 17:11:59
グダグダになってまいりました。

212 :デフォルトの名無しさん:04/10/04 17:13:20
おまえらもう151にはかまうなよ。
151は自分の分をわきまえろ。
んな高度なもん作る前にやることがあるだろ。

213 :151 ◆0XlGlYK4pE :04/10/04 17:13:27
>>209
ええ、そうなんですよ。その作り方もわからなかったし、存在すら知らなかった・・

でもIDEでGUIで作れたので便利です。IDEの説明がもっと充実していればなぁ

214 :199:04/10/04 17:36:37
本当にトリップつけて続けるとは思わなかった。
とりあえず151は入門書を256回読んでから首吊れ。


215 :デフォルトの名無しさん:04/10/04 17:39:08
おまいらせっかくトリップ付けてくれたのは、あぼーん設定しろって意味なの分らんの?
それはともかくとして、このスレもう4年も経つんだな。

216 :デフォルトの名無しさん:04/10/04 17:44:07
最初のスレの>>3


     〆 ̄TTTTTTTTTTTTTTT7
     | =|  ̄ ̄ ̄┴┴┴ ̄ ̄ ∨
    |=|  ̄ ̄――― ̄    |
     | =| 巛lllllllllllllllii ̄ ̄iillllllllllllll|
     | =|  ___llll  lll___|
    |=\人   o > /   o フ<
    |i⌒i| へ ̄ ̄,  \ ̄ ̄ , .|
    ||  |.|     ̄    \ ̄ |
    ||  ‖  //  (      | ヽ |
    | \| イ_   ^  ̄ ̄   |
     | ≡ ./|  \王I王I王I王I王フ|
    /| =/ |           |
   /  |/ 人    =≡≡=  ノ
― ̄|  \ へ _      イ
   |    \     ̄ ̄ ̄


217 :デフォルトの名無しさん:04/10/04 18:05:39
トリップ月の151は187なのか?

218 :デフォルトの名無しさん:04/10/04 20:00:15
MSDNにはコントロールを継承したクラスの内部のメソッドは作成元スレッド以外から呼んではいけない、
という風に載っていたのですが、この場合の内部というのはどこまでを指すのでしょうか?

public class Form1 : Form
{
/*独自のメソッド*/
public void MyMethod()
{
}
}

この場合、MyMethod()は別スレッドから直接呼び出しても問題ないでしょうか?

219 :デフォルトの名無しさん:04/10/04 20:04:10
>>218
それはクラスの外部のメソッドなのか?

違うだろ?

220 :151 ◆0XlGlYK4pE :04/10/04 20:13:15
>>218
パブリックなら普通に読めるでしょ
てか、オブジェクトについてもうちょっと勉強したほうがいいよ

221 :デフォルトの名無しさん:04/10/04 21:45:35
ごめんちょっとワラタw

222 :デフォルトの名無しさん:04/10/04 21:49:15
>>218
あなたが実装しなかったメソッド(つまり .NET Framework に含まれているメソッド)。
自分が実装したメソッドなら、他スレッドから安全に呼べるかどうかは自分でわかるはず。

たとえばその void MyMethod() は何もしないので当然他スレッドからも安全に呼べる。

223 :151 ◆0XlGlYK4pE :04/10/04 21:49:16
外野は黙ってろ

224 :デフォルトの名無しさん:04/10/04 21:56:58
>>217
本物の 151 はアドバイスに従って「ふらっとC♯(Part5)」へ移動、
187=偽151が面白がってあらしている状態だと思う。
読んでないけど。

225 :デフォルトの名無しさん:04/10/04 22:04:41
あの・・すいません・・
下のコードを実行すると、

public Form()
{
Init();
MessageBox.Show("form","");
}

private void Init()
{
MessageBox.Show("init","");
}

public void Form_Load(object s, EventArgs e)
{
MessageBox.Show("load","");
}

なぜか、
MessageBox.Show("form","");
MessageBox.Show("init","");
MessageBox.Show("load","");
の順番で実行(MessageBoxが表示)されます。
"form"と"init"の順番が逆な気がするんですが、なんでこうなるんでしょう(;´Д`)
プチパニック状態なんですが。

226 :225:04/10/04 22:09:14
Application.Run(new Form())で、Formのインスタンスを作る指令(?)が出されて、
まずコンストラクタ(Form())が実行されて、
その中でInitが呼び出されて、
最後に、Loadイベントが発生するんですよね。

なんか勘違いしてるんでしょうか・・・

227 :デフォルトの名無しさん:04/10/04 22:13:14
ん?おれは init->formの順で呼ばれたけど?

228 :デフォルトの名無しさん:04/10/04 22:14:05
やってみたがちゃんと
init→form→loadの順でメッセージボックスでるぞ

229 :デフォルトの名無しさん:04/10/04 22:19:06
問題なくバージョンにかかわらずinit->formだな。

230 :225:04/10/04 22:23:21
すいません。
Form()の中でMessageBox.Show("init","");
Init()の中でMessageBox.Show("form","");
を呼び出してました。 orz

231 :デフォルトの名無しさん:04/10/04 22:26:16
というか>>225の結果が不思議でならない

232 :151 ◆0XlGlYK4pE :04/10/04 22:28:41
>>230
( ゚д゚)ポカーン

233 :デフォルトの名無しさん:04/10/04 22:33:26
ここはひどいインターネッツですね。

234 :デフォルトの名無しさん:04/10/04 23:01:23
気を取り直して次の質問


235 :デフォルトの名無しさん:04/10/04 23:06:57
c#stdを使っているのですが
ユーザーコントロールを配置して
デバッグしようとすると、ユーザーコントロールはビルドされていないとダメって
コンパイル時に起こられるのですが、みなさんはどうしてますか?
VS.NETproとかだとこういうエラーはでないんですか?

236 :デフォルトの名無しさん:04/10/04 23:50:50
VS.NETだとソースにバグがあるとそのエラーで全部のコンパイルに失敗して
ユーザコントロールはビルドされていませんというエラーが出るけど、
バグを潰すとそんなエラーはでなくなって普通に動くよ。

237 :デフォルトの名無しさん:04/10/05 00:00:19
プラグインで機能を拡張可能なアプリを作りたいです。
Win32ではDLLすら扱ったことないのですが、
.netでプラグインを実現するにはどういった方法がありますか?

構想としては、
例えばある基底型をアプリ側で用意しておいて、
プラグイン側ではそれから派生して新しい型を作ってDLLにして、
アプリ側でそのDLLを動的に読み込んでその型のインスタンスを作る、
なんて流れが出来ればなあと思っているのですが、。、。

238 : ◆FIcNi4f8js :04/10/05 00:03:57
SetWndClassEX

239 :デフォルトの名無しさん:04/10/05 00:07:34
すまん、Genericsでなんだが
class hoge<T>
{
int num = 0;
T typ;

public hoge()
{
typ += num;
}
}
で、Tがint以外の時はエラーになるもんなん?

ボクシングが動くんだか動かないんだかよくわからんのですが・・・・。

240 :151ホンモノ ◆Ibpv.GcsrQ :04/10/05 00:16:07
>>235はふらっとC#に私がカキコしたもので
誰かがこのスレにコピペしました。

でもレスしてくれたので返答します
>>236
ソース自体にはなんらバグはありません。
どうやら、C#stdではDLL化していないユーザーコントロールは
一緒にコンパイルしてくれない仕様みたいですね。
もともと、私のC#std2002はクラスライブラリ作れない仕様ですし・・・

結局現在は、Formでインスタンス化してユーザーコントロールを使ってます
また、ここで質問していたことすべて実現しました。
どうもお騒がせしました。そして結果的に荒れた原因も作ってしまい
申し訳ありませんでした。

241 :デフォルトの名無しさん:04/10/05 00:20:33
>>239
なんでボクシングの話になるんだ?

operator + (T, int)
が定義されていないTだったら、どうやってもコンパイルできないだろ。

242 :デフォルトの名無しさん:04/10/05 00:21:32
operator+=ではなくて?

243 :デフォルトの名無しさん:04/10/05 00:23:38
>>237
ttp://vision.kuee.kyoto-u.ac.jp/~nob/doc/csharp/csharp.html
この辺が参考になるかな。

>>238
ttp://d.hatena.ne.jp/akiramei/searchdiary?word=%2a%5bC%23%5d
の下の方が参考になるかな?
Tが解決されるのはあくまで実行時。
Tに対して+なんて使うと問答無用でコンパイルエラーがでてしまう。
operatorはインターフェイスベースではないからwhereでの制限も不能なのだ。

244 :デフォルトの名無しさん:04/10/05 00:23:39
>>242
はい、C++と勘違いしてる厨房がいますよ

245 :237:04/10/05 00:36:01
>>243
貴重なページの紹介、ありがとうございます。

さっき書いた構想を、そのまま実装すればいいんですね。

246 :デフォルトの名無しさん:04/10/05 12:11:56
public Class A()
{
  private ListView lv1=new ListView();
  private B b=new B();

  private Add()
  {
    lv1.Items.Add("test");
    b.Add(lv1.Items[0]);
  }

public Class B()
{
  private ListView lv2=new ListView();

  private Add(ListViewItem item)
  {
    lv2.Items.Add(item) //実行時にここで複数の場所に追加できませんとエラーでます
  }


なぜエラーが出るのでしょうか?

247 :デフォルトの名無しさん:04/10/05 12:13:18
×private Add(ListViewItem item)
○public Add(ListViewItem item)
書き間違え

248 :デフォルトの名無しさん:04/10/05 12:32:03
>>246
ListViewItem は、複数の箇所(複数の ListViewや、一つのListViewに複数回)に追加できないからです。
Clone でコピーを作るか、新しく new で作るかして追加してください。

249 :デフォルトの名無しさん:04/10/05 13:49:05
>>248

b.Add((ListViewItem)lv1.Items[0].Clone);

b.Add(new lv1.Items[0]);

ということですか?

250 :デフォルトの名無しさん:04/10/05 14:11:38
リストボックスがForm1と2にあって、form1のlistboxからform2のlistboxへ
ドラッグ&ドロップにてデータの受け渡しをするにはどうしたらいいのですか?

251 :デフォルトの名無しさん:04/10/05 14:15:24
どのレベルでの解説を期待するのかな。
まずform2のListBoxのAllowDropをtrueにして、から?

252 :デフォルトの名無しさん:04/10/05 14:16:09
>>250
ttp://dobon.net/vb/dotnet/control/draganddrop.html

253 :デフォルトの名無しさん:04/10/05 15:22:08
>>249
おまえ151だろ

254 :250:04/10/05 16:28:54
>>252
の部分を改造してやってたのですが、よく見たらform2のListBoxのAllowDropをtrue
にしてなかったのが原因でした。

255 :デフォルトの名無しさん:04/10/05 23:15:33
pictureBox上のLabelを透過するにはどうすればいいですか?

256 :デフォルトの名無しさん:04/10/05 23:30:21
ちょっとくらい自分で探そうや。
ttp://www.google.com/search?num=100&hl=ja&lr=lang_ja&oe=utf8&q=picturebox+label+%E9%80%8F%E9%81%8E

257 :デフォルトの名無しさん:04/10/05 23:47:24
>>256
親コントロールをpictureBoxにしたのですがLabelが表示されないのですが
どうしてなんでしょ?

258 :デフォルトの名無しさん:04/10/06 00:01:25
その後でフォームの方のControlsにAddされてるとか?
背景TransparentでTextが空とか?

その周辺のコードも示さずにどうしてとか聞かれても。

259 :デフォルトの名無しさん:04/10/06 00:26:34
pictureBoxのControlsにAddして背景TransparentでTextは空じゃないです
LabelのTextだけpictureBoxの上に表示したいのです

260 :デフォルトの名無しさん:04/10/06 00:38:43
>>259
"その後で"フォームの方のControlsにAddされてるとか?

その周辺のコードも示さずにどうしてとか聞かれても。


261 :デフォルトの名無しさん:04/10/06 00:42:29
PictureBoxコンテナじゃないからAddしても表示されないと思うが。

262 :デフォルトの名無しさん:04/10/06 00:51:22
>>261
>  PictureBoxコンテナじゃないからAddしても表示されないと思うが。

実はGroupBoxなんかもControlから直接派生したクラスだったりするよ。

263 :デフォルトの名無しさん:04/10/06 00:56:55
>>260
後はAddされてないです

264 :デフォルトの名無しさん:04/10/06 00:59:48
>>262
GetStyle( ControlStyles.ContainerControl ) が false を返すという意味。

265 :デフォルトの名無しさん:04/10/06 01:10:41
>>264
へー、ControlStylesにこんなのまであったのか。知らなかった。
……でもLabelでもPictureBoxでもListViewでもControlsに入れた他の子コントロールを表示してくれるんだよなぁ。

>>263
その周辺のコードも示さずにどうしてとか聞かれても。
いい加減釣りか実のところ。

266 :デフォルトの名無しさん:04/10/06 01:12:14
パネルの中にピクチャボックスとラベルを兄弟として入れるのが正しいと思う

267 :在日外国人参政権反対:04/10/06 01:14:40
もう描画したほうが早いんでないの?

268 :デフォルトの名無しさん:04/10/06 01:20:13
>>266
> パネルの中にピクチャボックスとラベルを兄弟として入れるのが正しいと思う
それだと本末転倒。
Panelに対してLabelの背景の透過が適用されてしまう。

269 :デフォルトの名無しさん:04/10/06 04:02:09
 C#でSusiePluginを使ってPictureBoxに画像を読み込みたいのですがイマイチやり方が解りません。
DLLの呼び出し方をイマイチ理解してない事もあるのですが、何か良いサンプルは無いでしょうか?

ttp://www2f.biglobe.ne.jp/~kana/spi_api/index.html

SusiePluginの仕様はこの辺にあります。構造体とかどうやって渡せばいいんだろ…


270 :デフォルトの名無しさん:04/10/06 06:09:02
全スレで同じ事使用とした人がいたけど、成功したのだろうか。
私はC++でDLL作って、その中でSusiePluginよびだして、BITMAPデーターをC#に渡していた。
直接SusiePluginの関数をC#から呼ぶよりよほど簡単だった。


271 :デフォルトの名無しさん:04/10/06 13:23:01
ユーザーコントロールにcontextMenuを追加するとバグるのですが
仕様でしょうか?ユーザーコントロールのサイズが変化してしまう

バグるのでForm上でContextmenuを追加したのですが
クリックイベントでのsenderはmenuitemのオブジェクトしか返さないので
どのユーザーコントロールがクリックされたかわかりません。
ユーザーコントロールは配列で複数作っています

userControl[i].Click +=System.Event()

272 :デフォルトの名無しさん:04/10/06 13:53:01
string measureString = "This is a test string, will be printed at random offsets!";
int numChars= measureString.Length;

CharacterRange[] characterRanges = new CharacterRange[numChars];
for(int i = 0; i<numChars; i++)
characterRanges[i] = new CharacterRange(i, 1);
StringFormat stringFormat = new StringFormat();
stringFormat.SetMeasurableCharacterRanges(characterRanges); //ここでエラー

この断片コードを実行すると一番下の所でオーバフローが起きてしまいます。
いろいろ分析してみたんですが無理だったので分かる方教えてください。

273 :272:04/10/06 14:00:03
すみません。自己解決しますた

274 :本物 272:04/10/06 14:07:06
入力ミス?と思うのですが、まだ解決していません。


275 :デフォルトの名無しさん:04/10/06 14:14:02
>>272
SetMeasurableCharacterRangesの引数のCharcterRange配列要素数は最大32個までって制限。
なんでかはしらん。

276 :デフォルトの名無しさん:04/10/06 14:23:10
>>271
似たような状況で漏れは動的に menuItem を生成して、Hashtable に登録することにしました。
本筋は MenuItem の派生クラスを作って、Tag なり何なり追加することなんだろうけど。

277 :272:04/10/06 18:57:10
>>276
これよりもっとよい解決法ないですか?

278 :デフォルトの名無しさん:04/10/06 19:02:57
自己解決したんだろ?

279 :271:04/10/06 21:04:45
>>276
MenuItemを継承したクラスを作って
それをContextMenuに関連付ける方法がわかりません
ContextMenu.MyMenuItemと言う風に出すにはどうすればいいんですか?

280 :デフォルトの名無しさん:04/10/06 22:01:29
YourMenuItemを追加しておいて、
contextMenu.MenuItems[0] as YourMenuItem
なり
foreach (YourMenuItem i in contextMenu.MenuItems)。。。
なり、
なんだっていいんじゃないか?

281 :デフォルトの名無しさん:04/10/07 03:45:39
ネットワークアプリでHide状態のコントロールをShowすると
アプリが固まるんだけど、なんでだろう?

BeginInvoke(new ShowUICallback(playerGroupBox[i].Show));

みたいにBeginInvokeを通すと固まらないんだが、
そもそもBeginInvokeで何をしているのかも分からん。

282 :デフォルトの名無しさん:04/10/07 03:51:42
>>281
スレッド

283 :デフォルトの名無しさん:04/10/07 04:12:00
>>281
ドキュメント読めば分かるじゃん。

284 :デフォルトの名無しさん:04/10/07 09:58:32
VCとかのGUIスレッドをやりたいんだけど
ワーカスレッドしかないの?


285 :在日外国人参政権反対:04/10/07 10:03:16
>284
貴方の言ってるGUIスレッドとワーカースレッドの違いを教えてくれ

286 :デフォルトの名無しさん:04/10/07 10:19:51
↓のってDataGridViewの場合どう書けばいいですか?
DataGrid1.CurrentCell = new DataGridCell(0, 0);

287 :デフォルトの名無しさん:04/10/07 11:00:46
DataGridViewCellの派生クラスをnewしてやればいいんじゃない?

288 :デフォルトの名無しさん:04/10/07 11:08:13
あ、誤読?
SetCurrentCellAddressかSetSelectedCellCore辺り?

289 :284:04/10/07 11:13:37
>285
UIスレッドの間違い。すまん。
メッセージループがあるかないかの違いです。
Formから立ち上げたスレッドをイベントドリブンにしたいんす。


290 :デフォルトの名無しさん:04/10/07 12:03:02
>>289
そっちのスレッドでも Application.Run() すれば UI スレッドになるよ。
Win32 みたいにPostThreadMessageで簡単にインタースレッドで通知を行えないので、
Control 作って Invoke する and/or 自前でコマンドキュー用意したりする必要があるけど。

291 :デフォルトの名無しさん:04/10/07 13:37:45
>290
ありがとう!
早速ためしてみる!


292 :デフォルトの名無しさん:04/10/07 15:10:30
.net2003TheSpoke買ったらC#入ってたんですけど、
C#はMICROSOFTが提唱している言語でC#=即ちvisualC#
ということで合ってますか?

293 :デフォルトの名無しさん:04/10/07 15:25:27
>>292
C# = 言語
Visual C# = MS発のC#開発ツール(ほかにC# Builderとか。)

294 :デフォルトの名無しさん:04/10/07 15:27:19
>>292
C++ = 言語
Visual C++ = MS発のC++開発ツール(ほかにC++ Builderとか。)

295 :デフォルトの名無しさん:04/10/07 15:27:51
>>292
Java = 言語
JBuilder = Borland発のJava開発ツール(ほかにVisual J++とか。)

296 :292:04/10/07 15:51:22
>>293-295
あぁなるほど、確かにそうですね。サンクス

297 :デフォルトの名無しさん:04/10/08 00:03:01
場違いかもしれませんが、教えてもらいたいことがあります。
C#のPOPUPMENUってVB.NETで言うと何に当たるか教えてください。

298 :デフォルトの名無しさん:04/10/08 00:14:02
まずその「C#のPOPUPMENU」とやらの定義を聞こうか。

299 :デフォルトの名無しさん:04/10/08 00:33:56
今簡単なランチャーを作ろうと思っています。
Bevelを右クリックした時にアイコンの登録削除
のポップアップメニューが出るようにしたいです。

300 :デフォルトの名無しさん:04/10/08 00:43:17
.NET Frameworkのクラスライブラリは言語によらない。
VB.NETでもC#でも使うクラスは同じ。

301 :デフォルトの名無しさん:04/10/08 00:46:36
夜遅くありがとうございます。

302 :デフォルトの名無しさん:04/10/08 03:54:27
Bevelって何て読むの?
「ベベル」?

303 :デフォルトの名無しさん:04/10/08 03:57:14
>>302スレ違い

304 :デフォルトの名無しさん:04/10/08 10:54:52
ArrayListを配列で組もうと思うのですがどうしたらいいのですか?
AL[2][i].add("a"); // arraylist型変数の2個目に追加
↑みたいな事がしたいです。


305 :デフォルトの名無しさん:04/10/08 11:17:21
>>304
宣言がないと何がやりたいのかさっぱりわからん。

306 :304:04/10/08 11:34:10
private ArrayList[] AL;

AL=new ArrayList[5];
for(int i=0;i<3;i++){
AL[2].Add("a");   添え字2番目のところにaを追加
}
でやろうとしたらうまくできません。

やっぱりArraylistを複数使うには、
private ArrayList AL,AL2,AL3,Al4 ・・・;
AL=new ArrayList();
AL2=new ArrayList();
AL3=new ArrayList();
・・・・
の様にするしかないのかな・・・

307 :デフォルトの名無しさん:04/10/08 11:54:58
AL[2] = new ArrayList();

308 :デフォルトの名無しさん:04/10/08 11:56:38
>>306
配列を作るのと、その中のものをつくるのは別物。

ttp://pc5.2ch.net/test/read.cgi/tech/1065196964/

309 :304:04/10/08 12:02:13
AL=new ArrayList[5];
AL[0]=new ArrayList();
Newを2回しないといけないとは知らなかった。

310 :デフォルトの名無しさん:04/10/08 13:11:30
>>309
ArrayList[] l_aArrayList =
  new ArrayList[] {new ArrayList(),
             new ArrayList(),
             new ArrayList(),
             new ArrayList(),
             new ArrayList()};
っていう書き方をしたらわかる?

311 :デフォルトの名無しさん:04/10/08 17:28:59
>>309
> AL=new ArrayList[5];
AL[0]のコンストラクタは何時呼ばれるんだ?
ArrayListにデフォルト・コンストラクタが無かったらどう書くんだ?
AL[0]とAL[1]のコンストラクタに違う引数を渡したい時は?
AL[2]にArrayListのサブクラスを入れたい時は?

ってもう居ないか

312 :デフォルトの名無しさん:04/10/08 18:22:07
不確定プログレスバーってある?


313 :デフォルトの名無しさん:04/10/08 21:06:39
君の質問が不確定

314 :デフォルトの名無しさん:04/10/08 21:31:45
不確定テキストボックスってありますか。


315 :デフォルトの名無しさん:04/10/08 21:37:33
>>314
Delphi 6 で XP の manifest を使うと
テキストボックスがかなり不確定になります

316 :デフォルトの名無しさん:04/10/08 21:54:06
>>312
Windows の標準 UI には無いみたいだし、.NET にも無いみたい。
Explorer ではファイル飛ばしたりしてるよね。

317 :デフォルトの名無しさん:04/10/08 22:12:01
不確定プログレスバー


ナイト2000。

318 :デフォルトの名無しさん:04/10/08 22:53:21
>>316
さんくす

SmtpMail.Send() がコールバックくれないからどうしようかと・・
やっぱ適当に動かしチャオ

メーラとか以外と適当だよね。
ある程度計算してると思うけど
100%でずっととまってたり。


319 :在日外国人参政権反対:04/10/09 00:31:00
不安定ツリービュー

320 :デフォルトの名無しさん:04/10/09 01:08:17
>>319
なんか使いづらそうだな・・・

321 :デフォルトの名無しさん:04/10/09 02:55:41
おれのソフト見てくれ〜みたいなスレありませんか?

322 :デフォルトの名無しさん:04/10/09 03:06:36
>>321
書いたC#のコードを晒したいなら>>1のソース置き場とか。
この板に直接書こうとすると連投規制とか行数制限にかかる予感。

バイナリについての評価を求めてるならこのスレでなくて別の適切なスレで
聞いたほうがいい答えが返るんじゃないの。

323 :デフォルトの名無しさん:04/10/09 07:19:08
すみません。ControlCollectionついて教えてください。

ControlCollectionはIListを実装しているはずですが、
ControlCollection.Add(Control value)しかありません。

ControlCollection.Add(object value)の実装は
どこへいったのでしょうか?

また、このような実装は属性かなにかを使えばできるのでしょうか?

324 :デフォルトの名無しさん:04/10/09 07:43:12
>>323
インターフェイスの明示的な実装というものだ。
インターフェイスのメンバを実装させる時に、
int IList.Add(object value) {...}
と言う風に宣言することで、「その型からみて」隠蔽されるようになる。
こうすることでシグネチャが同じインターフェイスメンバと独自メンバが共存できるようになるわけだ。
StringCollectionのインデクサなんかが一番利点を感じられるところだな。

隠蔽されているとは言え実装は強制されているわけで、ではどう呼ぶかというと
「そのインターフェイス型なら確かにそのインターフェイス用のメソッド・プロパティが実装されている」。
つまりIListとして=IListにキャストしてAddを呼ぶと上のメソッドが呼ばれることになる。

325 :323:04/10/09 08:00:12
>>324
詳しい説明ありがとうございました。
数時間悩んでいたので助かりました。

326 :デフォルトの名無しさん:04/10/09 08:45:46
Delphi使いですが、VC#への乗り換えをしたいと
思ってます。
良い本ありましたら教えてください。

Cの文法は知っていますがVC++の経験はありません。


327 :デフォルトの名無しさん:04/10/09 09:01:13
Flash等のツールにあるタイムテーブルみたいなものをC#で作ろう思うのですが、
複数のレイヤーを同期させながらコマを進めるにはどうしたらいいのですか?

328 :デフォルトの名無しさん:04/10/09 09:07:36
>>326
Delphi使いなら、本読まなくてもMSDNだけでいけるかも。
自分はそうだった。

329 :327:04/10/09 09:13:07
コマを進めるにあたって正確な時間を計りながらコマを進めて行きたいのです。

330 :デフォルトの名無しさん:04/10/09 13:10:35
タイマをカウントするスッドレから
各オブジェクトにブロードキャストで通知してもらうとか

331 :デフォルトの名無しさん:04/10/09 13:32:16
sprintfと同じような機能の関数はありますか?

332 :デフォルトの名無しさん:04/10/09 13:33:41
無いです。

333 :デフォルトの名無しさん:04/10/09 13:40:58
Orz.....
month.ToString() + "月" + (ry とかだと醜いからsprintf欲しかったけど
ないならいいです。CodeProjectとかに落ちているかなあ?

334 :デフォルトの名無しさん:04/10/09 13:51:55
String.Format

335 :デフォルトの名無しさん:04/10/09 14:02:11
>>333
頭でけーよ!

336 :デフォルトの名無しさん:04/10/09 14:15:36
>>334
なるほど……

# 日付を例に出すのは良くありませんでしたね
# datetime.ToString("HH時mm分"); とかできますし

337 :デフォルトの名無しさん:04/10/09 18:40:57
FolderBrowserDialog.ShowDialog();を使ってフォルダ選択した後に、
もう一度 ShowDialog();した場合、ルートに戻ってしまいますが、

"C:\WINNT\system32"などを選んだ後に、もう一度ShowDialog();した場合、
そのディレクトリがすでに開いているようには使えないものでしょうか?

TreeViewで似たようなものを自作するしかないのかな?

338 :デフォルトの名無しさん:04/10/09 19:26:03
SelectedPathは{get; set;}だよ?

339 :デフォルトの名無しさん:04/10/09 23:54:10
テラリウム急にやりたくなってインスコしてみた



デフォルトの敵にも負けるorz

340 :デフォルトの名無しさん:04/10/10 10:06:16
DataGridViewCell c = dataGridView1.CurrentCell;
int rno = c.RowIndex;
int cno = c.ColumnIndex;
MessageBox.Show("現在のセル: " + rno.ToString() + "行," +
cno.ToString() + "列:\r\n" +
"値: " + dataGridView1[rno, cno].ToString());

.net2でこんな風に書いたら
角かっこ [] 付きインデックスを 'System.Windows.Forms.DataGridView' 型の式に適用することはできません。
って怒られます。。。どうしたらいいですか?

341 :デフォルトの名無しさん:04/10/10 13:32:26
そりゃDataGridViewにインデクサがないからだろ。
セルの値ならDataGridViewCell.Valueでいいじゃないか。

342 :デフォルトの名無しさん:04/10/10 14:18:38
>>341
ありがとうございましたm(_ _)m

343 :デフォルトの名無しさん:04/10/10 15:25:02
普通は、

static void Main(){
Application.Run(new Form1());
}

だけど、とあるソフトのコード見てたら、

static void Main(){
(new Form1()).ShowDialog();
}

だった。これってApplication.Runと同じかな?なにかメリット・デメリットはある?

344 :デフォルトの名無しさん:04/10/10 15:41:16
>>343
ttp://www.google.com/search?num=100&hl=ja&lr=lang_ja&oe=utf8&q=application%2Erun+showdialog

345 :デフォルトの名無しさん:04/10/10 16:09:46
>>344
どうも。その検索方法をすっかり忘れてた

346 :デフォルトの名無しさん:04/10/10 16:38:24
StreamReader.ReadLine でブロックしている際に、別スレッドから Close を行うと
ReadLine は IOException とかを投げ返してくるのですか?

それと関連して、TcpClient から作成した NetworkStream を StreamReader で包んで、
同じように ReadLine でブロックしている際に TcpClient.Close を行うと
IOException (or SocketExceptopm) が投げられるのでしょうか?

とりあえず、ブロックが解除されればいいのですが……

347 :デフォルトの名無しさん:04/10/10 17:35:57
テラリウムやってるんだけどさ
虫がいないんだよ

誰か無視うpしてくれ

348 :デフォルトの名無しさん:04/10/10 17:51:33
>>346 テストクラス。出力を適当にリダイレクトしてforで1000回ぐらい回してみる。

public class OpenCloser {
   public OpenCloser(int count) {
      string file = count.ToString() + ".txt";
      FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write);
      StreamWriter writer = new StreamWriter(fs);
      writer.WriteLine(new string('.', 100000) + ".\r\n");
      writer.Close();
      fs = new FileStream(file, FileMode.Open, FileAccess.Read);
      reader = new StreamReader(fs);
   }
   public void Start() {
      Thread close = new Thread(new ThreadStart(Close));
      Thread read = new Thread(new ThreadStart(Read));
      read.Start();
      close.Start();
   }
   StreamReader reader;
   void Close() {reader.Close();}
   void Read() {
      try {reader.ReadLine();}
      catch (ObjectDisposedException ex) {Console.WriteLine("closed");}
      catch (Exception ex) {Console.WriteLine(ex.ToString());}
   }
}

349 :デフォルトの名無しさん:04/10/11 04:07:40
電源オプションに、
会社のデスク
ラップトップ
常にオン
とかありますけど、この設定が変更された場合に、その値を取得したいんですが、どうやったらいいですか?
Microsoft.Win32.SystemEvents
あたりで何とかなりそうなんですけど・・・

350 :デフォルトの名無しさん:04/10/11 04:14:12
>>349
なりません。

351 :デフォルトの名無しさん:04/10/11 05:00:57
なんでそんなマニアックな

352 :デフォルトの名無しさん:04/10/11 05:26:38
>>349
レジストリ調べてみ

353 :デフォルトの名無しさん:04/10/11 05:33:30
>>352
どうもありがとうございマンモス。
レジストリから取得することにします。

354 :デフォルトの名無しさん:04/10/11 06:26:34
マンモス

355 :デフォルトの名無しさん:04/10/11 07:32:02
マンモスマンはかっこよかったよね

356 :デフォルトの名無しさん:04/10/11 08:08:51
そういや、いただきマンモスとかの、「〜マンモス」って、マンモスマンが元ネタなの?

357 :デフォルトの名無しさん:04/10/11 09:10:43
>>338
{get; set;}でしたか、どうもありがとう。
このスレのびるの早いですね。

358 :デフォルトの名無しさん:04/10/11 09:11:54
>>256
のりぴー、じゃねぇの。

359 :デフォルトの名無しさん:04/10/11 10:11:15
まんもすうれぴー?

360 :デフォルトの名無しさん:04/10/11 10:20:23
まんかすうれぴー

361 :デフォルトの名無しさん:04/10/11 10:50:48
そろそろマンモスのAAが出てくるかな

362 :デフォルトの名無しさん:04/10/11 11:02:16
のりぴーのAAだろ?

363 :デフォルトの名無しさん:04/10/11 14:11:36
マンモスマンのAAだろ?
ていうか、スレ違いもいいとこ。

364 :デフォルトの名無しさん:04/10/11 18:46:40
そんなのりぴーももう33歳

365 :デフォルトの名無しさん:04/10/11 23:39:49
class MainClass
{

public static string s ="禿げ";

public static void Main()
{
SetText(s);
Console.WriteLine(s);
}

public static void SetText(string target)
{
target = "ヅラ";
}
}

これを実行すると、ヅラを出したいのに、禿げが出力されます。
SetTextの引数は文字列なのに、参照された s はなんで変更されないんでしょうか?
参照型変数をメソッドの引数にした場合、参照された値も変更されるんじゃないんですか?

366 :デフォルトの名無しさん:04/10/11 23:44:53
>>365
されないです


変数は“単なる名前付け”だと割り切ってしまうとわかりやすいかも

「s」という名前がついた string オブジェクトを SetText の引数として渡す。
SetText では渡されたオブジェクトを target という名前で処理する。

"ヅラ"というオブジェクトを target という名前に指定する

367 :366:04/10/11 23:46:18
ちなみに

『SetText(s);』を『SetText(ref s)』に、
『SetText(string target)』を『SetText(ref string target)』にするとできたりする

368 :デフォルトの名無しさん:04/10/11 23:47:02
>>366
365じゃないが。
おお、すごくわかりやすい説明だ。
私だとつい参照がどうとか言い出したくなってしまう。

369 :366:04/10/11 23:50:36
>>366 は、最終的に s という名前は "禿げ" のままである事に注目


……名前じゃなくて、あだ名の方が適切かも
あだ名だと複数の識別詞がついても違和感ないし

370 :365:04/10/12 00:01:18
なんか微妙に不安なんですが・・・SetText()の中では、
メモリに、s とは別に、target という名前の領域を新しく作って、そこに"ヅラ"を入れてると考えて良いですか?
(s と target が指しているメモリの領域は別なんでしょうか?)

>>368
個人的には、参照どうとか言われたほうが分かりやすいです orz

371 :366:04/10/12 00:05:12
>>370
がんがって説明したのにOTL

メモリの話は正解です。
ちなみに、メモリ内に取った変数には“オブジェクトの場所(つまり参照)”が入っています。
オブジェクト本体は全然別のところにあるんですよ。

変数が作成されるメモリの領域は“スタック”、オブジェクト本体があるメモリ領域は“ヒープ”

372 :デフォルトの名無しさん:04/10/12 00:06:32
ここらへんC,C++やってないとよくわからなくなるんだろうなぁ

373 :デフォルトの名無しさん:04/10/12 00:13:02
ちなみにstringは参照型だが特殊で、変更不可と言うことになっている。
内容が変更される時には自動的に新しく領域が確保される、つまりnewされてるわけだな。

374 :デフォルトの名無しさん:04/10/12 00:19:41
アドレス1丁目の”s”マンションに人気者の”禿げ”の人が住んでいます
アドレス2丁目の”target”マンションに嫌われ者の”ヅラ”の人が住んでいます

ある日、禿さんがヅラさんに呼ばれtargetマンションに遊びに行きました
すると、ヅラさんはおまえも「ヅラかぶれよ!」と言われ禿げさんはヅラにされてしまいました
しかし、その禿げさんは影武者でホンモノはsマンションでテレビを見てたとさ。

375 :デフォルトの名無しさん:04/10/12 00:20:35
>>373
まるでBASICみたいだね


376 :デフォルトの名無しさん:04/10/12 00:27:14
>>373
そこは特殊ではないと思うのだが…

377 :デフォルトの名無しさん:04/10/12 00:31:08
>>374
わかりにくい

378 :デフォルトの名無しさん:04/10/12 00:38:14
>>365
>target = "ヅラ";
targetの参照先が新しいstringオブジェクト"ヅラ"に変わっただけ。

379 :デフォルトの名無しさん:04/10/12 01:22:05
>>376
明示的に new しなくても勝手に new されるってことじゃ?>参照型だが特殊

380 :デフォルトの名無しさん:04/10/12 01:32:19
>>365
>参照された s はなんで変更されないんでしょうか?

「target = "ヅラ";」は、targetの参照先の内容を"禿げ"から"ヅラ"に変えるのではなく、
targetの内容を"禿げ"のアドレスから"ヅラ"のアドレスに変えるから。
アドレスってのはちょっと嘘かも。

(例)
>>365のイメージ(間違い)
  sの内容:00001(番地)
  targetの内容:00001(番地)
  00001の内容:禿げ
    ↓
  sの内容:00001(番地)
  targetの内容:00001
  00001の内容:ヅラ

実際の動作
  sの内容:00001(番地)
  targetの内容:00001(番地)
  00001の内容:禿げ
    ↓
  sの内容:00001(番地)←ここは変わらない
  targetの内容:00002(番地)←ここが変わる
  00001の内容:禿げ
  00002の内容:ヅラ


381 :デフォルトの名無しさん:04/10/12 02:56:10
アドレス渡してるんじゃなくて、値だけをコピーして渡してるんだよな

ポインタとか知ってたら対した事ないんだけどな

無理なもんは無理って覚えたほうが早いな

382 :デフォルトの名無しさん:04/10/12 03:03:59
>>381
いやアドレス(のコピー)を渡してるよ? それが構造体じゃない限り。

383 :デフォルトの名無しさん:04/10/12 03:14:34
>>382
アドレスのコピーなんてありえねーだろ。バカ?
アドレスを保存してるレジスタセグメントのアドレスを渡すならわかるけどな
アセンブリもわかんねー糞はひっこんでろ

384 :デフォルトの名無しさん:04/10/12 03:54:17
のりぴー33歳かよ・・・


385 :デフォルトの名無しさん:04/10/12 05:04:23
>>383
藻前らBASICで文字列扱う時にメモリのことなんかいちいち考えてたか?
ここはC#スレなんだからそんなこと知らなくて結構
使えればいいんだよ


386 :デフォルトの名無しさん:04/10/12 06:59:14
みんながみんなお前みたいに志の低い人間じゃないんだよ(・∀・)

387 :デフォルトの名無しさん:04/10/12 08:50:22
レジスタセグメントって一体なんだろ…

388 :デフォルトの名無しさん:04/10/12 11:54:19
>>383
ええと、たとえばintを引数にすると、そのintの値をコピーして関数に渡す、と表現するよな。
アドレスと言いうのは実際には4バイトなり8バイトなりの整数値だよな。
そうすると、引数にクラスオブジェクトを渡すってことは
適当なオブジェクトhogeを指すアドレス値のコピーを渡すって表現でなにかまずいの?

389 :デフォルトの名無しさん:04/10/12 12:36:23
>>388
383はただの馬鹿だから放置しる。

390 :デフォルトの名無しさん:04/10/12 13:12:49
DataGridViewで現在のセルを設定するのはどうしたらいいですか?
↓じゃダメみたいです。。。
DataGridView1.CurrentCell = new DataGridViewCell(0, 0);



391 :デフォルトの名無しさん:04/10/12 13:36:07
>>390
ヘルプは持ってるよな?
DataGridViewのところにsetting the current cellって項目がしっかりあるぞ。

392 :デフォルトの名無しさん:04/10/12 13:46:38
>>391
ごめんなさい、ヘルプ無いみたいです。
無料で配布してるC#2005Expressのベータ?でやってます。。。
プログラミング初めてです。。。
今ちょうどVS2005のMSDNを見つけたのでなんとかできました。
ありがとうございました。

393 :デフォルトの名無しさん:04/10/12 13:58:52
いや、メニューバーのヘルプ(H)にインデックスとかないか?
それをヘルプと言ったわけだが。
MSDNと言うと普通オンラインのを指すような気がするし。
私自身はSDKとDocument Explorerしか使ってないからあんまりはっきりとは言えないが。

394 :デフォルトの名無しさん:04/10/12 14:06:13
>>393
インデックスありました。
ただ検索してもDataGridViewの項目は見つからなかったです。。。
インストール方法がおかしかったんでしょうか。。。
MSDNはオンラインのです。
http://msdn2.microsoft.com/library/yc4fsbf5.aspx

395 :デフォルトの名無しさん:04/10/12 14:47:31
>>394
ttp://www.microsoft.com/japan/msdn/vstudio/2005/express/vcsharp/readme/
の2.5かな?
インストール時にMSDN Expressを入れなかったのが原因なのかねぇ。よく分からないけど。

396 :デフォルトの名無しさん:04/10/12 15:18:29
>>395
そこを見てインストールしてみたら
ちゃんとヘルプが表示されるようになりました。
ありがとうございました〜!

397 :デフォルトの名無しさん:04/10/12 17:55:04
すいません、、メッセージループって何ですか?
マウスとかキーボードからのアクセスを感知するための、監視システムみたいなもんですか?

詳しく説明されてるサイトとかありましたら教えてください。

398 :デフォルトの名無しさん:04/10/12 17:58:18
>>397
多分スレ違い。

399 :デフォルトの名無しさん:04/10/12 18:02:23
>>397
主にWindowsの仕組みの話なのでWindowsプログラミングのスレで
聞いたほうがより詳しい答えが期待できるのでそっち推奨。

400 :デフォルトの名無しさん:04/10/12 18:04:02
マウスカーソルがフォーム上のある領域に入ったらアイコンが変わるって事を
したいのですが、どの様にしたらいいのですか?

401 :デフォルトの名無しさん:04/10/12 18:06:01
MouseMoveイベントで範囲を判定してアイコンを換える。
むしろどこで悩んでるの?

402 :397:04/10/12 19:24:46
わかりますた。ていうかアスキーのデジタル用語辞典に載ってますた。
.NET限定の話じゃなかったんですね。

403 :デフォルトの名無しさん:04/10/13 00:00:48
現在Form1が存在します。その中に、入れ子状態でForm2とForm3を作りました。Form2とForm3の中にはそれぞれ、TabControlと3つのTabPageを配置しました。
 Form2のあるTabPageをドラッグしてForm3のTabContorlに追加し、結果としてForm2にはTabPageが2つForm3にはTabPageが4つというのを実現したいです。
 ぶっちゃけVS.NETっぽいDockingWindowを既製品使わないで作ってみたい暇人なのですが、作れないと夜も眠れないので、ヒントをちょびーーっと教えてください。

404 :デフォルトの名無しさん:04/10/13 00:11:47
ドラッグ中はフォームの上に乗って無くてもマウス移動追跡できるっけ?
出来る前提で。

ドラッグ開始

枠描画

ドラッグ終了

元のフォームの上だったら何もしない。
別のフォームの上だったらタブ移動。
何も無いところだったら新しいフォーム作る。


405 :デフォルトの名無しさん:04/10/13 01:02:10
>ドラッグ中はフォームの上に乗って無くてもマウス移動追跡できるっけ?

ドットネットでは、OnMouseDownで自動的にCaptureが呼ばれてるみたいやね。


406 :デフォルトの名無しさん:04/10/13 01:22:26
>403
そのての奴だが、ドラッグスタート時に全体を覆う透明ウィンドウ作ってそこでどのウィンドウの上にあるか処理したほうがすっきりしない?
いっこいっこのウィンドウでやると煩雑になる希ガス

407 :デフォルトの名無しさん:04/10/13 13:23:43
System.Windows.Forms.ListViewにチェックボックスオプションをつけたものを使用しています。
デフォルトの動作ではアイテムのダブルクリックでこのチェックボックスのOn/Offが切り替わるのですが、これを抑制する方法についてご存知の方いませんか?

408 :デフォルトの名無しさん:04/10/13 18:58:11
TabControlで右クリでもタブを切り替えることって可能ですか?できそうだけど何故か見つからない。

可能ならご教授ねがいたいす。

409 :デフォルトの名無しさん:04/10/13 19:18:52
>>408
TabControl の MouseDown イベントハンドラに以下のコードを追加

if (e.Button == MouseButtons.Right) {
    for (int i = 0; i < tabControl1.TabCount; i++) {
        if (tabControl1.GetTabRect(i).Contains(e.X, e.Y)) {
            tabControl1.SelectedIndex   = i;
            break;
        }
    }
}

410 :408:04/10/13 20:03:32
>>409
できました。禿しくサンクス。

GetTabRectか…
配置されてるタブ本体の範囲かと思ってスルーしてたよ。
でも考えてみるとそれだったら全部のタブ同じ値になるから存在価値なくなるか。

411 :デフォルトの名無しさん:04/10/13 20:22:16
C♯で定数の配列はどう作ればいいですか?
いろいろやってみましたができませんでした。。。

412 :デフォルトの名無しさん:04/10/13 20:26:36
>>411
ラッパークラスを1つ作ってインデクサに get のみを記述すれば OK
Array からの派生はできないから厳密には配列じゃないけど、記述上は配列っぽくなる。

413 :デフォルトの名無しさん:04/10/13 22:14:54
>>409
美しいコードだー


414 :409:04/10/13 22:18:19
>>413
twintail2 のコピペだった気がする(笑

415 :デフォルトの名無しさん:04/10/13 22:22:15
個人的には極めて自然で自分でもこう書くだろうと思ったんだけど、
413の人はどんなコードを思いつくんだろう?

416 :デフォルトの名無しさん:04/10/13 22:32:08
他の.NETコントロールと比べると、美しくないくらいだと思うがな。
 tabControl1.Tabs[i].Rectangle.Contains(e.X, e.Y)
のほうが、統一感がある。
まぁ、Rectangle以外に何のプロパティがあるのかと言われると困るが。

417 :デフォルトの名無しさん:04/10/13 22:40:23
>>416
tabControl1.TabPages[i].Bounds.Contains(e.X,e.Y)

418 :デフォルトの名無しさん:04/10/13 22:45:11
>>417
これだとタブページ内の領域なのかタブの領域なのか分かんない罠
おそらくタブ部分を管理しているのは TabPage じゃ無くて TabControl だから、俺は

tabControl1.GetTabRect(i).Contains(e.X, e.Y)

が今まで上がったコードの中で一番わかりやすい。

419 :デフォルトの名無しさん:04/10/13 22:49:15
わざわざTabControl.Tabクラス(とそのコレクション)作ってそれで管理、なんてのは冗長に過ぎると思うなぁ。
そうするとTabクラスとTabPageクラスにも直接的な関係を持たせたくなってしまうし。

420 :デフォルトの名無しさん:04/10/13 22:50:05
Enumで各要素に16進数など割り当てることが可能ですよね。
public enum Week { Sun = 0x01, Mon = 0x02, Tue = 0x04, ・・・
のような感じで。

そこで、 Week days = Week.Mon | Week.Thu | Week.Wed;
のように使われていた時、daysにMonのフラグが立っているか
チェックしたい時に、スマートな記述方法はどうするのでしょうか?



421 :デフォルトの名無しさん:04/10/13 22:54:40
if ((days & Week.Mon) != 0) {...}

なにが「そこで」なんだろう?

422 :デフォルトの名無しさん:04/10/13 22:57:01
>>420
(days&Week.Sun)!=0

423 :デフォルトの名無しさん:04/10/13 22:57:10
なるほど。有難うございました。お手数おかけしました。
首吊ってきます・・・orz

424 :デフォルトの名無しさん:04/10/13 23:03:56
>>421
この場合のdaysはint?
できればWeekと関係のある型にしたいと思ったけど適当なのが見つけられない。

425 :デフォルトの名無しさん:04/10/13 23:04:21
>>421
そこで……って『@』と同じ意味だと思ったけど、違うのか?

426 :デフォルトの名無しさん:04/10/13 23:10:15
>>425
いや、なんか16進数で指定したら特別な処理が必要なんじゃないかと疑っているように読めたから。
本質的に1段落目そのものが不要なわけで。

>>424
例で示されているとおりWeek型だけど?
デフォルトではintだわね。

427 :424:04/10/14 00:00:57
>>426
勘違いしてました。感謝。

列挙型って定義されてない値(この場合0x03とか)も入るのね。
知りませんでした。

428 :デフォルトの名無しさん:04/10/14 03:07:09
知り合い(コンソールはなんとかいける)にWinアプリの作り方教えるハメになったんだけど、掴みはこんな感じでいいのかな?
なんか変なとこあったらツッコミキボン。
http://venus.aez.jp/uploda/dat/upload11013.txt

429 :デフォルトの名無しさん:04/10/14 03:26:21
>>428
そうだな、ぶっちゃけ対象者のレベルがわからん、というかブレてる。
usingの説明をする辺り触れたこともないのか、
メソッドやらプロパティやらは理解してるのか、
継承(大胆に言い換えればオブジェクト指向)の理解はどの程度なのか。

メッセージループの解説なんか正直初心者には不要。おまじないと言っておく。
Mainメソッド内の書き換えのところも蛇足。
Windows.Formsネームスペースはイクナイ。System.Windows.Forms。たまたま頭の6文字が同じだっただけのこと。


あと、ほんとにさわりだけなのでツッコミどころも探しづらい。

430 :428:04/10/14 04:12:22
STAThreadとMTAThreadの説明も入れようと考えてましたが、やめますた。orz
そういや、本人の書いたソース見たこと無いや。頭痛。

431 :デフォルトの名無しさん:04/10/14 06:54:15
教えてると「おまじない」はよく使うんだけど、いちいち気になるらしく、突っ込んで聞いてくる香具師がいる。
んで、教えると「ワケわからん」で、パニック状態になる香具師どうにかしてくれ。

432 :デフォルトの名無しさん:04/10/14 10:59:02
ドラッグドロップでドロップされた位置を知るために
Forms.DragEventArgs e
のX,Y座標を取得してるのですが、値がウィンドウ座標ではなくディスプレイ座標になってしまいます。
この座標値をウィンドウ座標に変換するにはどうしたらいいのですか?

433 :デフォルトの名無しさん:04/10/14 11:23:54
this.PointToClient(new Point(e.X, e.Y));

434 :デフォルトの名無しさん:04/10/14 11:27:10
>>431
教える方も少しは学習するべきだと思う

435 :デフォルトの名無しさん:04/10/14 12:52:57
と開き直る奴も多い

436 :デフォルトの名無しさん:04/10/14 13:02:41
>431
教え方が悪いことも自覚しよう

437 :デフォルトの名無しさん:04/10/14 16:24:50
と開き直る奴も多い

438 :デフォルトの名無しさん:04/10/14 16:53:10
うーんSystem.Windows.Forms.DataGridで
行ヘッダーの高さをマウスで変更できるのをやめさせたいのだが
方法がつかめない。

さんざん検索したつもり。

439 :デフォルトの名無しさん:04/10/14 17:01:51
い~から既存の奴つかうのやめて自作しろって
そのほうが速い

440 :デフォルトの名無しさん:04/10/14 18:44:33
>>439
どうやって自作するんですか?
PictureBox とかに罫線を描画しまくるんですか??
いい知恵があったら教えてちょ~だいマセ。

441 :デフォルトの名無しさん:04/10/14 18:48:40
継承。
ロマサガ2やってりゃわかるが、最終皇帝を強くするために技覚えまくったろ。

442 :デフォルトの名無しさん:04/10/14 19:22:06
わかんねぇよ、どのあたりのクラスから継承するんだよ。

443 :デフォルトの名無しさん:04/10/14 20:31:49
>440
いえ、フォームに気合で描画です.
ほかのコントロールも結局は同じことしています.

444 :デフォルトの名無しさん:04/10/14 21:30:49
>>443
予想はしていたが、ちょっと気が遠くなるなー。
でも、いまどきのフラットスタイルのGUIならば、なんとかなりそうだ。

445 :デフォルトの名無しさん:04/10/14 21:40:58
なんでフラットなGUIに回帰したのかね。
凸凹コントロールスタイルはCoolじゃないとBillが言ったのか?
(となると漢字Talk6はvery Coolだ)

ライブラリや言語の話じゃないな、スマン.....

446 :デフォルトの名無しさん:04/10/14 21:51:36
Cool!! Cool!! Cool!!

447 :デフォルトの名無しさん:04/10/14 23:26:14
>>445
Webの流行が原因。
Webサイトはたいていフラットなデザインだからな。

448 :デフォルトの名無しさん:04/10/14 23:40:53
フラットのほうが(・∀・)イイ!!
立体ボタンはごてごてしすぎ

449 :デフォルトの名無しさん:04/10/15 00:22:54
そこで3Dディスクトップですよ

450 :デフォルトの名無しさん:04/10/15 00:28:33
まぁMicrosoftWindowsを一から作れってこった。

無能ども。

451 :デフォルトの名無しさん:04/10/15 02:34:30
FormのなかにFormを表示するにはどうしたらいいですか?

452 :デフォルトの名無しさん:04/10/15 02:35:42
>>451
MDI?

453 :デフォルトの名無しさん:04/10/15 02:44:15
あるいはこんなの?
ttp://dobon.net/vb/dotnet/form/formwithinform.html

454 :デフォルトの名無しさん:04/10/15 02:45:24
>>453
ありがとうございました。
大変助かりました。

455 :デフォルトの名無しさん:04/10/15 08:50:31
http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_015/csharp_abc04.html
に実数のソートサンプルがありますが整数部しかソートされていません。
これを小数部の所までソートするにはどうしたらいいのですか?

456 :デフォルトの名無しさん:04/10/15 09:05:28
>>45
 そんな釣りにクマー

457 :デフォルトの名無しさん:04/10/15 12:06:30
自分のクラスのコンストラクタを呼び出すとき、
this()
と書いて呼び出せるの?

458 :デフォルトの名無しさん:04/10/15 12:14:18
コンストラクタ初期化子としてはそうだな。
普通のメソッドからはコンストラクタは呼び出せないのでそういうのが必要な場合は
その部分だけプライベートメソッドに切り出して呼び出す。

459 :457:04/10/15 14:12:10
例えば、

class A {
public A(String name) {
// ここからAクラスのコンストラクタA(String, bool)を呼び出したい。
}

public A(String name, bool flag) {
}
}

ときどうすればいいのでしょうか?

this(String, bool)としたらコンパイラに怒られました。

460 :デフォルトの名無しさん:04/10/15 14:23:23
せっかくコンストラクタ初期化子って名前出したんだから調べようや。
ヘルプのコンストラクタのところ見るとかさ。

461 :457:04/10/15 14:41:55
>>460
すいません…。
ありがとうございました。

462 :デフォルトの名無しさん:04/10/15 15:19:52
>>430
さんの言うSTAThreadとMTAThreadってどういう意味があるんでしょう?

STAThreadはどうやらCOMに関係あるらしい事までしかわからないし
MTAThreadに至っては検索してもヒット数が少なすぎて・・

463 :デフォルトの名無しさん:04/10/15 15:30:23
前スレで話題になったな。
COMに関してはこの辺。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconinteropmarshalingoverview.asp
ウィンドウがSTAThreadなのはこの辺。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpcondevelopingmultithreadedwindowsformscontrol.asp


464 :デフォルトの名無しさん:04/10/15 15:31:54
両方ともCOMだ
シングル・スレッド・アパートメントとマルチ・スレッド・アパートメントの略
関係ないがインド人はスレッドのことをトレッドトレッドといってたので最初は何いってるかわからんかった

465 :デフォルトの名無しさん:04/10/15 15:41:25
>>463
>>464
ありがとうございます

むぅ。むつかしい
とりあえず

「マーシャリング」
「COM アパートメント」
から勉強して出直してきます

466 :デフォルトの名無しさん:04/10/15 22:51:33
STA/MTA関連で追加。
ttp://www.borland.co.jp/delphi/papers/com/com02.html
なかなかグラフィカルで分かりよい。
//COMerには常識的なことなのかな……。

467 :デフォルトの名無しさん:04/10/17 16:20:37
IEの「ファイルのダウンロード」ダイアログを使う方法を教えてください。
非IE版のJaneでも使用されているので、IEに限らず他のプログラムから利用できると思われます。

468 :デフォルトの名無しさん:04/10/17 16:28:27
Janeならソースがあるジャン

469 :デフォルトの名無しさん:04/10/17 18:50:40
openFileDialogで取得したFileNameを別のFileNameを取得したときも残しておくにはどうすればいいですか?

470 :デフォルトの名無しさん:04/10/17 18:52:54
>>469
適当な変数にとっておけ

471 :デフォルトの名無しさん:04/10/17 19:00:07
>>467
http://jane.cun.jp/test/read.cgi/win/1039936961/540-

shdocvw.dllのDoFileDownloadっていう関数のようだが、Delphiは分からないので、引数とかは自分でがんばってくれ。

472 :デフォルトの名無しさん:04/10/17 21:00:29
button1のプロパティを全部button2にコピーする簡単な方法ってありますか?

473 :デフォルトの名無しさん:04/10/17 21:03:14
>>471
[DllImport("shdocvw.dll", CharSet=CharSet.Unicode)]
extern static int DoFileDownload(string lpszFile);
でできました。ありがとう。

474 :デフォルトの名無しさん:04/10/17 21:37:22
イベントハンドラの変数を他のイベントハンドラから参照する方法ってあるの?

475 :デフォルトの名無しさん:04/10/17 21:42:15
>>474
質問が漠然としすぎなので具体的に。

476 :デフォルトの名無しさん:04/10/17 21:42:17
フィールドに代入しとけ。

477 :デフォルトの名無しさん:04/10/17 21:52:45
タブ型のメモ帳みたいなの作ろうと思って
上書きするときにopenfiledialogで取得したfilenameを使って上書きしようと思ったんですけど
たとえばA.txtを開いてB.txtを開いたあとA.txtを上書きしようと思ったらもちろんのことfilenameはB.txtのものであるわけです。
タブを作るときにopenfiledialogのfilenameで一応残してあるのですが・・・



478 :デフォルトの名無しさん:04/10/17 22:01:55
……。
ふらっとC♯
http://pc5.2ch.net/test/read.cgi/tech/1065196964/

TabPage.Tag辺りに入れとくとか、それ用の管理クラス作るとか。

479 :デフォルトの名無しさん:04/10/17 22:04:35
>>478
そちらのスレッドの方がふさわしいですね。
スレ汚しすいませんでした。

480 :デフォルトの名無しさん:04/10/18 16:34:55
ADO.NETの接続プールとかが、いまいち理解できないんだけど、
たとえば二つのフォームそれぞれにConnectionコントロールを作った場合、
それだけで二つ分の接続を使ってしまうってことになってしまうんでしょうか?

481 :デフォルトの名無しさん:04/10/18 21:52:01
接続プールがどういうもんで何のためにあるのか勉強しよう。

482 :デフォルトの名無しさん:04/10/19 22:08:53
スレ違い覚悟で質問。
enumの名前はどうつけたらいいか迷ってる。
例えば車の名前のenumを作るとしてCarとすると、
同名のクラスやプロパティが作れない。
Carsと複数形にすると、複数形のプロパティを作りたくなったときに困るし、
複数形にすることを好ましくない作法とする向きもある。
(Keys列挙体とかクラスライブラリにもあるんだけどね)
じゃあCarName? 他のenumも全部〜Nameにしないと統一感がないし、
しかしそれでは冗長だし。
何かいい基準ってない?

483 :デフォルトの名無しさん:04/10/19 22:17:37
>>482
 CarType もしくは CarEnum でどうよ?

484 :デフォルトの名無しさん:04/10/19 22:41:12
>>482
俺もCarTypeでいいと思う。
それはそうと複数形のenumはFlagsAttributeがついてないか。

>>483
ガイドライン曰くEnumサフィックスつけるなとさ。

485 :デフォルトの名無しさん:04/10/19 22:41:57
そもそも車の名前で列挙体ってのもどうだろう? と思ってしまったりしなく無くもないこともない。
まあ、私なら普通にCarNameだろうなぁ。
でも例えばブルーバードかグロリアか、ならCarTypeにするだろうし。
あと複数形かどうかは基本的にFlags属性つきかどうかで分けてるよ>.NET Framework

486 :482:04/10/19 22:59:32
>>483-485
レスありがとう。
プレ(サ)フィックスでEnumはやめれ、というのは何かで見た気がする。
クラスライブラリの単/複数はそういう違いがちゃんとあったのか。
けして恣意的なものじゃなかったんだ。(日本語と違って
その辺りは明確に区別する言葉が発祥だしね)

すごく参考になりました。
サフィックスにName、Typeを適所で使い分けてみる。

487 :デフォルトの名無しさん:04/10/19 23:08:14
string data = "abc゚";
int index = data.IndexOf("c");

これだとindexは2のはずなんですが、なぜか-1になってしまいます。

 ゚ ←が検索文字列の右に含まれていると正しく検索できないのですが、
なんででしょうか。。

488 :デフォルトの名無しさん:04/10/19 23:32:42
>>487
Unicodeの仕様について余り詳しくないからはっきりとはいえないけど、
濁点・半濁点は直前の文字と合わさって一つの文字として判定されて居るんだと思う。
ポはホと゚の二文字じゃなくてあくまでポと言う文字として考える、と。
文字の情報として、分けたら意味を失うわけで。
ちなみに全角の濁点半濁点も同じだった。

で、それとは別にstringはcharの配列でもあるわけで、abc゚は4つのcharを持っているから
Lengthは4を返す、と。
そういうことではないかな。

489 :デフォルトの名無しさん:04/10/20 00:03:25
EnCar

490 :487:04/10/20 00:04:50
>>488
なるほど!そういうことだったのですか。
仕方ないので一文字ずつ判定して検索することで解決しました。
わかりやすい説明サンクスでした。

491 :デフォルトの名無しさん:04/10/20 01:34:07
しょうもない質問なのですが、
エクセルより劣る見た目よさげなグラフ機能を自作しようと、休日がんばっているのですが、
GDI+とC#+DirectX9どちらで実装するほうが良いのでしょうか。

492 :デフォルトの名無しさん:04/10/20 01:35:45
何を以て「良い」のかわからないので答えようがありません。

493 :デフォルトの名無しさん:04/10/20 02:42:59
3DでぐるぐるしたいのならDirectX9と適当に答えてみる。


494 :デフォルトの名無しさん:04/10/20 03:19:07
Windows フォームのPanelの上にフォームを
this.formHoge.TopLevel = false;
this.panel1.Controls.Add(this.formHoge);
とかで貼り付けています。

this.panel1.AutoScroll をTrueにしてスクロールバーを自動表示させたいのですが
formHoge.Sizeの高さを5000とかすると
デスクトップウィンドウのサイズ制限にひっかっかってしまい
タスクバーをのぞいたデスクトップウィンドウのサイズまでしか拡張できません。

どのようにすればこの制限を解除できますが?

495 :デフォルトの名無しさん:04/10/20 08:44:51
>>494
設計に問題がある

終了

496 :デフォルトの名無しさん:04/10/20 14:52:17
TcpClient tcpcl = new TcpClient("hoge", 5678);
StreamWriter sw = new StreamWriter(tcpcl.GetStream(), Encoding.ASCII);

StreamWriter.Close には『現在の StreamWriter と基になるストリームをクローズします』と書いてありますが、
もしかして上のように作成した sw って tcpcl が生存している間は破棄したらマズイですか?

497 :デフォルトの名無しさん:04/10/20 15:13:18
>>496
まだ使いたいんならまずいんじゃないの?

498 :デフォルトの名無しさん:04/10/20 18:55:47
GotDotNetJapanとAtmark(@)ITの掲示板は、
どっちが雰囲気がいい?

499 :デフォルトの名無しさん:04/10/20 19:07:17
自分で確認すれ。

500 :デフォルトの名無しさん:04/10/20 21:34:22
どっちかといえばGotDotNetJapanのほうか
まあ好き好きでは・・

501 :デフォルトの名無しさん:04/10/20 23:21:23
Visual C#.NET Standard2003だけを持っているんですが
ユーザコントロールのテンプレートが出ないんですけど
なんか方法ありますか?

502 :デフォルトの名無しさん:04/10/21 02:24:02
MSN Messenger の「Windows へのログオン時に Messenger を実行する」みたいに
自動でexeを実行するにはどうしたらいいんですか?

503 :デフォルトの名無しさん:04/10/21 02:28:07
>>502
Windows サービス アプリケーション
でヘルプを調べてみそ。

504 :デフォルトの名無しさん:04/10/21 02:29:16
>>502
ヘルプくらい読もうね。

Windows.UserLogon += new EventHandler(this.Execute);


505 :デフォルトの名無しさん:04/10/21 04:22:33
>504
それちょっと感動した。

506 :デフォルトの名無しさん:04/10/21 08:01:07
http://mahoro.hazukicchi.net/img/img20041018234239.jpg

507 :デフォルトの名無しさん:04/10/21 08:13:21
ニートは歴史に名を残すのか?

508 :デフォルトの名無しさん:04/10/21 08:42:05
いくら一部をいじっているとはいえ、現金を写して公開するのは違法。

509 :デフォルトの名無しさん:04/10/21 08:45:57
スキャンするだけで確かタイーホだったよな?

510 :デフォルトの名無しさん:04/10/21 14:31:20
C#を1時間でマスターしたい
Javaはマスターしてる

つかかってるのは次の2つだ
・stringやらintやらを new するってなんなんだよ。これはクラスなのか?
・delegateって何?Javaでいうと何なの?actionPerformedとかAppletのinit()とかか?

さぁ教えやがれ

511 :デフォルトの名無しさん:04/10/21 14:39:05
>>510
Javaをマスターしてるとはおもえん。

512 :デフォルトの名無しさん:04/10/21 14:39:44
>>510
Javaをマスターしてるとはおもえん。

513 :デフォルトの名無しさん:04/10/21 14:42:01
>>510
Javaをマスターしてるとはおもえん。

514 :デフォルトの名無しさん:04/10/21 14:53:56
>>510
delegate = メソッドを引数にとってインスタンスをつくり、そのメソッドと同じような働きをする。
ま、単純にいえばカプセル化。
イベント機能用だろうから、デリゲート単独で使うことはほとんど無いと思う。

class MainClass
{
delegate void HageDelegate(string hage);//デリゲート宣言

public static void Main()
{
MainClass c = new MainClass();
HageDelegate deleg = new HageDelegate(c.MakeHage); //メソッドを引数に取り、デリゲートのインスタンス作成(戻り値の型、引数の数と型は対象メソッドと同じにする)
deleg("hage"); //対象にしたメソッド(ここではMakeHage)と同じ働きをする。
}

public void MakeHage(string s)//デリゲートの対象メソッド。画面に引数の文字列を表示するだけ
{
Console.WriteLine(s);
}
}

515 :デフォルトの名無しさん:04/10/21 14:59:37
タブコントロール内のtabPageが隣のページに切り替わった
というイベントを取得するにはどうすればいいのですか?

516 :デフォルトの名無しさん:04/10/21 15:02:49
>>514
わかったわかったー♪
これで先に進めるよ〜♪お兄ちゅんありがとう☆

517 :デフォルトの名無しさん:04/10/21 15:10:04
>>515
TabControl.SelectedIndexChangedイベント。
隣のページって限定なら、あらかじめ現在のページのインデックスを記録しておいて、
切り替えイベントが起きてから、移動前後のIndexを比べて、隣かどうか判定。

518 :デフォルトの名無しさん:04/10/21 16:56:33
new Form().Show();

こんな書き方出来ますか?

519 :デフォルトの名無しさん:04/10/21 16:58:26
>>518
出来る。当たり前。
ていうか、どう見ても釣りだよな・・・orz

520 :デフォルトの名無しさん:04/10/21 17:01:06
ワラタ

521 :デフォルトの名無しさん:04/10/21 17:08:47
>>518
やってみれば分かるだろ。
ていうか、どう見ても釣りだよな・・・orz

522 :デフォルトの名無しさん:04/10/21 17:10:39
ハゲタ

523 :518:04/10/21 17:20:30
>>519
当たり前ですか…。
スイマセン…。

>>520
スイマセン…。

>>521
そうでした…。
スイマセン…。

>>522
ご愁傷様です。
スイマセン…。















プッ

524 :デフォルトの名無しさん:04/10/21 17:57:23
なんだ、かっこなしでできるのか。
俺はいつも (new Form()).Show()ってやってたぜ。
思い込みは良くないな。

これでソースの可読性が少し上がった。

525 :デフォルトの名無しさん:04/10/21 19:24:28
>>524
カッコを外したって可読性の面ではよろしくない書き方だと思うぞ。

526 :デフォルトの名無しさん:04/10/21 19:28:21
string s = new StreamReader("filename",Encoding.Default).ReadToEnd();
こんなん普通にやるから、>>518がなんで疑問に思うのかさえ理解不能。

527 :デフォルトの名無しさん:04/10/21 19:56:37
バケラッタ

528 :デフォルトの名無しさん:04/10/21 20:30:56
ひとつのプロセスがopenできるsocketの最多数を
を教えて下さい。
「ソケット && WSAEMFILE」とかでgoogったけど
解らんかった。
擦違い・簡便!

529 :デフォルトの名無しさん:04/10/21 20:34:58
それぐらい自分でやってみるがよろし。
試せばいいことをやらない人が多すぎ。

530 :デフォルトの名無しさん:04/10/21 20:38:13
そ、そ、そんなぁ〜
ごもっともではございますが・・・
しかし、レス、はやっ

531 :デフォルトの名無しさん:04/10/21 23:26:32
Exceptionとかデバッガ上でウオッチウィンドウにMessageプロパティの値が表示されていますが、
自作のクラスでそれと同じように任意の値を表示させるにはどうしたらいいのでしょうか?

532 :デフォルトの名無しさん:04/10/22 02:09:38
市販のアプリで、.NETで書かれてるものってあるんでしょうか?

やはり、まだ市販のものはネイティブC++が主流なんでしょうか?

533 :デフォルトの名無しさん:04/10/22 02:15:35
>>532
一般人が使うアプリはまだC++だよ。
だってVS2003のツールでスクランブルをかけれるとはいえ
.NETアプリは逆コンパイラにいかいことができちゃうから
それに速度は遅いしね。

市販とは違うが糞なシェアウェアには.NETのものも出てきてるよ
Vectorとかいけば解る。RSSアプリとか。


534 :デフォルトの名無しさん:04/10/22 04:21:07
XMLDocumentクラスなどを使って深いタグを検索するにはどうすれば
いいのでしょうか・・・

例えば
<root>
  <a>


535 :↑ミスです。すみません:04/10/22 04:25:52
XMLDocumentクラスなどを使って深いタグを検索するにはどうすれば
いいのでしょうか・・・

例えば
<root>
  <a>
    <b>
      <c>
         <d>100</d>
         <d>200</d>
         <d>300</d>
      </c>
    </b>
  </a>
</root>
のような構造になっている場合、
XmlElement root = xmlDoc.DocumentElement;
XmlNodeList nodeList = root.SelectNodes("a/b/c/d");
として、
foreach(XmlNode node in nodeList){
  string str = node.Value;
   ・
   ・
}
と取得しようとしたのですがダメでした。(ひとつもマッチしない)
a/b/c/d 形式では深いタグは対応できないのでしょうか?
教えて頂けると大変助かります。
どうか宜しくお願いいたします。

536 :デフォルトの名無しさん:04/10/22 05:07:55
あとは速度が速ければ言うことないんだが。。。orz

537 :デフォルトの名無しさん:04/10/22 06:15:35
>>535
string xml = "<r><a><b><c><d>1</d><d>2</d></c></b></a></r>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
foreach (XmlNode node in doc.DocumentElement.SelectNodes("a/b/c/d"))
   Console.WriteLine("{0} = {1}", node.Name, node.InnerText);

問題なく拾えてるが……。
ちなみにXmlElement.Valueはnullが返って来ちゃうぞ。

538 :デフォルトの名無しさん:04/10/22 08:06:02
>>536
Javaよりは速いと思うが・・・もっともVMのメーカーにも夜が。

539 :デフォルトの名無しさん:04/10/22 10:23:15
.NET製市販アプリがでるのは何時頃なんですか?

540 :デフォルトの名無しさん:04/10/22 11:06:15
まずMSが.NETでOfficeを出してお手本を示して欲しいな。
3年ぐらい先かな。

541 :デフォルトの名無しさん:04/10/22 11:56:39
longhornが出てからの話。

542 :デフォルトの名無しさん:04/10/22 12:05:08
>>539
もう出てる。

543 :デフォルトの名無しさん:04/10/22 13:23:16
>>539
Delphi 8

544 :デフォルトの名無しさん:04/10/22 13:42:18
そもそもVS.NETからして.NETベースだな。
//完全に.NETってわけではないが。

545 :デフォルトの名無しさん:04/10/22 14:49:06
VS.NETのもっさり具合は勘弁してほしい。

546 :デフォルトの名無しさん:04/10/22 15:15:22
書籍やサイトの検索でも原因が分からず
どなたかお助けください。
あまりに初歩的な質問で凹み気味(´・ω・`)

コンソールアプリケーションのソリューションを作成し
以下のソースを実行すると日本語が化けます。
namespace ConsoleApplication1 {
  class Program {
    static void Main( string[] args ) {
      Console.WriteLine( "hello" );
      Console.WriteLine( "こんにちは" );
    }
  }
}
※下記は全角スペースでインデントしています。
日本語の表示には何か設定が必要なのでしょうか?

環境 Windows2000 SP4
Visual C# 2005 Express Edition Beta


547 :デフォルトの名無しさん:04/10/22 15:21:57
>>546
XP VS2003では問題なし。

548 :デフォルトの名無しさん:04/10/22 15:28:26
英語版を使ってるとか? >VC#2005
//いやそれで文字化けるとも思えないが……

549 :546:04/10/22 15:32:33
以前は英語版を使っていたのですが、同様の現象が起きていました。
(現在は手元にないので確認できません)

その後、日本語版が公開されたので現在は
日本語版を使っていますが現象は同じです。

やっぱりみんなは化けないんだ…(つдT)


550 :デフォルトの名無しさん:04/10/22 15:40:21
csc.exeでコンパイルしたのをコマンドプロンプトで実行しても化けるの?
VC#でビルドしたのをコマンドプロンプトで実行したら?

551 :デフォルトの名無しさん:04/10/22 15:48:47
うちでは問題ない(OSはXPだけど)
ていうか、OSから再インスコしてみたら?

552 :546:04/10/22 15:57:26
>>550
> csc.exeでコンパイルしたのをコマンドプロンプトで実行しても化けるの?
すみません。それを未だ試していませんでした…。
実行してみると…日本語がでました!!
となると VisualStudio 側の設定が何かまずい・・・?
設定も見ては見たのですがまだ分からず(´・ω・`)
教えてクンで恐縮なのですが心当たりがありましたら助けてくださいませ。


553 :546:04/10/22 16:06:25
自己レスです。
以下の設定を変更したところ日本語が表示されました。
オプション→デバッグ→全般→コンソール Window を使用する。
初期設定:チェックあり
変更後 :チェックなし
IDE のコンソールウィンドウが日本語に対応していない…?
それともこれって常識・・・?

ひとまず解決です。
ありがとうございました!


554 :デフォルトの名無しさん:04/10/22 21:21:53
>>533
「一般人が使うアプリはまだC++」ということは、
一般人が使わえないような高いアプリでは、結構.NETになってきてるんでしょうか・・・?

555 :デフォルトの名無しさん:04/10/22 21:29:00
くまー

556 :デフォルトの名無しさん:04/10/22 22:00:49
一般人が使えないような高いアプリではまだC

557 :デフォルトの名無しさん:04/10/22 22:51:42
>>554
企業向けシステムなんかでは結構使われてきてる。
うちもやってる部署あるし。

558 :デフォルトの名無しさん:04/10/22 22:56:54
>>557
まだまだなのか・・・
なんかよく雑誌では、もう世間は.NET一色ですよ、なんて記事も見かけるんだが

559 :デフォルトの名無しさん:04/10/22 23:04:24
Longhornが出るまでは無理だろ

560 :535:04/10/22 23:06:32
>>537
ありがとうございました!
XmlNode使ったらできました!
本当にありがとうございます!

561 :535:04/10/22 23:07:20
>>554
個人のフリーソフトとか、Webアプリならいくつかありますねー。


562 :デフォルトの名無しさん:04/10/22 23:08:55
ASPでやる新規事業なら大抵ASP.NETでないかな。
既存のを.NETで置き換えるのは難しいだろう。

563 :デフォルトの名無しさん:04/10/22 23:20:34
むしろ今から無印ASP始めるところなんか無いだろ

564 :デフォルトの名無しさん:04/10/23 02:24:21
WEBサイトでaspxって拡張子でCGIをやってるところって
全部 IIS6とASP+ の構成なの?
それなら結構サーバーサイドでは普及してると思うが。

565 :デフォルトの名無しさん:04/10/23 03:09:00
>>564
ASPにせよPHPにせよJSPにせよCGIではない、勉強しなおしてこい。
 あと数は少ないがApacheで動いてるのもある。まあ9.5割近くはIISだろうけどな。


566 :デフォルトの名無しさん:04/10/23 13:57:47
>>508-509
いまさらだが、違法でもなんでもない。通貨偽造罪、模造罪ともに
スキャニングでは成立しない。ともに実際に現物を生成しなければ
ならない。


567 :デフォルトの名無しさん:04/10/24 01:03:56
皆さんこんばんは C# webアプリを開発しているものです

ある問題を抱えて2日間はまってしまっています どなたか助けていただきたいです・・・・

DataGrid内の検証コントロールの操作についてなのですが

1DataGridでFooterTemplateにTextboxを配置、それを新規追加の入力項目として
います。それに対して未入力ではないかどうかRequiredFieldValidator
コントロールで検証。このコントロールのプロパティを操作したいのですが、下記の
コードではうまくいきません。(参照先がNULL)

TextBoxの値は取得できるのですが、RequiredFieldValidator になるとうまくいきません
どなたかご教授お願いいたします。

Public void DataGrid1_Command(object source, DataGridCommandEventArgs e)
{
if(e.CommandName == "Add")
{
if(Page.IsValid)
{
if(e.CommandName == "Update")
{
RequiredFieldValidator fr =
(RequiredFieldValidator)e.Item.FindControl"RequiredFieldValidator1");
fr.Enabled = false; ←ここを実現したい
                   
                      (下記省略)

よろしくお願いいたします
長々とすみません・・・・・


568 :デフォルトの名無しさん:04/10/24 03:19:12
すいません。質問させてください。
メソッドから配列を返せますよね?

public int[] foo() {

int[] i = new int[10];

// ...

return i;
}

みたいな感じで。
でも、本や.NET Frameworkのクラスライブラリを見てる限りでは、
上記の書き方が出来るとか、実際に書いてるコードを見たことがありません。
何故ですか?

569 :デフォルトの名無しさん:04/10/24 03:24:07
>>568
わざわざ出来ると明言する必要がないくらい当たり前に出来るから。


570 :デフォルトの名無しさん:04/10/24 15:04:05
>>567
こんな感じじゃねーかなぁ……マトをはずしてるかもしれないけど
private void DataGrid1_EditCommand(object source, DataGridCommandEventArgs e)
{
TableCellCollection tcc = grid.Items[e.Item.ItemIndex].Cells;
((RequiredFieldValidator)tcc[カラムindex].FindControl("RequiredFieldValidato1")).Enabled = false;
}

UpdateCommandでやるならViewStateなんかに保持ってないとダメかも。


571 :デフォルトの名無しさん:04/10/24 17:07:10
C#(に限ってはいないが)のフリーのコンポーネントが揃っているサイトを
ご存知ないでしょうか?
特にエディタコンポーネントがあれば・・・
Delphiに対してあまりに見劣りがするのですが・・・


572 :デフォルトの名無しさん:04/10/24 17:38:04
>>571
超定番だが、一応。
ttp://www.grapecity.com/japan/support/database/DOTNET_ProductList.htm

573 :デフォルトの名無しさん:04/10/24 17:58:04
>>572
それ、フリーじゃないだろ。


574 :デフォルトの名無しさん:04/10/24 18:31:47
.NET の必要性が分からない。
MS に踊らされているだけでは?

575 :デフォルトの名無しさん:04/10/24 18:35:52
>>574
スレ違い

576 :デフォルトの名無しさん:04/10/24 18:36:14
エンドユーザからすれば必要性が分からないかもね。
まあここはC#スレであって.NETスレではないので該当スレでしゃべれ。

577 :デフォルトの名無しさん:04/10/24 18:36:54
すんません。スレかえます。

578 :デフォルトの名無しさん:04/10/24 18:38:14
>574
オレ個人で言えば
.NETだから使ってるのではなく、C#だから使ってるのだ。
C#の強力な言語仕様、豊富なライブラリ、コンポーネント利用でのGUI設計の容易さ、
などが選択の理由である。
仮に処理系がネイティブであっても別に何の問題もなかった。
(というより今のオレにはその方が良かったかも?)
もちろんMSというバックがいることの将来性もあるが。



579 :デフォルトの名無しさん:04/10/24 18:38:42
>>1 で 「.NETの話題はこちらでどうぞ。」とありますけど。。。

580 :デフォルトの名無しさん:04/10/24 18:47:38
>>579
ライブラリとしての.NETに留めといたほうがいい。
.NETそのものについて扱うと変なのが湧く。

581 :デフォルトの名無しさん:04/10/24 18:47:45
>>579
スレの空気嫁

582 :デフォルトの名無しさん:04/10/24 19:30:45
しかし……正直、.NET 抜きで C# を語る奴はおらんだろ

583 :571:04/10/24 20:46:33
誰かDelphiのTEditorをC#に移植してくれませんかね・・・
ソースは一万行越えてるけど・・・
優れたエディタコンポーネントがないと困る人が多いと思いますが・・・


584 :デフォルトの名無しさん:04/10/24 20:49:28
禿同

585 :デフォルトの名無しさん:04/10/24 20:53:24
>>583
よっしゃ、まかせた。

586 :デフォルトの名無しさん:04/10/24 20:57:15
TEditor重すぎで話にならん

587 :デフォルトの名無しさん:04/10/24 21:02:12
>>583
Delphi 8 で作り直せば良いんじゃないか?

588 :571:04/10/24 21:03:07
確かにネイティブなTEditorが重いのだから
.NETに移植すると更に重いのでしょうが・・・
まだ誰も手をつけていない今の段階で移植すれば
C#の歴史に名を残せますよ。
早い者勝ちだ!!!
・・・とは言うものの、フリーのコンポーネントを発表する人が
思ったより少ないのは何故なんだろう???



589 :デフォルトの名無しさん:04/10/24 21:07:45
キミがめんどくさいことは俺もめんどくさいってことだな。

590 :デフォルトの名無しさん:04/10/24 21:08:18
だって金になるし

591 :デフォルトの名無しさん:04/10/24 21:08:56
エディタくらい簡単に作れるんじゃないかな。
Win32 ネイティブだとあまりに多すぎるメッセージに対応するのが苦痛で仕方なかったが、
.NETだとその辺整理されてるから、他につまるところはないかと。

592 :デフォルトの名無しさん:04/10/24 21:16:45
フォームにボタン2個配置の状態で、
public void Button1_Click(object s,EventArgs e)
{
button2.Dispose();
button2.Text = "Text";
}
を実行しても、ぬるりが発生しません。
button2はDispose()で解放されたんじゃないんでしょうか?

593 :デフォルトの名無しさん:04/10/24 21:18:28
>>592
Dispose()はbutton2が所有しているリソースを破棄するだけで、
button2オブジェクトそのものを破棄、あるいはnullセットするわけじゃないから。

594 :592:04/10/24 21:43:50
>>593
どうもありがとうございます。
button2 = null;
でnullセットしたのですが、nullにしてもフォームから消えてくれません。
もちろん、button2.Text="";なんてしたら、エラーが出ます。

Dispose()では消えるんですが、なんでnullセットだとフォームから消えないんでしょうか?

595 :デフォルトの名無しさん:04/10/24 21:47:47
>>594
button2 = null;は参照を解除するだけで、
button2オブジェクトそのもの、あるいはbutton2が所有しているリソースを破棄するわけじゃないから。

596 :デフォルトの名無しさん:04/10/24 21:49:56
>>592-595
ワロタw

597 :デフォルトの名無しさん:04/10/24 22:54:08
nullセットしたのですが、nullにしても何故か>>592>>594が消えてくれません。
今すぐ消えてください。


598 :デフォルトの名無しさん:04/10/24 22:56:51
>>597
592 = null; も 594 = null; も参照を解除するだけで、
592 そのものを破棄するわけじゃないから

破棄しようとして、特攻仕掛けて殺人なんかするんじゃねーぞ
気に入らなければ透明あぼーん汁

599 :567:04/10/24 23:54:54
>>570
ありがとうございました。

>RequiredFieldValidator fr =
>(RequiredFieldValidator)e.Item.FindControl"RequiredFieldValidator1");
>fr.Enabled = false; ←ここを実現したい

上記はUpdateCommandではできないことがわかりました。

ほんとうに助かりました。
ViewStateで保持して実現したいと思います。
本当に本当にありがとうございました。


600 :デフォルトの名無しさん:04/10/25 00:16:51
TreeViewの継承コントロールを作って、フォームデザイナで貼り付けたんですが、
継承コントロールのほうであらかじめ登録してあるTreeNodeが重複して勝手に書き込まれてしまいます。
(FormのInitializeComponentメソッドで、this.treeViewEx1.Nodes.AddRange( ... )というふうに)
どうにかなりませんでしょうか?

継承コントロールでなく、別の方法でもいいので何とかなりませんでしょうか?

601 :デフォルトの名無しさん:04/10/25 00:23:50
>>600
あー、俺もそれあったなあ。

TreeViewじゃなくてComboBoxだけど、
フォームデザイナでコントロールを移動する度にItems.AddRangeを追加しやがって、
どんどんアイテムが増えていくんだよね、、、

602 :600:04/10/25 00:27:43
>>601
同志!!まさにそれです!
そのときはどうやって解決されましたか?

603 :デフォルトの名無しさん:04/10/25 00:30:22
Nodes.Count==0の時に追加するようにしたらいいんでないの?

604 :デフォルトの名無しさん:04/10/25 00:44:22
>>600-602
デザイン中に実行されては困る副作用があるコードは
DesignMode プロパティで分岐するのが基本。

605 :600:04/10/25 00:51:36
>>603-604
ありがとうございます。
早速試してみます。

606 :600:04/10/25 01:25:40
>>604
継承コントロールのコンストラクタで
if( !this.DesignMode )
...初期化処理
としてみましたが、やはり解決しません。
また、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15316&forum=7
には、同じくコンストラクタ内ではDesignModeは正しく動作しないとの記述も見つかりました。

どの時点で書けばよいでしょうか?
何度もすみませんが、よろしくお願いします。

607 :デフォルトの名無しさん:04/10/25 01:30:23
>>606
Loadイベントかな

608 :600:04/10/25 01:36:44
>>607
FormのDesignModeプロパティを見て、継承コントロール内のパブリックメソッドを実行して初期化処理を行うということですか?

609 :デフォルトの名無しさん:04/10/25 01:43:49
>>608
??
わざわざFormのプロパティを見る必要あんの?
コントロール自身のLoadイベントで自分のDesignModeプロパティみて分ければいいじゃん。

610 :600:04/10/25 01:49:22
>>609
しかし、TreeViewコントロールにはLoadイベントがないようですが…

611 :デフォルトの名無しさん:04/10/25 01:52:33
代わりはHandleCreatedイベントかな。

612 :デフォルトの名無しさん:04/10/25 01:54:53
あぁ、そうなんだ。
UserControlしか見て無かったよ。

613 :600:04/10/25 02:04:42
>>611
ありがとうございます、若干変な動作をしますが、とりあえずデザイナでの自動コード生成はなくなりました。

質問に答えてくださった方々、どうもありがとうございました。

614 :デフォルトの名無しさん:04/10/25 11:53:41
俺もデザイン中にコードが実行されていると気づくのにしばらくかかったくち・・・

615 :デフォルトの名無しさん:04/10/25 11:58:28
class Sort : IComparer
{
public int Compare( object x, object y )
{
return x.s-y.s;
}
}
これは数字のSortプログラムですが、これを文字の昇順プログラムに
直すにはどのようにしたらいいのですか?

616 :デフォルトの名無しさん:04/10/25 12:38:21
さて昇順と言ってどういう並びなのかな。
Unicode順ならChar.CompareToを返せば済む話だが。
string.CompareToは全半角漢字順もなかなか考慮して返してくれるな。

617 :615:04/10/25 14:45:57
string.CompareTo でファイル名をソートするプログラムができました。

618 :デフォルトの名無しさん:04/10/25 20:52:11
IPチャットのように、ブロードキャストで現在LAN上にいる
人を表示するプログラムを作りたいのですが、
ブロードキャストを受信するにはどうすればいいのかわかりません(´・ω・`)

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemnetsocketssocketclassreceivefromtopic.asp
このようにReceiveFromを使用するのでしょうか?
なぜか無効な引数といって怒られるのですが・・・

619 :デフォルトの名無しさん:04/10/25 21:17:59
>>618
無効な引数って、どんなソース書いてるのよ。
引数が無効なら修正するしかないでしょ。

620 :618:04/10/25 22:42:16
SendToメソッドがないと無効な引数となるっぽいですね。。。
う〜ん、もしかして、
1.SendToメソッドでブロードキャスト
2.ブロードキャストを受信するホストはUdpClientなどで受信→返信パケット
3.ReceiveFromメソッドで返信パケットを受信
っとすることでIPチャットのメンバ確認のようなことができるのでしょうか?

621 :デフォルトの名無しさん:04/10/26 01:01:05
C#(というか.netFrameworkか)で循環リングリストを実装するにはどうしたらいいんでしょ?
Cでポインタ使って実装したことはあるんだけど、C#だとポインタが表に出てこないからよくわからん
かといってUnsafeでやるのはどうかと思うし

622 :デフォルトの名無しさん:04/10/26 01:11:42
ポインタの代わりにインスタンスの参照を持てば良いんじゃない?
public class Item {
   public string Name;
   public Item Next;
   public Item Previous;
}

623 :デフォルトの名無しさん:04/10/26 01:42:42
XmlDocument.SelectNode()メソッドを用いて、以下のXmlからXpathを用いてXmlNodeを
取得する方法を教えてください。プレフィクスの有無を無視してXMLにアクセスできるはず
なのですが(MSXML4.0にて確認しているとの情報はあります。)

<?xml version="1.0" encoding="utf-8" ?>
<Body>
   <GetLastTradePrice xmlns:="http://pc5.2ch.net/"></:GetLastTradePrice>
<Body>

XmlDocumet xmlDoc = new xmlDcoment();
xmlDoc.Load(@"C\hoge.xml");
XmlNode node = xmlDoc.SelectSingleNode("
           /Body/[local-name()='GetLastTradePrice' and namespace-uri()='http://pc5.2ch.net/']");

とやってnodeの中に<GetLastTradePrice xmlns:="http://pc5.2ch.net/"></:GetLastTradePrice>を示すElement
を取得したいのですが、どうにもうまくいきません。何かヒントとなる要素や間違いがあればご指摘お願いします。


624 :デフォルトの名無しさん:04/10/26 01:44:47
DataGridのHeaderのHeightはどうやったら調整できますか?

#間違えてVBスレに書き込んじゃいました。


625 :デフォルトの名無しさん:04/10/26 02:13:09
>>623
string xml = "<?xml version=\"1.0\"?><Body><GetLastTradePrice xmlns=\"http://pc5.2ch.net/\">4000</GetLastTradePrice></Body>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlNode node = doc.SelectSingleNode("/Body/*[local-name()='GetLastTradePrice' and namespace-uri()='http://pc5.2ch.net/']");
Console.WriteLine(node.InnerText);

623のは露骨にXPath式がおかしいよ?


>>624
VB.NETスレなら間違いじゃないと思うけど。
該当するプロパティはないみたいだね。
HeaderFontを大きいのにするくらいなのかな。

.NET2005で増えるDataGridViewならColumnHeadersHeightなんてそのものズバリなのがあるようだけど。

626 :デフォルトの名無しさん:04/10/26 03:11:13
2005のライブラリ、どっかで見れない?
espressのドキュソメントは重すぎて見る気もうせた。

627 :デフォルトの名無しさん:04/10/26 03:15:51
MSDNはこちら。
ttp://msdn2.microsoft.com/library/default.aspx

//Control継承クラスとかオンラインの方が早いってのも狂ってるねぇ……。

628 :デフォルトの名無しさん:04/10/26 03:20:07
Microsoft.IE

System.Windows.Forms.HtmlHistory
HtmlLocation
HtmlNavigator
HtmlPopup
HtmlScreen
HtmlWindow
HtmlWindowCollection

(´・∀・`)ヘー、こんなのあるんだ。

629 :デフォルトの名無しさん:04/10/26 12:57:40
.NET2.0じゃ、SHDocVwの代わりっぽいコンポーネントが出てきてるのね。

630 :デフォルトの名無しさん:04/10/26 18:08:06
.NET2.0なんですが、
using System;

class mainClass
{
public static void Main()
{
int width = Console.WindowWidth; //コンソールウィンドウの幅プロパティ(int型、get/set)
Console.WriteLine(width);
}
}

で、Console.WindowWidth;の部分で、「ハンドルが無効です。」ってエラーが出ます。
ドキュメントのサンプルをそのまま実行しても、同じエラーが出ます。
どこがおかしいんでしょうか?

631 :デフォルトの名無しさん:04/10/26 18:45:19
コマンドプロンプト開けてそこから実行してみな。

632 :630:04/10/26 18:59:34
どうもありがとうございます。
VS上で実行してたのが悪かったんだ・・ orz

633 :デフォルトの名無しさん:04/10/26 20:26:17
C#でDAO使っている人いる?
リンクテーブル絡みで使いたいんだけど、
CreateWorkspaceの第4引数、VB.netなら省略可能なのに
C#では省略できないみたい。dbUseJetとか書いても名前空間にないって怒られる。
だれか、教えてください。

[DBEngine.]CreateWorkspace(Name, User, Password [,Type])



634 :デフォルトの名無しさん:04/10/26 20:28:04
JavaのJScrollPaneみたいなコントロールってありますか?

635 :デフォルトの名無しさん:04/10/26 20:34:53
>>633
省略できるパラメータならMissing.Valueを指定してやればいい。

>>634
みたいとかいわれてもー。

636 :デフォルトの名無しさん:04/10/26 20:37:35
VC#ではなぜ、Document-Viewを強制しなくなったのかな?
こういったポトペタ環境は初心者にはいいかもしれんが
Formになんでもかんでも書く人がいて嫌いだな

そう思いません?

637 :デフォルトの名無しさん:04/10/26 20:56:41
>>635
ありがとうございます。怒られなくなりました。(^^;)

638 :デフォルトの名無しさん:04/10/26 20:56:59
>>636
VC6でも強制されてなかったよ。

639 :デフォルトの名無しさん:04/10/26 20:59:59
>>636
私は自由度が高くてよいと思うが、
それがいやなら、企業なら社内規定で縛るべきかもね。

640 :634:04/10/26 21:11:49
どうも勘違いしていたようで普通のPanelで同じことが出来ました。
どうもすいません。

641 :デフォルトの名無しさん:04/10/26 21:15:30
>>638
VC++6使ったことないでしょ?
VC++6でダイアログベースで進んだプロジェクトなんて一つもなかったよ
あるプロジェクトを一人やるなんてまずありえない。
ダイアログベースだと分業し図らいからね

642 :デフォルトの名無しさん:04/10/26 21:27:04
ラジオボタンでImageListをセットして画像を表示させているのですが,
かなり小さく縮小されてしまいます。サイズを大きくするにはどうすればいいのでしょうか。
以下のようにしています。

ImageList imageList1 = new ImageList();
imageList1.Images.Add(Image.FromFile("..\\..\\test1.bmp"));
imageList1.Images.Add(Image.FromFile("..\\..\\test2.bmp"));
imageList1.Images.Add(Image.FromFile("..\\..\\test3.bmp"));
this.radioButton1.ImageList = imageList1;
this.radioButton1.ImageIndex = 0;

643 :デフォルトの名無しさん:04/10/26 21:29:42
ImageList.ImageSize

644 :在日外国人参政権反対:04/10/26 21:42:50
>>641
DocumentView程使えないものもない。
じぶんでObserverつくる。

645 :デフォルトの名無しさん:04/10/26 21:42:57
>>636
C#にDoc-Viewを実現するために特別なフレームワークが不要だったから。
何らかの抽象クラスを提供して面倒見てやらないといけないC++と違って、
C#はeventを使ってクラス階層に関係なくそういった構造を実現できる。
Doc-Viewがしたければ自分で勝手にDocクラスとViewクラスを作れば良いだけ。

646 :デフォルトの名無しさん:04/10/26 21:43:58
>>641
もしかしていまどきMFCなんか使ってんの?
時代はWTLだよw

647 :デフォルトの名無しさん:04/10/26 21:48:31
>>645
こういう人って趣味でプログラム書いているようなヲタでしょ?
協調性がないよねw
社会では`自分で勝手に'なんて通用しない

648 :デフォルトの名無しさん:04/10/26 21:48:45
C#は、C+;から来た人、Delphiから来た人、Javaから来た人が色々いて
それぞれ文化が違うから面白いね。
ポトペタでフォームにイベント処理一杯、というのはDelphiなら当然なんで
(あまりいいものではないが)
あまり違和感がない。
VisualC++から来るとdoc-viewの残像が消えないのかな?
Javaから来ると、「きっちりクラスを設計しろよ!」ってことになるけど。


649 :デフォルトの名無しさん:04/10/26 21:49:54
>>646
>時代はWTLだよw
それほんとう?実際の開発で使われてる?

650 :デフォルトの名無しさん:04/10/26 21:59:22
>>647
クラスの設計すらさせてもらえない最下層使い捨てグラマですか?

651 :デフォルトの名無しさん:04/10/26 22:00:12
>>649
市販ソフト書いてるうちでも使ってる。
MFC じゃ COM 関連のサポートが貧弱すぎてちょっと使い物にならないし。
(Outproc COM object からイベント受けるためだけで何行コード書かせるんだよ、とか)


652 :デフォルトの名無しさん:04/10/26 22:05:45
>>651
最後の行の意味が分かる人はこのスレにはほぼいないと思いますよw

653 :デフォルトの名無しさん:04/10/26 22:06:54
>>651
ありがとう。実際の開発に使えるようなものなら勉強してみたいと思っていたんです。

654 :在日外国人参政権反対:04/10/26 22:30:46
>645
言語のサポートは否定しないが、MVCに必要なものぐらいC++で誰でも作れるぞ?
Observer的なもの作ればいいだけだし、イベントの元になるメソッド呼び出しのオブジェクト化もFunctorのようなものをテンプレート使って作ることが可能
手間的にも仕組み的にもほとんど変わらない。構造がグレーでないだけC++のほうが好ましいところもある。

655 :デフォルトの名無しさん:04/10/26 22:42:01
>>654
C#だとイベントの関連付けはぺたぽとだし。
C++だとせいぜいあらかじめIDEに仕込んだものくらいしかできないからなぁ。

656 :デフォルトの名無しさん:04/10/26 22:42:10
>>654
それはどうせどこぞのHPのサンプルプログラムをみての話でしょ?
お金をとるアプリケーションを書くようになるとわかるけど
サンデープログラマ(オタク?)がHPで書いてるようなサンプルプログラムなんて
まったく使い物にならないぞ

657 :デフォルトの名無しさん:04/10/26 22:44:49
>>656
それほんとう?
業務で使えるようなサンプルって、
ウェブでは一切公開されていないの?

658 :デフォルトの名無しさん:04/10/26 22:47:02
ウィンドウの初期表示位置を
デスクトップ上でぴったり右下に(タスクバー除く)位置させたいのですが
そのためにデスクトップのサイズはどれで得られますか?
設定はForm.DesktopLocationでよさそうなのですが

659 :デフォルトの名無しさん:04/10/26 22:47:09
業務で使えるっていうか、特定の業務だとか企業だけで使うようなものは公開されないんじゃ?

660 :デフォルトの名無しさん:04/10/26 22:49:23
>>657
656じゃ無いけど、Webで公開してるやつらは作ること自体が目的化してる面がある。
技術的には面白いけど結局使い物にならないってのは良くあるね。


661 :デフォルトの名無しさん:04/10/26 22:49:27
>>659
つまり、サンプルを基盤にして独自拡張できる力がないといかんと、
それだけが言いたいのかな?

662 :デフォルトの名無しさん:04/10/26 22:53:08
>>658
Screenクラスを調べてみな。

663 :在日外国人参政権反対:04/10/26 22:58:51
>658
どっからそういう話になるんだ?金融向けディリングアプリケーションとか作ってますが?
自分のいっている話からそういうところになんで飛躍するんだ?
自分が言いたかったのはDocViewにC#の言語特性は必要事項ではないということ。
サンプルなんか見ませんよ。どこからそういう話になるんだか。

664 :デフォルトの名無しさん:04/10/26 23:00:37
>>662
ありがとうございます
調べてみるとScreen.GetWorkArea()というのが使えそうなのですが
引数にControlを取るみたいなのですがControlを作らないといけないのでしょうか?
Formしか使っていないのですが

665 :デフォルトの名無しさん:04/10/26 23:04:21
>>664
なぜControlを引数に取るかというと、複数ディスプレイの環境を考慮してるからだ。
どのディスプレイのWorkingAreaを取得するか、でGetWorkingArea(Control)はそのコントロールが一番多く含まれるディスプレイのワーキングエリアを取得する。
プライマリディスプレイしか考慮しないならScreen.Primary.WorkingAreaを使えばいい。

>  Formしか使っていないのですが
FormもControlの派生クラスな訳だが。

666 :デフォルトの名無しさん:04/10/26 23:07:53
ディリングってw

667 :デフォルトの名無しさん:04/10/26 23:09:41
>>665
>FormもControlの派生クラスな訳だが
Σr(‘Д‘n)
ボタンとかスクロールバーとか
そういう部品だけがコントロールなもんだと
思ってました

よくわかりました
ありがとうございます

668 :デフォルトの名無しさん:04/10/26 23:09:42
プログラマー板
http://pc5.2ch.net/prog/

669 :デフォルトの名無しさん:04/10/26 23:09:50
System.Windows.Forms.SystemInformation.WorkingArea のほうが良くない?

670 :デフォルトの名無しさん:04/10/26 23:09:57
デリングシティ

671 :デフォルトの名無しさん:04/10/26 23:12:47
なぜMSは抽象層としてSystem.Formsを定義しなかったんだ?
ターゲットプラットフォームごとに互換性の無いウィンドウシステムを使えってことか?
それともすべてのプラットフォーム用にWndProcを実装しろってことか?

672 :デフォルトの名無しさん:04/10/26 23:17:58
話し変わるけどC#ってコンポーネントのソースって見れないの?


673 :デフォルトの名無しさん:04/10/26 23:19:12
>>669
そちらも検討してみます
どうもです

674 :デフォルトの名無しさん:04/10/26 23:31:56
>>671
Javaのさんざんな状態を知らないの?
AWT、Swing、SWTと乱立。
しかも携帯でこれらが使えるわけじゃない。

デスクトップOSでもOSによってずいぶんと違う。
少なくとも現状では各プラットフォーム共通の
ウインドウシステムなんて現実的ではない。

675 :デフォルトの名無しさん:04/10/26 23:38:09
>>674
乱立とプラットフォーム間の互換性は関係ないかと
さすがにモバイル向けと同じインターフェイスってのは期待しないけどさ。

676 :デフォルトの名無しさん:04/10/26 23:45:10
MSのいう.NETのマルチプラットフォームはMSのOSのみ(PCのWindowsとかCEとか)を対象としたマルチで
他社のOSまで含めてるわけじゃないって話を聞いたんだけどデマ?

677 :デフォルトの名無しさん:04/10/26 23:51:39
>>676
あながちデマじゃないと思う。
本気でマルチプラットを考えていると思えないし。
マルチプラットをちらつかせて実は自社プラットに縛ろうとしている
戦略が見え隠れせんでもない。

678 :デフォルトの名無しさん:04/10/26 23:55:18
ラジオボタンでボタン形式の表示にしたときの
3D境界線のもっこリ具合をもっと大きくしたりといったことは可能でしょうか?
Border3DSizeプロパティでgetはできるもののsetはできないですが

679 :デフォルトの名無しさん:04/10/27 00:22:41
>>678
多分真っ当には無理。
OnPaintをオーバーライドしてしこしこ描いていくしか。

SystemInformation.Border3DSizeは画面のプロパティからユーザが操作するもの。

680 :デフォルトの名無しさん:04/10/27 01:03:33
>>679
OnPaintをオーバーライド???
知ったかぶりハケーン


681 :デフォルトの名無しさん:04/10/27 01:07:02
非ビジュアルなコンポーネントを作るために、
メニューでファイル→新しい項目の追加→コンポーネントクラス
を実行すると、ソースが作成されます。
そのソースにはコンストラクタが2つ(引数の無いものとIContainerを引数にとるもの)があります。
その2つはどう違うのでしょうか。

IContainerを引数にとる方は、デザイン時にIDEから呼ばれるのかなと思っていますが、
裏付ける記述を発見できません。どなたか助けてください。

682 :デフォルトの名無しさん:04/10/27 01:22:27
>>672
Reflector使え
http://www.aisto.com/roeder/dotnet/

683 :デフォルトの名無しさん:04/10/27 01:39:53
>>681

ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconclassvscomponentvscontrol.asp
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbconcontainerssitesextenderscomponents.asp

あんまり気にする必要はないような気もする。
要はコンポーネントを管理するためのIContainerを使う時に、
それに明示的に新しくコンポーネントを追加する時に使うもんであって、
そんなに深い意味はなさそうだ。

684 :デフォルトの名無しさん:04/10/27 01:44:41
>>641
VC6を使ったことが無いのはあんたのほうじゃないの?
(自分の記憶違いかと思って、思わずVC6を立ち上げて確認してしまった)



685 :デフォルトの名無しさん:04/10/27 01:45:49
>>682
MFC見たくデバックまでできるんですか?


686 :デフォルトの名無しさん:04/10/27 01:49:28
>>684
いい加減スレ違いだからマ板にでも逝け

687 :684:04/10/27 01:49:49
ついでに書いておくと、MFC自体はDoc-Viewを強制してないから、
VC5以前のバージョンでも、ウィザードを使わないか、もしくはウィザードの
生成したコードを少しいじればDoc-Viewを使わなくてすむ。


688 :デフォルトの名無しさん:04/10/27 02:00:57
>>684
ごめんプロジェクトの意味が分からなかったみたいだねw
趣味でやってる香具師ってきらいなんだよね

689 :デフォルトの名無しさん:04/10/27 02:05:24
>>641
ダイアログベースだと分担できないって、Wizardの作ったコードを埋めていくしか
できないレベルなのか…

690 :デフォルトの名無しさん:04/10/27 02:06:08
>>685
できない

691 :デフォルトの名無しさん:04/10/27 02:07:23
>>688
MFCがDoc-Viewを強制してるかしてないかの話で、だれもプロジェクトの話はしてませんよ。

692 :在日外国人参政権反対:04/10/27 02:16:25
>690
トレースはできるの?

693 :在日外国人参政権反対:04/10/27 02:24:41
つか、おまいらどんなもの作ってるんですか?
自分はメインはディーリングアプリケーションのクライアントとサーバー両方。
あとは趣味のツールとか。

694 :凄く同意:04/10/27 03:09:45
もまいらただいま

>>693
趣味でツールとかゲームだな
仕事でC#を提案することは殆ど無い、っていうか無い

695 :デフォルトの名無しさん:04/10/27 12:16:48
>>693
自分のサイトのASP.NET

クライアントサイドは以前作ったもののネイティブで動くようにしてくれと要望が殺到したのでやめた。
仕事ではC#の話自体ほとんど出ない、っていうか出ない

696 :デフォルトの名無しさん:04/10/27 14:24:46
オレは趣味でプログラミングをしてるんだけど
以前はDelphiを使っていて、今はC#中心だ。
Delphiのコンポーネントを使えば楽に書ける場合はDelphiを使うが
もう基本的にはC#以外では書きたくないな。
VisualC++で書くなんて論外・・・
でも業務だとまだVisualC++が中心なのか・・・
その辺の意識は大きな隔たりがあるね。


697 :デフォルトの名無しさん:04/10/27 14:39:40
>>696
意識の問題じゃないよ。
適材適所。
うちはVB6からC#、C++、Delphi、BCBなどの中から状況に最も合ったのを
選択することが多い。(稀に客からの指定もあるけど)

VC++を使うのは「どうしてもこれじゃなきゃうまくない」ときぐらいだけどね。
C#を始めてからはBorland系の出番はほとんどなくなったな。

698 :デフォルトの名無しさん:04/10/27 15:06:32
C# のリファクタリングツールでよさげなものはありませんか?
できれば無償のものがいいのですが…。

最低限、使われていない関数を洗い出してくれる、って程度の事が
できればいいのですが。


699 :デフォルトの名無しさん:04/10/27 19:25:38
pictureboxに画像を表示し、確認してからリネームしたいのですが
moveメソッドの時に「他のプロセスで使用中です」というエラーが出ます。
画像ファイルがプロセスに使用されていない状態にするにはどうしたらいいのでしょう?

private void button1_Click(object sender, System.EventArgs e) {
if (openFileDialog1.ShowDialog()==DialogResult.OK)
{
picbox.Image = Image.FromFile(openFileDialog1.FileName);
}
_oldfilename = openFileDialog1.FileName;

}

private void button2_Click(object sender, System.EventArgs e) {
try
{
File.Move(_oldfilename,newfilename);//ここでリネームできない
}
catch(System.IO.IOException er)
{
MessageBox.Show(er.Message);
}
}



700 :デフォルトの名無しさん:04/10/27 19:33:18
>>699
Image.FromFileじゃなくてStreamから読み込めばできたような気がする。

701 :デフォルトの名無しさん:04/10/27 19:37:26
>>683
ありがとうございます。
説明を読んだけどよく分かりませんでした。
まあ、気にしないことにします。

702 :デフォルトの名無しさん:04/10/28 01:04:47
C#がどうこうっていうより
.NET Frameworkが使えなさ杉w
半ブラックボックス化したFrameworkなんて使い物にならん

703 :デフォルトの名無しさん:04/10/28 01:36:14
>>702


704 :デフォルトの名無しさん:04/10/28 02:16:42
俺か?俺を釣りたいのか?

705 :デフォルトの名無しさん:04/10/28 03:09:14
いえ、君のような雑魚にようはないw

706 :デフォルトの名無しさん:04/10/28 04:37:21
>>702
Monoのソースでも読んでろ。
 オープソの.NET Frameworkだ。

707 :C ◆ZHxgEbZjZg :04/10/28 08:59:43
先月 Visualstudio 買ってデータベースアプリを作成したいと思い、谷尻かおりさんの
基本データベースプログラミングを参考にしています。
そこでどうしても分からないことがありまして、C#に精通している皆様に是非ご教授願いたいしだいでございます。
本のページで言うとP106のリスト5-3なんですが、
このサンプルは1レコードをフォームで編集したりするものです。それで、編集の保存がされていないときに閉じるボタンが押された場合

//変数の宣言
DataSet mFlg;//変更
//レコードの編集を終了
this.BindingContext[dsShohin1,"T_商品"].EndCurrentEdit();
//データセットの状態を取得
mFlg = dsShohin1.GetChanges(DataRowState.Modified);

にて mFlgがnullでない場合 Updateをかけろとなっています。

今回、データグリッドを設置したのですが、同じように閉じるボタンを設置して
編集があった場合を調べようとして、上のように

//変数の宣言
DataSet mFlg;//変更
//データセットの状態を取得
mFlg = dsShohin1.GetChanges(DataRowState.Modified);

とやると、
型又は名前空間名'DataSet'が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。
名前'mFlg'はクラスまたは名前空間'KaikeiForm'に存在しません
となります。DataSetというのは、データグリッドには使用できないのでしょうか?
C#もまだ勉強しはじめたばかりなのでエラーの理由も分かりません。他に編集状態を調べる方法がありましたら是非教えてください。

708 :デフォルトの名無しさん:04/10/28 09:53:11
>>707
とりあえずそれについてはコードの先頭に
using System.Data;
って書く。

ふらっとC♯(Part5)
http://pc5.2ch.net/test/read.cgi/tech/1065196964/

709 :デフォルトの名無しさん:04/10/28 11:34:10
ざっとプログラム作ってみてストレスになっていることがあります。

・フォームを継承した場合、継承元とプロパティが同じなのにデザイナが生成
 したコードの中にソースがでてきます。無駄なソースだという以外にもImageList
 の二重生成などではアイコンが消えてしまうなどの不具合があります。

・SqlConnection、SqlDataAdapterからDataSetを生成し、DataViewのDataSourceに
 して、DataGridで表示した場合、MappingNameにテーブル名やビュー名を入れないと
 書式設定、色設定ができませんし、開発段階でテーブルのフィールドなどが変更
 された場合も何度も更新したり、下手をすると新しく作り変えてあげない限り
 Grid上に表示されなかったりと、挙動不審です。

作り方や手順がまずいのかもしれませんが、とにかく面倒なことと、コンパイラに
起因する変なバグが出やすいです。

710 :C ◆ZHxgEbZjZg :04/10/28 12:15:44
>>708さん
解決しました。どうもありがとうございました。Dataクラスなんですね。
ドキュメントは見ているのですが、どうやって調べていいかわからないのも考え物ですね。
ほんとにありがとうございました。

711 :デフォルトの名無しさん:04/10/28 12:24:29
>>710
あーうん、色々勘違いが多そうだから基礎から固めていこうな。
ttp://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html

712 :デフォルトの名無しさん:04/10/28 13:25:54
>>710
「型又は名前空間名'xxxxx'が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。 」
というエラーが出たときは大抵usingがしていないから、該当内容をヘルプで調べて、そこに書いてある
名前空間をusingしてやる……という入門レベルでの話なのだが。


713 :C ◆ZHxgEbZjZg :04/10/28 16:09:37
>>711,712
先日、VisualStudio買ったばかりの超入門者なんです。
とりあえず、「作って覚えろ」で本を参考にしながらデータベースアプリを
作ってます。
でもやっぱり基礎は大事ですね。がんばります。
ご迷惑をおかけしました。

714 :デフォルトの名無しさん:04/10/28 22:51:39
すいません。
厨な質問で申し訳ないのですが、教えてくださいませんでしょうか?

テキストファイルを読み込んで
「中に何も書いていない」
「中に何かしら書いてある」
という判定を行うにはどのようにしたらよいでしょうか?

よろしくお願いします。

715 :デフォルトの名無しさん:04/10/28 23:08:40
>>714
開く前にサイズ見るとか?

716 :デフォルトの名無しさん:04/10/28 23:10:21
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemiofileinfoclasslengthtopic.asp

717 :714:04/10/29 00:02:12
ありがとうございます。
ファイルサイズが0だったら無いって判断するのですか・・。
なるほど、勉強になりました。

またまた申し訳ないのですが、この場合はどうやってやったらよいのでしょうか。
ファイルサイズが0になったらこの処理をする、ということをやりたいのです。
この場合はどうやってファイルを監視(?)していたらよいのでしょうか?
タイマーのようなものを使うのでしょうか?

変な質問ですが、よろしくお願いします。


718 :在日外国人参政権反対:04/10/29 00:18:10
ふぁいるの更新あったら通知するようにとか可能。

719 :デフォルトの名無しさん:04/10/29 00:39:44
>>717
FileSystemWatcher

720 :714:04/10/29 01:22:03
>>718
はい、そのとおりです。
ファイルの更新といいますか、サイズが0になったら警告を通知するというものを作っております。
一定の時間でファイルサイズの比較などをやるという方法がよくわかりません。
ループを使って常にグルグルまわしているのか、どうやってやるのか・・
さっきループを使ってやってみましたが、すぐにフリーズしてしまいました・・。


721 :デフォルトの名無しさん:04/10/29 01:36:17
private System.Timers.Timer tmrWatch = new System.Timers.Timer();

// タイマー
tmrWatch.Enabled = true;
tmrWatch.Interval = 5000;
tmrWatch.Elapsed += new System.Timers.ElapsedEventHandler(tmrWatch_Elapsed);

/* -------------------------------------------------------------------------
* ログ:タイマー
*------------------------------------------------------------------------ */
internal void tmrWatch_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
Write("Elapsed!", "E", "#aaaaaa###");
}


722 :在日外国人参政権反対:04/10/29 03:42:31
>720
C#でどうやるかしらんが、>719に書かれてるやつ使うんじゃないかな。
たぶんフラグで更新あったら通知とかできるはず。
更新あったときファイル開いて長さ取得かな?もっと効率の(・∀・)イイ!!のあるかもしれないけれど。

基本的にはループして何かをチェックするってのは最悪の手段なのでやめてください。

723 :720:04/10/29 07:08:11
>>719,>>721-722
みなさん、こんな馬鹿のためにレスを下さって感謝します。

FileSystemWatcherを調べたところ、ファイルが変更されたらイベントを起こすということができるそうです。
本当にありがとうございました。

ところが現在コンパイルエラーで詰まっております・・・・
なにぶんプログラムは初級者同然ですので・・。
気力でがんばっていこうと思います。

724 :デフォルトの名無しさん:04/10/29 08:23:54
>>723
>気力でがんばっていこうと思います。
気力じゃない、頭を使え。


725 :デフォルトの名無しさん:04/10/29 11:44:55
フォント ファミリから日本語のフォントだけを抽出するにはどうしたらいいのですか?

726 :720:04/10/29 23:29:39
すいません・・・。
てかほんとに何度もすいません。

FileSystemWatcherを使うというアドバイスをいただきまして
やってみたところうまくいきました。

しかし、今いるフォルダの中を監視したい場合はどうすればよろしいのでしょうか?


727 :デフォルトの名無しさん:04/10/29 23:38:12
>>726
今いるフォルダとやらをPathにしてFileSystemWatcherを作ればよかろう。

728 :720:04/10/29 23:45:46
>>727
レスありがとうございます。

今いるフォルダ(カレントディレクトリ)の取得はできましたが
watcher.Pathに設定するとおかしくなってしまいます。

やり方がおかしいのでしょうか?

729 :デフォルトの名無しさん:04/10/29 23:48:05
何がどうおかしくなってるのかさっぱり。

730 :デフォルトの名無しさん:04/10/30 00:03:02
watcher.Pathに設定するとおかしくなってしまいます。
watcher.Pathに設定するとおかしくなってしまいます。
watcher.Pathに設定するとおかしくなってしまいます。
watcher.Pathに設定するとおかしくなってしまいます。
watcher.Pathに設定するとおかしくなってしまいます。
watcher.Pathに設定するとおかしくなってしまいます。
watcher.Pathに設定するとおかしくなってしまいます。


731 :720:04/10/30 00:07:12
>>729
Application.StartupPathで取得したパスを設定しました。
そしたら「見つからない」といって怒られました。
解読困難な日本語ですいませんです。

>>730
?

732 :デフォルトの名無しさん:04/10/30 00:13:55
取りあえず該当部分のコードとエラーメッセージを書け。

733 :720:04/10/30 00:48:51
>>732
すいません。
本当にすいません。
ただ単にミスでした。

string path = Application.StartupPath;
で取得したパスを
watcher.Path = path;
と書くところを
watcher.Path = "path";
と書いてしまっていました。

大変迷惑をかけたことをお詫びします

734 :デフォルトの名無しさん:04/10/30 01:04:11
参照設定についてなのですが、

まずSolution1の中にProject1とProject2を作成し、後者から
前者の参照をプロジェクト参照で設定した状態にしました。

そしてSolution1のフォルダごと全くちがうパスに移動させたところ
この参照のパスがその移動に同期して変わっていた(相対パス?)
のですが、DLL参照になっている標準FrameworkのDLLへの
参照のパスはもちろん変化しませんでした。このへんの仕様が
良くわからないのですがどうなっているのでしょうか?


735 :デフォルトの名無しさん:04/10/30 01:16:29
どの辺の仕様さ。
取りあえずこの辺を読め。
ttp://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html

736 :在日外国人参政権反対:04/10/30 01:40:41
>733
プログラムのコツ
関連するAPIマニュアルは読む
サンプルコード探しまくる。
聞くときはエラー、コードを提示
デバッガーを有効活用する

737 :デフォルトの名無しさん:04/10/30 08:50:40
C#では /doc でXMLドキュメントが生成できるけど、C++では生成できないの?
市販のドキュメント生成ツール買わないとだめかな。
VCコンパイラにそれを要求するのは酷なのか?

738 :デフォルトの名無しさん:04/10/30 11:05:23
できるよ

739 :デフォルトの名無しさん:04/10/30 13:22:31
<hoge:T xmlns:="hoge" hoge:test="1">345</hoge:T>
とかいうXML NodeをXPathとかなんかで引っ張って来てこれを、
<hoge1:T1 xmlns:="hoge1" hoge:test2="987">654</hoge1:T1>
とかテキストで編集するように更新すると言う事をどのように
したらできますか?
 XmlDocumentのimport使ってもうまくできません。

740 :デフォルトの名無しさん:04/10/30 13:27:16
変換の法則性がさっぱり分からん

741 :デフォルトの名無しさん:04/10/30 14:12:07
VS.netで開発してます。

MSChartを用いて折れ線グラフが表示できるようになったのですが、
グラフ上の2点をマウスで指定して、
その点に対応するデータをピックアップする方法って用意されてるのでしょうか?


742 :デフォルトの名無しさん:04/10/30 15:21:52
>>741
使った事はないが、リファレンスを読む限りPointSelectedイベントとGetDataメソッドでなんとかなりそうな予感。

>>739
まず、XML名前空間についてもっと勉強した方が良いと思う。
とりあえずXmlDocumentの任意のノードをstringで書いたxmlノードに置き換えるサンプルを示しておこう。

string xml = "<root><T xmlns=\"ttp://hoge\" test=\"1\">345</T></root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlNode node = doc.SelectSingleNode("//*[local-name()='T']");
string newxml = "<base><T2 xmlns=\"ttp://hoge\" test2=\"987\">654</T2></base>";
XmlDocument repdoc = new XmlDocument();
repdoc.LoadXml(newxml);
XmlNode imports = repdoc.DocumentElement.FirstChild; //imports.Name == "T2"
XmlNode replacer = doc.ImportNode(imports, true);
node.ParentNode.ReplaceChild(replacer, node);

743 :741:04/10/30 18:18:39
>>742
ありがとうございます。
早速PointSelectedイベントで引数にdataPointがあったのでいけました。


最終的にはマウスで範囲選択し、その中の最大値を見つけてそこからいろいろしたかったのですが、
MSchartでやるのはかなりややこしそうですね。(そもそもマウスで選択するのが難しい…)

ありがとうございました。




744 :デフォルトの名無しさん:04/10/30 23:04:58
>>738
どうやってドキュメント生成するんですか?
スイッチがわからないっす。

745 :デフォルトの名無しさん:04/10/31 14:05:43
2002年に出てた、.TXT構想とB#言語ってどうなったんだろ?

746 :デフォルトの名無しさん:04/10/31 14:26:20
COOL は C# じゃないらしいけど、じゃ COOL はどこいった?
ttp://www.atmarkit.co.jp/fnetwork/column/spec001/csharp.html


747 :デフォルトの名無しさん:04/10/31 14:39:34
Maccrosoftの次世代構想か懐かしいなオイ。
//あのB# Sample CodeのCompiled Codeがなんとも素晴らしい

748 :デフォルトの名無しさん:04/10/31 15:09:04
>>746
今更ながらだが、その記事面白いな。

749 :デフォルトの名無しさん:04/10/31 15:17:17
>746
その記事面白いね。
「C++とJavaがあるのに何故C#が必要か?」という問いかけがあるけど
C#になって初めて満足な言語ができた、と思ってるのだが。
それもまた時が経つと「何故あの頃は当時のC#で満足していたのだろう?」
という意見になるのかな?
時代がどう転ぶかは分からないけどね。


750 :デフォルトの名無しさん:04/10/31 15:24:19
>>746
面白い。
いまさら当たり前のことに気づかされた。


751 :デフォルトの名無しさん:04/10/31 15:37:40
Socket通信において、受信したパケットから
送信元IPアドレスを得る方法はどうすればいいのでしょう?
UDPを用いて、すべてのアドレスからのパケットを受信するようにしております。

752 :デフォルトの名無しさん:04/10/31 15:41:59
接続したSocketのRemoteEndPointプロパティ

753 :デフォルトの名無しさん:04/10/31 15:45:29
>751
パケットの情報見るしかないでしょ

754 :デフォルトの名無しさん:04/10/31 16:33:46
Bitmap img = new Bitmap(1800,1200);
this.pictureBox1.Image = img;
Graphics g = Graphics.FromImage(this.pictureBox1.Image);
こんな感じでg.draw〜とかでガリガリいろいろ書いてるんですが、

レイヤーみたいなことを実現するにはどういう風にするのがいいんでしょうか?

ヒントだけでもいいのでお願いします。

755 :デフォルトの名無しさん:04/10/31 16:38:16
レイヤー単位で Image を持つ

756 :754:04/10/31 17:45:18
img = new Bitmap(1800,1200);
img_work = new Bitmap(1800,1200);
img_graph = new Bitmap(1800,1200);
this.pictureBox1.Image = img;
g = Graphics.FromImage(this.pictureBox1.Image);
g_work = Graphics.FromImage(img_work);
g_graph = Graphics.FromImage(img_graph);
g.DrawImage(img_graph,0,0,1800,1200);
g.DrawImage(img_work,0,0,1800,1200);
こんな感じでいいんでしょうか?
image,Graphicsの関係がいまいちわからないんで、本でも探してみます。

757 :751:04/10/31 20:57:31
>>752>>753
ありがとうございます。
試してみたいと思います。
亀レスすいませんでした(汗

758 :デフォルトの名無しさん:04/10/31 22:22:00
>>754
残念ながら、本屋にならんでいるC#.NET Frameworkの本はクソだらけだ。
コンポを使って間抜けなテキストエディタを作ったり、
しょーもない住所録を作ったり、くそデジタル時計を作ってみたりで、
ろくなものがない。
あなたが実現したいような画像関連のソフトをつくるために、
それにビチッと答えてくれるような本はないよ。
ほとんどの本はPictureBoxにファイルを読みこんで、説明おわり。

ま、クソライターが、とりあえず今このテの本かいといたら、
売れるだろ、と思って書いたのばっかりだ。
(あまり売れているようには思わんがな)

759 :758:04/10/31 22:29:06
>>754さん
レスありがとうございます。
そうですか、書籍は無いですか…
たとえば、マウスで範囲選択するとき、
マウスをPictureBoxないでドラッグしてるあいだだけ
そのときのマウスの位置とドラッグ開始点を矩形で囲んで見せるような
処理を書くのも方法が思いつかず困ってます。

mouse_moveのたびに1個矩形を描いて、前のを消してを繰り返してるのですが、
とても連続的には出ないので…

がんばっていろいろ調べてみます。英語読まないとだめなのかなぁ…

760 :759==754:04/10/31 22:29:51
ぁぅ
>>758さんごめんなさい、アンカーと名前と番号間違えた…

761 :デフォルトの名無しさん:04/10/31 22:44:01
1個矩形を書いて消す、とひとくちにいっても。

(A)下にある画像を全部再描画してから矩形を書くのと、

(B)以前あった矩形をXORとかNOTで書いて、矩形のところだった
ピクセルだけを元に戻して、新たに矩形を書くのでは、速度が違うぞ。

今どきは、画像がでかくなかったら(A)でも実用にたえる。
その矩形ってSetPixelで書いてないよな、DrawRectangleで書いてるよな。

それぐらいのテクだったら、MFCでアプリ作る的な、本でも書いてある。
でもそれだけのために買うことはない。
解説があっても1Pぐらいだから立ち読みでなんとかするか、ウェブ検索するべしっ。
ただし、英語で読む必要はないと思う、これはポピュラーな話だからの。
検索キーは"XOR","矩形","マウス","選択"、ぐらいでいいだろ。

762 :759==754:04/11/01 00:06:05
どうもつまずいてるところがちょっと違う気がしてきました。

上のほうで最初に質問したレイヤー化でImageを必要なだけ作ってるのですが、
具体的にはまず、グラフを描画する基本img_base
んで、範囲選択中に矩形を出すimg_temp
補助線とかいろいろ書き込むimg_work
それらをひとつにまとめてPictureBoxのImageに設定されるimg
みたいなのを作ってmouse_moveが起こるたびに
imgをクリア、img_base,img_work,img_tempをimgのGraphicsに描画
んで画面更新してるのでやたら思いだけっぽいです。
描画自体はg.Draw〜で書いてます。

なんかスマートじゃないなぁ…

763 :デフォルトの名無しさん:04/11/01 00:55:24
C♯で UnixTime 取得する関数ってありますか?
DateTime から 1970年引いて秒を取得すればよい?

764 :デフォルトの名無しさん:04/11/01 01:55:23
>>746
川俣 晶じゃんか

765 :デフォルトの名無しさん:04/11/01 02:09:52
>762
レイヤーは別にイメージである必要はない。
レイヤーとして表示されれば(・∀・)イイ!!だけだから、内部データはベクトルデータだろうがなんだろうがかまわない。之重要。
必要な部分だけ描画するようにしたほうがいい。必要な部分だけテンポラリイメージにレイヤーしたから描画、全部書いたら表示画面に転送。

くけいは反転ペンとかでかくか、もとがぞうおぼえておいて、それをテンポラリイメージに描画後、必要なく計を好きなように書き、転送。
描画関係のAPIとか書籍などなどいろいろ読むべし。

766 :デフォルトの名無しさん:04/11/01 02:25:20
「Visual C# 2005 Express Edition」を無料でダウンして使用したら
気に入ったんだけど、日本語のドキュメントが貧弱なところが少し
使いづらい。Visual C#.net(2003)はその点どうなのですか?。リフ
ァレンスとかしっかりしていたら買いたいとおもうけれど。
あとEMACSキーバインドと自動補完が自分にあって使いやすかったけ
ど前のバージョンでもこれらの機能がありました?なにせ、ぜんぜん
製品の詳しい説明がのってないので。

767 :デフォルトの名無しさん:04/11/01 02:55:26
>>766
.NET Frameworkの部分はまぁしっかりしてるよ>ドキュメント
MSDNライブラリ全部っていうんなら無理だけど。

つか、2005は、正式版でどこがどう変わるか分からんし。

768 :767:04/11/01 02:57:49
×2005は
○.NET Framework 2.0 クラスライブラリ

769 :デフォルトの名無しさん:04/11/01 03:10:52
EMACS シュミレーション(キーバインド)に変えることができますか?
2003バージョンで


770 :デフォルトの名無しさん:04/11/01 03:28:42
シュミレーションって久々に聞いたw

771 :デフォルトの名無しさん:04/11/01 05:47:38
英語の発音なんてどう聞こえるか。なんだから別にいいんじゃないか

772 :デフォルトの名無しさん:04/11/01 07:53:16
そこでワーニングですよ

773 :デフォルトの名無しさん:04/11/01 09:28:26
□□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□
□□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□
□■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□
□□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□
□□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□
□□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□
□□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□
□■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□
□□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□
□□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□
□□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□
□■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□
□■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□

774 :デフォルトの名無しさん:04/11/01 11:19:22
マスコミュ

くちコミュ

775 :デフォルトの名無しさん:04/11/01 11:48:16
>771
シュミレーションとは絶対に聞こえない

776 :デフォルトの名無しさん:04/11/01 12:01:42
コミニュケーションだと思ってるアフォも多いな

777 :デフォルトの名無しさん:04/11/01 12:19:59
IME変換していれば間違いに気づいたのにな。

778 :デフォルトの名無しさん:04/11/01 12:27:41
コスモポタリン

779 :デフォルトの名無しさん:04/11/01 13:17:34
.NET2 の Clipboard.ContainsAudio()って、どんなデータを渡すとtrueを返すんですか?
単純に.mid、.mp3ファイルをコピーしてもfalseになるんですが。

780 :デフォルトの名無しさん:04/11/01 13:34:51
まあ例えばOS付属のサウンドレコーダでコピーした時とかだな。
WAV形式のバイト配列。

781 :779:04/11/01 13:40:21
>>780
どうもありがとうございます。

言われてから、Get/Setするメソッド見てみたら、確かにその通りですた・・・ orz
public static Stream GetAudioStream();
public static void SetAudio(byte[] audioBytes);
public static void SetAudio(Stream audioStream);

782 :デフォルトの名無しさん:04/11/01 22:19:29
かえるの子供はおじゃまたくしだもんな。

783 :デフォルトの名無しさん:04/11/02 03:08:32
とうころもしもどうぞ。

784 :デフォルトの名無しさん:04/11/02 07:47:18
そんなことしたらまっろくろくすけが出るぞ。

785 :デフォルトの名無しさん:04/11/02 12:04:13
ASP.NETのWebアプリをC#で書いてるんですが、
(int)Session["ID"];
だと、以下のエラーが出て、
System.InvalidCastException: 指定されたキャストは有効ではありません。

int.Parse(Session["ID"].ToString());
だと問題ないというのが不思議なんですが・・・

nullになってる訳でもなさそうです。

786 :デフォルトの名無しさん:04/11/02 12:57:05
>>785
ほんとに元はint型かい?

787 :デフォルトの名無しさん:04/11/02 13:09:50
漏れの予想ではセッションIDはたぶんストリング。

788 :デフォルトの名無しさん:04/11/02 13:12:11
GetType()で型を調べてみたら?

789 :785:04/11/02 13:13:14
> ほんとに元はint型かい?

有難うございます。なるほど、そういうことなのですか。
Session自体はオブジェクト型を返すので、
Sessionに入れられた時点でオブジェクト型という型になると
誤解していました。

Session["ID"] = Request.QueryString["ID"];
Session["ID"] = int.Parse(Request.QueryString["ID"]);
と変更したら、予想通りの動きになりました。
どうも有り難うございました。


790 :デフォルトの名無しさん:04/11/02 18:52:27
よくアプリケーションのオプションダイアログなどに
適用ボタンがありますが、みなさんはどのようにして実現されてるのでしょう?
今回はメインフォームとダイアログのアプリケーションとした場合、
・ダイアログのコンストラクタにメインフォーム(this)を渡す
・デリゲートを使ってメインフォームのメソッドをダイアログに登録する
・メインフォームにスタティックメソッドを使う
など様々な場合が考えられますが、どれが一番推奨されているのでしょうか?

791 :デフォルトの名無しさん:04/11/02 18:52:59
http://mahyaros.s18.xrea.com/upload/img/rpg2ch_4673.lzh

792 :デフォルトの名無しさん:04/11/02 19:07:09
>790
メインフォームでアプリケーションオブジェクトの管理をしてる時点でうんこ設計

793 :デフォルトの名無しさん:04/11/02 19:11:35
ヽ(・∀・)ノ●ウンコー

794 :デフォルトの名無しさん:04/11/02 19:14:55
複数行からなるテキスト文から特定の行にある文字列を
全部取得するにはどうしたらいいのですか?


795 :デフォルトの名無しさん:04/11/02 20:16:22
すいません、教えてください。
アプリケーションを終了したいのですが

System.Diagnostics.Process[] myProcesses;
myProcesses = System.Diagnostics.Process.GetProcessesByName("プロセス名");
foreach(System.Diagnostics.Process instance in myProcess)
{
instance.CloseMainWindow();
}

とやりますと、終了確認のダイアログが出てきてしまいます。
(終了確認のあるアプリケーションです)
このダイアログを出さないで終了させるにはどうしたらよいでしょうか?
教えていいただけませんでしょうか。
よろしくお願いします。


796 :デフォルトの名無しさん:04/11/02 20:24:38
>>795
Process.Killで良いんじゃないかな。

>>794
Splitしてその配列の中から。
ただし"a\r\nb"は{"a","","b"}にされるので一旦\nに置換するとかすると吉。

大技:TextBoxつくってTextにぶち込んでLinesを使う

797 :デフォルトの名無しさん:04/11/02 21:22:19
>>796
ありがとうございます。
Process.Killでできました。

ご教授ありがとうございました。

798 :デフォルトの名無しさん:04/11/02 22:13:47
すいません。
もう一度お教え願えないでしょうか?

プログラムを実行しまして、次のプログラムに移るときに何秒間か待機させる方法を探しております。
たとえば

if(〜〜){
処理;
}
//ここで何秒間か待機させる
if(〜〜){
処理2;
}

というようなことをしたいのです。
連続の質問申し訳ないのですが、よろしくお願いいたします。


799 :デフォルトの名無しさん:04/11/02 22:16:38
Thread.Sleep

800 :デフォルトの名無しさん:04/11/02 22:53:05
>>790
設定を保持するクラスを用意する。

OKボタン押下時→設定保持クラスの値を書き換えてダイアログを閉じる。
適用ボタン押下時→設定保持クラスの値を書き換えてもダイアログは閉じない。

クラスに限らず、メインフォームとも設定ダイアログとも別の場所に設定情報を
保持しておけばよろし。

801 :デフォルトの名無しさん:04/11/02 23:15:14
今日も小もない質問をしてしまいます。
MSの正規表現クラスで
"aaa bbb ccc test"string[]の中に放り込みたいのですが、
スペースだけなら、.Splitでもしたらいいのですが問題があり、
このスペースが曲者で、UTFとか2バイトの空白も考慮しないとならず
正規表現で取得するのが手っ取り早いと思うのですが、
正規表現を(@"(\S[^\s]*\s)*?")とかでとってきたいのですが、露骨にまちがってますか?
よろしくお願いします。

802 :デフォルトの名無しさん:04/11/02 23:21:35
まず日本語を勉強すべきだな。

Regex.Split("hoge foo bar", "\\s");

803 :デフォルトの名無しさん:04/11/02 23:36:16
>>801
"UTFとか2バイトの空白も考慮しないとならず"

それは C# の string (ユニコード文字列) ではありません。
なんだかわからんエンコーディングの文字列のバイナリ表現を、byte -> char と変換して
適当に string 化したものを一般的に扱う術は無いです。

804 :デフォルトの名無しさん:04/11/02 23:45:16
>>801
もとになる文字列(らしきもの?)を何からどうやって取得しているのか説明してくれれば
知恵を貸せるかもしれない。

805 :デフォルトの名無しさん:04/11/03 00:12:33
元になる文字列現在はテストとして渡されたのが
[1byte空白][UTF空白][1byte空白][文字列][1byte空白][UTF空白]以下ずっとこのような形式で
終端まで続きます。とりあえず、文字列だけ抜き出しかつ要素1つ
1つをstring[]の配列にいれてデータがほしいです。
正規表現で抜き出せないないなら、別の方法を探してみようと思います。

806 :デフォルトの名無しさん:04/11/03 00:23:30
1byte空白って何?そんなもんC#にあるの?

807 :デフォルトの名無しさん:04/11/03 00:35:25
>>805
[文字列]ってのはユニコード?

808 :759==754:04/11/03 01:20:52
上でお騒がせした759==754です。
折れ線グラフを選択したかったので選択範囲だけ折れ線グラフの色を変えて再描画
選択範囲が変わると前の選択範囲を普通の色に書き直して選択範囲をまた〜
ってやってまぁまぁの速度出てたのですが、

ControlPaint.FillReversibleRectangle

ってのを今日になって見つけました… o..rz... 

809 :デフォルトの名無しさん:04/11/03 01:29:13
>808
不謹慎(・A・)イクナイ!!

810 :デフォルトの名無しさん:04/11/03 01:39:36
>>808そいつはよかったな。あと、これでも読んどけ。
http://www.codeproject.com/cs/miscctrl/marchingants.asp

811 :759==754:04/11/03 01:53:02
当然のように
ControlPaint.DrawReversibleLine
なんてのもあるわけで…

>>809さん 不謹慎ですか…ぁぅぁぅ
>>810さん GIMPのソース呼んで勉強したってすごいで努力家ですね、
そんだけやって蟻なのかと… とはいえちらっとPaint.netのソース見たりはしてみたんですが。
FillReversibleRectangleはなかったような…見落としたかな 見てみよっと。

812 :790:04/11/03 02:06:31
>>792
ということは、管理をするクラスを一つ作って、
そのクラスにメインフォームをアップデートするメソッド登録、
ダイアログに管理クラスを渡して適用などを行うようにするのでしょうか?

学生の身分なんで、多くのソース見る機会がないもので(涙

813 :デフォルトの名無しさん:04/11/03 02:26:30
>>812
もっとも安直な実装法としては、以下のようになるでしょう。

設定値保持クラスを作り、Singletonパターンで1個しかインスタンスを作れないようにしておく。
そのクラスを引数にとるアップデート用メソッドをメインフォームに用意する。
設定ダイアログで[OK]あるいは[適用]が押されたら、設定保持クラスのプロパティに値をセットし、
メインフォームのアップデート用メソッドにそれを渡す。
(そのためには、メインフォームからダイアログを開くときに、thisを渡しておく必要がある。それは
あなたの考えているとおり)
[OK]と[適用]の動作の違いは、ダイアログを閉じるか否かのみ。

発展型として、設定保持クラスのコンストラクタで設定ファイルを読み、デストラクタで書き込むとか
いろいろ考えられる。

こういうのは自分で実装してみないと知識もカンも身に付かないので、とにかく自力で思いつく限りの
パターンを実装してみれ。学生ならなおさら。

814 :デフォルトの名無しさん:04/11/03 02:43:09
>812
その手の設計するときはObserver的な考え使ったほうがいい。
OberverではSubjectはObserverがどんなものか知らないし、しる必要もない。そうすることでオブジェクトの分離ができる。
誰がどのクラスを知ってるべきかなど考えてどうするか悩んでるんでしょう?
たとえば、メインフォームのメソッドを呼ぶためにダイアログは名フォームのこと知らなければいけないけど知らせたくないとか。

自分がするならメインフォームクラス、アプリデータクラス、設定管理クラス、設定いじくるようダイアログクラスを作る。
関係は次のとおり(左が右のクラスを知っている)
メインフォーム    アプリデータ、(ダイアログ起動するためだけに)ダイアログ
アプリデータ     設定管理
ダイアログ      設定管理

ダイアログは設定管理だけを更新する。
設定管理は設定変わったイベントを出す。
データは設定変わったイベントを受けて内部データ変えて、データ変わったイベントを出す。
データわかったイベント受けて、メインフォームは表示を変更

たぶんスコープの問題とオブジェクトの分離をごちゃ混ぜにしている。

815 :デフォルトの名無しさん:04/11/03 03:19:52
そこまでやるなら鼻からVC++でDoc/Viewつかった方が早いw

816 :デフォルトの名無しさん:04/11/03 03:27:08
なんでそこにObserverを特殊化した形のDoc/Viewを使う必要がある?

817 :デフォルトの名無しさん:04/11/03 09:04:53
VisualStudioのフォームのデザイン用の画面のワークスペースの色を変更する方法はないでしょうか?
現在は真っ白ですが、できればWindows2000デフォルトのデスクトップ色のくすんだ青色にしたいのですが。

818 :デフォルトの名無しさん:04/11/03 09:08:28
ついでにもうひとつ質問書き込みします。
デバッグF5実行時に、自動的にVisualStudioIDEを
アイコン化(最小化?)してくれる機能は無いですか?
C++BuilderやDelphiにはあったのですが。

819 :デフォルトの名無しさん:04/11/03 09:38:40
>>817
デスクトップ領域で右クリックして「プロパティ」
画面のプロパティダイアログで「デザイン」
指定する部分「アプリケーション作業域」で色かえれ

820 :790:04/11/03 12:44:12
>>813-814
ありがとうございます。
もうちょっと結城さんのデザインパターンの本を読んで自分なりに
勉強してみたいと思います。

821 :デフォルトの名無しさん:04/11/03 13:44:24
Panel上にPictureBoxを設置して自動的にスクロール表示させてるのですが、
パネルのスクロールバーをスライドさしたとき、
表示されている部分の左上のPictureBoxの座標を得るにはどうすればいいですか?


822 :デフォルトの名無しさん:04/11/03 14:00:03
AutoScrollPositionプロパティ。
ただしこれは821の意味ではX,Yそれぞれ負数になっている。

823 :デフォルトの名無しさん:04/11/03 14:16:06
IEのコンポーネントを使用して
ダイアログ内の設定画面をHTMLで作成して入力された値を
ほげほげってできないかな。


824 :デフォルトの名無しさん:04/11/03 14:31:17
>>823
C#の前に日本語を覚え直そう。

825 :デフォルトの名無しさん:04/11/03 14:49:10
|-`).。oO(ほげほげを指摘されているわけじゃないよね。。。?)

826 :デフォルトの名無しさん:04/11/03 14:55:26
普通にできそうだ。サンキュ。

827 :デフォルトの名無しさん:04/11/03 15:04:40
インプロセスで動く簡易的なWebサーバーコンポーネント欲しいよね。
IEコンポーネント使っても、ページの内容を動的に変えるのってかなりめんどいし。
Web Forms使って内容を出力できたら便利なのに。
と以前pluggable protocol使ってIEコンポーネントでアプリのヘルプ見れるようにしたときに思った。

828 :821:04/11/03 16:21:11
>>822さん
ありがとうございます。早速やってみます。

829 :デフォルトの名無しさん:04/11/03 17:16:47
MyWebなんて覚えてる人いる?

830 :デフォルトの名無しさん:04/11/03 17:16:54
クラスAにstatic int num;してコンストラクタでnum++;、デストラクタでnum--;すれば、
クラスAのインスタンスの数が分かりますよね?

で今やりたいのは、クラスAから派生した全てのクラス(B,C,D,,,,,,,)の数を知りたいのですがどうしたらいいですか?

831 :デフォルトの名無しさん:04/11/03 17:21:44
>>830
インスタンス数じゃなくてクラス数なら、わざわざプログラムで解決する必要ないような。
オブジェクトブラウザでも使ったら?

832 :デフォルトの名無しさん:04/11/03 17:34:05
プログラム板って雰囲気悪いね

833 :デフォルトの名無しさん:04/11/03 18:16:34
>>830
sealed クラスならいざ知らず、そうじゃないクラスならば全ての子クラス数を取得することは無理っすよ
アセンブリ単位でクラス数が固定されているのならば、↓のような感じでできますが

[手順]
Assembly.GetAssembly().GetTypes() とかでアセンブリ内の全ての Type の配列を取得
Type.IsSubclassOf(typeof(ClassA)) で一つ一つ確かめながら数えていく

834 :デフォルトの名無しさん:04/11/03 18:45:16
>>799
ありがとうございます。
できました。
感謝いたします

835 :デフォルトの名無しさん:04/11/03 18:56:15
すいません・・・。
多々にわたる質問本当にすいません。

FileSystemWatcherを教えてもらったとき、気がつかなかったことがあります。
実は今日気がついたことなのですが、
私はログファイルを監視するようにしています。
そのログが更新されるときに問題が発生しました。
更新したログファイルを書き込むときに、一度もとのログを削除してから書き込まれます。
そこでイベントが発生してしまい、困っています。

この問題を解決するためにはどうしたらよろしいでしょうか?
私も考えて見たのですが、どうもうまくいかなく、質問させていただきました。
あつかましいようですが、なにとぞお力添えをいただけないでしょうか?



836 :デフォルトの名無しさん:04/11/03 19:01:53
あつかましいです

837 :デフォルトの名無しさん:04/11/03 19:05:01
ひょっとして830が言ってるのはあるクラスの全派生クラスのインスタンス数ではないのか。
そうなら基底クラスのデフォルトコンストラクタに830みたいな機構入れておけばいいんだけど。


>>835
わけわからん

838 :デフォルトの名無しさん:04/11/03 23:02:43
初歩的な質問ですみません。
c#で
”H16/11/01”みたいに平成をHで出す事できますか?
Datetime型→stringへの変換時です。

後、それからもっと初歩的ですみません。
Comboboxでドロップダウンリストを出して選ぶと必ずイベントをとりたい
場合ってどうしたらいいんでしょう?
SlectedIndexChangeイベントだと、インデックスが変わった時しか発生しません。
インデックスが変わらなくても、選ばれると発生させたいんです。
Clickイベントを起こすのは嫌だなと思ってます。

宜しくお願いします。


839 :デフォルトの名無しさん:04/11/03 23:15:27
>>838
JapaneseCalendar.GetEra()

ComboBox を継承してイベント追加。

840 :デフォルトの名無しさん:04/11/03 23:15:30
>>838
>  c#で
>  ”H16/11/01”みたいに平成をHで出す事できますか?
>  Datetime型→stringへの変換時です。

ttp://www.ailight.jp/Wareki_2.aspx
最終的には力ずく。

>  Comboboxでドロップダウンリストを出して選ぶと必ずイベントをとりたい
>  場合ってどうしたらいいんでしょう?

ComboBox.DropDown

>  初歩的な質問ですみません。

ふらっとC♯(Part5)
http://pc5.2ch.net/test/read.cgi/tech/1065196964/

841 :デフォルトの名無しさん:04/11/03 23:18:56
って選んだ時ならDropDownイベントじゃないか。

842 :デフォルトの名無しさん:04/11/03 23:24:01
ComboBox.SelectionChangeCommittedがお望みの動作に限りなく近いはず。

843 :デフォルトの名無しさん:04/11/03 23:38:45
>>835
すいません。

FileSystemWatcherでログファイルを監視して
そのログファイルのサイズが0になったらイベントを起こしています。
しかし、ログファイルの更新があると、勝手にイベントが動いてしまいます。
それを避けるにはどうしたらよいのでしょうか?

おかしな文章でしたら申し訳ないです


844 :デフォルトの名無しさん:04/11/03 23:40:48
戸愚呂弟が強い。
指弾で体力削られた後、100%中の100%喰らうとマジ厳しい orz

845 :デフォルトの名無しさん:04/11/03 23:43:15
>>843
イベントで起動するメソッドの方で判別すりゃいいじゃん。

846 :デフォルトの名無しさん:04/11/04 00:01:57
>843
何でログ書くときに削除されるの?
そのログクラスの仕様を削除イベントで内容に変えるか、更新前イベント、更新後イベントつけて、その間の削除イベントは無視するかが自然じゃないの?

847 :デフォルトの名無しさん:04/11/04 10:07:22
>>845-846
レスありがとうございます。

私はログが更新されるときにファイルがクリアされてから書き込んでいるとは思わなかったです。

私はイベントが起こったら数秒待機させて、そしてもう一度ログを読み込ませて
書き込まれていればイベントを停止させて、書き込まれていなければ
そのまま実行させる
ということをやろうとしましたが、どうもうまくいかなくて・・・。
なにぶんプログラミングは初めてでまだわからないところがたくさんあります。

すいませんでした。
もう一度じっくり考えて見ます。


848 :デフォルトの名無しさん:04/11/04 22:41:00
this.toolTip1.Active =false;
this.toolTip1.SetToolTip(this.pictureBox1, e.X.ToString()+" , "+e.Y.ToString());
this.toolTip1.Active =true;
というコードをPanel上に配置したPictureBox1のMouseMoveに書いたのですが、
まったくToolTipが表示されません。
他のコントロールからPictureBoxに移動してきてすぐも表示されません。
this.toolTip1.InitialDelay = 1000
this.toolTip1.AutomaticDelay = 200
this.toolTip1.AutoPopDelay = 200
this.toolTip1.ReshowDelay = 40
です。 何が悪いのでしょうか?

849 :デフォルトの名無しさん:04/11/05 00:23:25
this.toolTip1.Active =false;
がいらん。

850 :デフォルトの名無しさん:04/11/05 01:09:27
すいません。
RitchTextBoxに1行ずつ書き込んで生きたいのですがどうやればいいのでしょうか?


851 :848:04/11/05 01:10:09
>>849さん
ありがとうございました。ばっちり動きました。
http://dobon.net/vb/dotnet/control/lvitemtooltip.html
みて毎回falseにしてました。

852 :デフォルトの名無しさん:04/11/05 01:10:43
嫌な生き方だな。

853 :デフォルトの名無しさん:04/11/05 20:43:52
次期VBには、Myクラスという便利な機能が付くようで、羨ましいです。
C#では、やっぱりMyクラスは、使えないのでしょうか?

854 :デフォルトの名無しさん:04/11/05 22:01:20
>>853
いや別に便利でもないし。
結局既存クラスのメソッドプロパティを関数ベースにラップしてるだけだし。
使おうと思えば使えるけど使おうと思わないな。

855 :デフォルトの名無しさん:04/11/05 22:12:43
ちょっと正しくないか。
既存クラスのラッパクラスを関数ベースっぽく扱えるようにコンパイラが小細工する、だな。
一部のメソッドなんか省略パラメータ代わりのオーバーロードで醜いこと甚だしい。

856 :デフォルトの名無しさん:04/11/05 22:56:37
>>855
いや、VB の位置付けを考えるとMyみたいな簡易版のライブラリは重要じゃないか?
ということとは別として、何が「やっぱり」なのかはわからないけど普通に考えると使えそうだよね。

857 :デフォルトの名無しさん:04/11/06 04:41:38
ここを見ると、VB固有の新機能ってあるけどなあ
http://enterprise.watch.impress.co.jp/cda/software/2004/08/25/3167.html

858 :デフォルトの名無しさん:04/11/06 10:13:52
VisualStudio.NET2003の統合開発環境のエディタと同じキーマップのエディタってないですかね?
ほんとはIDEから切り離したいんだけど、それだとタイーホされちゃいそうだし、
それ以前に切り離しかたがわからないです。

859 :デフォルトの名無しさん:04/11/06 16:21:21
適当なエディタのキーバーインドをカスタマイズすればいいだけなんじゃないのか?

860 :デフォルトの名無しさん:04/11/06 23:24:07
858です。そういうレスがつくのは大体予想してた。
キーバインドでVS.NET2003とほとんど同等になる
コンフィグファイルを公開してるのってどんなエディタがありますか。
やっぱ EMACS ですかね?

861 :デフォルトの名無しさん:04/11/07 01:36:03
VSのエディタだけが欲しいのなら
エディタ以外を非表示にすればいいんと違うの?
シンプルなタブ型エディタになるよ。
.txtとかを開くときはデフォでなってるし。

862 :デフォルトの名無しさん:04/11/07 02:38:45
何だかまた「エディタvsIDE」の論争になりそう。
そういうわけで・・・・
http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview20.html
これの後半を読め。
Unixを使ってる人でもVisualStudioのIDEを評価してるぞ。


863 :デフォルトの名無しさん:04/11/07 12:36:44
いや、あのさ。
VisualStudioの入っているPCの時は起動は重いけどそれなりに楽しく使ってる。
VisualStudioの入っていない端末にいったときにはnotepad.exeを使えばいいってことも頭ではわかってる。。
だけど体がうけつけんのだよ。だからCD-Rとかに使いやすいエディタを入れておいて、
使う時だけインストール、仕事が終わったらアンインストールってな感じで使いたいんさ。

864 :デフォルトの名無しさん:04/11/07 13:02:18
あ、それとね、
>>862 べつにIDEが嫌いなわけじゃないんだよね。
IDEが好きだから、エディタを切り離して別のところで使いたいなーと思っただけ。
エディタからコンパイラとかリンカを ShellExecute しようとは思っていないですよ。

OSにプログラマも満足するような、フルパワーなエディタが標準でついていたらいいのにね。

865 :デフォルトの名無しさん:04/11/07 13:04:33
この天気のいい日曜日にグチを書き込んで、おれは悲しいな。
遊びにいくべー、じゃあそんなわけでバイバイ。

866 :デフォルトの名無しさん:04/11/07 14:25:28
>>863-864
確かにそれは便利だな。

867 :デフォルトの名無しさん:04/11/07 14:41:27
panal上にPictureBoxを配置してスクロール表示さしてるときに、
スクロールバーの現在位置を変えるにはどうしたらいいですか?


868 :デフォルトの名無しさん:04/11/07 14:59:32
>>867
Panel.AutoScrollPositionプロパティ。
ちょっと数値が直感的でないから要注意だ。

869 :デフォルトの名無しさん:04/11/07 18:43:32
C#を勉強したいと思っているので、ツールを買おうかなと思っています。
でもC#のツールってVisual C#以外にもあったんですね。
Visual C#とBorland C# Builderってどう違うんでしょう?
初心者はやっぱVisual C#ですかね・・・?

870 :デフォルトの名無しさん:04/11/07 18:58:37
>>869
無難なのはVisual C#
金が勿体無いと思うならShaepDevelop (フリーソフト)
マニアならC# Builder

とりあえずSharpDevelop使ってみ。

871 :デフォルトの名無しさん:04/11/07 20:16:08
>>870
レスありがd
さっそく落としてみようかなと

872 :867:04/11/07 23:35:41
>>868さん
レスthxです。

無事思い通りに行きました。

873 :デフォルトの名無しさん:04/11/08 13:11:17
TextBox.TextChangedとか、
TrackBar.ValueChangedなんですけど、
これらのイベントの発生原因が、ユーザーの入力なのか、プログラムからの呼び出し(TrackBar.Value=0とか)なのか、
判別する方法はないですか??

874 :デフォルトの名無しさん:04/11/09 00:47:47
Zhang-Shasha algorithmというXMLの差分比較アルゴリズムの
C#のソースってありませんか?ちょっとこれ実装してみたいのですが、
原著見ても数式理解できないのソースとにらめっこしたいです。

875 :デフォルトの名無しさん:04/11/09 02:05:11
>>874
数式記載を激しく希望。

876 :デフォルトの名無しさん:04/11/09 02:14:43
.NET Framework SDKに入っているXMLdiffにはC#のソースが
付いているらしいのだが。

877 :C ◆ZHxgEbZjZg :04/11/09 12:17:28
すいません VSの使い方を教えてください。こういうことができるかどうかもわかりません。


LOGIN.form のボタンをクリックすると MENU.form を呼び出すように作成しています。
デバッグ開始すると必ずLOGIN.form が出てきてしまいますが、MENU.formだけをデバッグすることはできるのでしょうか?
2階層くらいならまだいいのですが、階層が増えていくと、非常に面倒です。

くだらない質問かもしれませんが、どうか教えてください。よろしくお願いします。m(_ _)m



878 :デフォルトの名無しさん:04/11/09 12:28:35
>>877
#if DEBUG
this.buttonMenu.performClick();
#endif
とかしておけば?

879 :デフォルトの名無しさん:04/11/09 13:35:50
>877
ビジュアルスタディオよりもプログラムについて勉強されたほうがいいと思います。

880 :デフォルトの名無しさん:04/11/09 13:48:48
Windows Forms の DateTimePicker で 2004年11月 のように
年月のみを入力させるようにはできませんか?

881 :デフォルトの名無しさん:04/11/09 13:59:28
>>880
DateTimePicker.Format
DateTimePicker.CustomFormat
あとカレンダー使うのは不自然だろうからDateTimePicker.ShowUpDown

882 :デフォルトの名無しさん:04/11/10 00:26:58
すいません。どうやってやればいいのか検討もつかないので教えてください。

ある通信プログラムがどれぐらいの速さで通信しているか調べる方法はあるでしょうか?
ある通信プログラムというのはネットゲームだったり、ウェブからファイルをダウンロードしたりということです。

ソケットとか調べるのかな?といろいろ調べてみましたがよくわからなかったです・・・・。
すいませんが、よろしくおねがいします。

883 :デフォルトの名無しさん:04/11/10 00:33:11
>>882
あんまり細かい事考えてると禿るぞ。

ttp://ukamen.hp.infoseek.co.jp/Programming2/PerfMeter/index.htm

884 :デフォルトの名無しさん:04/11/10 04:01:44
ある特定のクラスのサブクラスを列挙するもの無いですか?

885 :デフォルトの名無しさん:04/11/10 04:55:27
Labelを、DockStyle.Fillにしても、
全体化(?)されないのは仕様ですか?

886 :デフォルトの名無しさん:04/11/10 07:35:01
>>885
Docking できたよ。

887 :デフォルトの名無しさん:04/11/10 07:44:55
>>884
論理的に不可能。
今のアセンブリ限定とかなら>>833みたいな手法で。

888 :デフォルトの名無しさん:04/11/10 12:18:47
下記の文章の意味が分かりません。
誰か解説してもらえないでしょうか?
delta-metadataやらdelta-ILやらがさっぱりです。

The compiler supplies delta-IL and delta-metadata, which is used to replace parts of the existing IL and metadata in memory.
Delta-IL and delta-metadata simply refers to the gap used to insert the edited code.
If the edited methods have been JIT-ed into native x86 code, they are replaced with new x86 code.

なお、この文章は下記のページからの引用です。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/edit_continue.asp

889 :デフォルトの名無しさん:04/11/10 12:32:05
入れ子になったnamespaceを作り、親のnamespaceのみusingした場合、
子のnamespaceが見えないのは何故なんでしょう?

using System;
using A; // ←親のnamespaceをusingしておく
namespace A {
namespace B {
public class Hoge
{
public static void foo(){}
}
}
}
class Test {
[STAThread] static void Main(string[] args) {
B.Moge.foo(); // ← ERROR
// 型または名前空間名 'B' が見つかりませんでした。
// ディレクティブを使うかアセンブリ参照を使ってください。
}
}

890 :デフォルトの名無しさん:04/11/10 12:55:11
>>888
(Edit and continue が行われると、)コンパイラは命令とメタデータの差分を生成し、
メモリにある既存の命令とメタデータの一部はそれらによって置き換えられます。
変更された命令とメタデータは、ソースコード上でそれらが挿入された位置に対応
する位置に収められます。
もし編集されたメソッドがJITコンパイラによってx86命令に置き換えられていた場合
には、それらは新しいx86命令によって置き換えられます。

891 :デフォルトの名無しさん:04/11/10 12:59:40
>>889
下記のように仕様なわけだけれども、なぜそういう仕様なのかっていう質問ですか?
>Create a using directive to use the types in a namespace without having to specify the namespace.
>A using directive does not give you access to any namespaces that may be nested in the namespace
>you specify.

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfusingdirective.asp
より引用。手元の SDK のドキュメントでも同じように書かれている。

892 :デフォルトの名無しさん:04/11/10 13:03:46
>>890
ありがとうございます。
こんなに早く回答していただけるとは思いませんでした。
英語が苦手なので大変助かりました。
本当にありがとうございました。

893 :889:04/11/10 13:34:01
>>891
情報ありがとうございます。

そういう仕様だったのですか…。
C++では普通に使えていたので、C#でもできると思い込んでおりました。
ありがとうございました。

894 :デフォルトの名無しさん:04/11/10 13:41:31
>>893
C# 2.0 では、
namespace A{ namespace B{ namespace C{ class Foo{ .....

using D = A.B;
using E = A.B.C;
D::C.Foo;
E::Foo;

とかいうまねならできたはず。

895 :デフォルトの名無しさん:04/11/10 14:03:30
>>894
エイリアスを使うものなら1.0でも
using IO = System.IO;
Console.Write(IO.IsolatedStorage.IsolatedStorageScope.Assembly);
なんて書き方ができるよ。
//プリプロセッサのマクロに近いな、この使い方。

::は名前空間とクラスの名前が同じ場合にそれが名前空間であることを明示するため、だったっけ。

896 :デフォルトの名無しさん:04/11/10 14:09:47
>>894
結局エイリアス名を書かないとならないのですね。

---
お作法や効率的に良いか悪いかは分かりませんが、
ネストしたクラスを使って、やりたかった事が出来ました。
namespace A { class B { class Hoge { .....

using A;
B.Hoge hoge=newB.Hoge();

897 :デフォルトの名無しさん:04/11/10 15:44:11
ところで、鯖側に強制終了された Socket に、書き込みを行おうとすると
一度目では例外が発生せずに、二度目ではじめて例外が発生するのは何でですか?

898 :デフォルトの名無しさん:04/11/10 21:12:04
IPEndPoint ipEndPoint = new IPEndPoint(Dns.ResolveToAddresses("http://www.google.com")[0], 1101);
で、
要求した名前は有効で、データベースにありますが、解決された正しい関連データがありません。
ってエラーが出るんですが、どうやったら直りますか?

899 :デフォルトの名無しさん:04/11/10 22:14:46
>>898
"www.google.com"で試してみたら?
//なんでyahoo.comならスキーマ付きで通るんだか。

900 :デフォルトの名無しさん:04/11/10 22:22:49
相談させて下さい。

windowsのDatagridに入力するフォームで、一定時間毎にDataSetを更新しようと思います。
ただしデータを入力中に更新したくないので
今グリッドの中でデータを入力している最中だということを、知りたいのですが、
それらしいプロパティが見つかりません。

もし、あるのなら教えて下さい。
よろしくお願いします。



901 :デフォルトの名無しさん:04/11/10 23:14:31
>>883
ありがとうございます。
なるほど、こんな風にして値を算出すればよさそうです。
本当にありがとうございます。

あとどうしてもVisual Studio.NETのバグとしか思えない現象になってしまいました。
その現象というのは、イベントが発生しない、というものです。
さっきまではきちんと動作していましたが、もう一度コンパイルしてみるといきなり動かなくなってしまいました。
書いたはずのイベントが無かったことにされているようです。
例ですが
buttonを押したときイベントを起こすには
private void buttonSend_Click(object sender, System.EventArgs e)
{
      処理;
}
となるじゃないですか。
認識されてないのか、ボタンを押しても何も起こりません。
挙句の果てに、もう一回イベントをつけようとすると
private void buttonSend_Click(object sender, System.EventArgs e)
{

}
と、上に同じイベントがあるにもかかわらず新しく作られてしまいます。

これってやはりバグなのでしょうか?
今まで作ってきたのにすべてやり直しになってしまいました。
この現象の直し方などを知っている方、どうかお助けください。
長文すいませんでした。

902 :デフォルトの名無しさん:04/11/10 23:20:31
>>901
メソッドを追加しただけじゃイベントハンドラにはなりませんよ。
デザイナでイベントハンドラを追加したときには、VS.Net が InitializeComponent 関数内に
イベントとメソッドの対応付けのためのコードを書いてくれます。

コンストラクタにあった InitializeComponent の呼び出しを消してしまったんじゃない?


903 :デフォルトの名無しさん:04/11/10 23:21:12
>>900
逆に、更新する時間になると、入力不可能にするとかは駄目?
Enabledプロパティで簡単に出来るけど。

904 :デフォルトの名無しさん:04/11/10 23:24:58
DataTableにColumnChangingイベントあるからこれが発生したら
フラグでもtrueとかにして、そのフラグを監視して更新制御をする
方法しか思いつきません。DataSetにDataTable入れ込んだやつをDataGrid
にセットすれば、セルをクリックした時点でColumnChangingを捕捉できます。

またまた、くだらない質問なのですがC#で全方向リストを作成する場合、
インターフェイスにICloneable, IEnumerableを実装して実装するチュートリ
アルもしくはサンプルがあれば教えください。

905 :デフォルトの名無しさん:04/11/10 23:33:10
>>902
ありがとうございます。
今調べてみましたが、その中には何も書いてありませんでした。

確認のために適当なソフト作ってみました。
デザイナでイベントハンドラを追加してみましたが、そういうコードはどこにも追加されていませんでした。

orz・・・・なきそうです・・・

906 :デフォルトの名無しさん:04/11/10 23:35:04
>>904
>  またまた、くだらない質問なのですがC#で全方向リストを作成する場合、
>  インターフェイスにICloneable, IEnumerableを実装して実装するチュートリ
>  アルもしくはサンプルがあれば教えください。

双方向リストのことかね。
ttp://www.google.com/search?num=100&oe=utf8&q=Doubly-linked+list
//全方向リストでgoogleのヒット0件だった……。

907 :デフォルトの名無しさん:04/11/11 00:09:29
OpenFileDialogクラスで開いたダイアログがLUNAインターフェイスに
対応してくれません(マニフェストはちゃんと設置してあります)
対応させるにはAPIを使うしかないんでしょうか?

908 :デフォルトの名無しさん:04/11/11 00:35:56
うちの環境だとちゃんと適応されているが?
.NET のバージョンは 1.1 で。

909 :900:04/11/11 00:42:02
>>903

でもたぶん更新すると入力中のデータって、入力前の値に戻っちゃいますよね?
入力中の行のデータを待避して更新して戻そうと思っても
セルの中を編集している最中だと、その編集中の値を持ってこれないし。。


910 :デフォルトの名無しさん:04/11/11 00:43:07
Application.Run()の前に、
Application.EnableVisualStyle()
やってみるとか?

911 :900:04/11/11 00:53:21
>>909

自己レスというか追加なんですが、
ここでいう更新のやり方がまずいのかもしれないので。

複数人で平行してテーブルのデータを編集するのですが、
dataadapterのupdateだけだと他の人が削除したデータが、gridから消えないので
自分のセル位置を覚えて、clearしてupdateしてまた覚えていたセル位置に戻っています。

こういう更新の仕方をしてると、編集中のデータは元に戻ってしまいます。

912 :デフォルトの名無しさん:04/11/11 01:07:20
>>909
うろ覚えで悪いが、編集部分は単なるEditボックスじゃなかった?

913 :デフォルトの名無しさん:04/11/11 01:11:56
C#.NETって便利でイイんだけど重くなるのがネック

914 :デフォルトの名無しさん:04/11/11 01:25:09
.NET Passportのサンプルってないですか?

915 :デフォルトの名無しさん:04/11/11 02:19:20
>>913
Athlon64 3700+でチョー高速だぜ、フゥーハハハァー

916 :900:04/11/11 02:25:49
>>912

editboxでググってみたら
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=14098
で似たような似てないようなスレを見つけました。

明日会社でがんばってみます。

917 :デフォルトの名無しさん:04/11/11 10:09:48
>>905
その書き方だと間違ったやり方でやってないか?
デザイナでやるなら、デザイナ上に配置したボタンをダブルクリックしてみ。
するとコードのInitializeComponentでイベントハンドラが自動で追加されて、
対応するメソッドも書き加えられて処理をかけるようになるはず。


918 :デフォルトの名無しさん:04/11/11 16:41:52
BASEライブラリのプロテクト プロパティにプログラムで利用するにはどうしたらいいでしょう。

919 :デフォルトの名無しさん:04/11/11 16:50:48
>>918
プロテクトプロパティを持ったクラスを継承する。
継承したクラスなら使える。>protectedメンバ

920 :デフォルトの名無しさん:04/11/11 17:13:01
>>917
ありがとうございます。

はい、私はずっとその方法でやってました。
デザイナでボタンをフォームに配置してみまして、ダブルクリックしてやってみました。
しかしInitializeComponent();にイベントハンドラなどは追加されておりません。

しかし・・・・なんでこんなことに・・・・
バックアップの必要さを身にしみて感じました・・・

921 :デフォルトの名無しさん:04/11/11 17:14:52
>>920
対象のフォームは、当該ソースファイルの一番先頭のクラスになってますか?

922 :デフォルトの名無しさん:04/11/11 17:23:41
>>919
サンクス

923 :デフォルトの名無しさん:04/11/11 19:11:59
>>921
ありがとうございます。

はい、なっていました。
とりあえず、動くところと動かないところがありました。
まるっきり全部動かない状態じゃなくてよかったです。
それで、もう一度同じイベントを作ってあげて処理のソースをコピペしてあげると今度は動きました。
原因はまったくわからないですが、それで解決できるならその方法でやってみようと思います。

一時期はどうなることかと思いました・・・・

924 :デフォルトの名無しさん:04/11/11 21:55:26
>>923
デザイナでいじるときは、たまに破損することがあるから気をつけたほうが良いよ。
しかもUNDOできなかったりしてね。
バックアップを取るとともに、フォーム内のコードは最小限にしてロジックは外に出したほうが良い。

925 :デフォルトの名無しさん:04/11/11 22:44:27
フォームレイアウトも手書きした方が何かと楽だね。
最初はメンドイけど慣れれば結構スラスラ書けるものだよ。

わけわからないコード挿入されないし、
意味もなくリソースファイル使われないし、
コード全体が100パーセント把握できる。

RADによる隠蔽はいいことばかりじゃないからね。
個人的にはデメリットの方が多い。

926 :デフォルトの名無しさん:04/11/11 22:46:42
RADは厨にも分かりやすくするための戦略だよ。
delphi使いには厨しかいないのがいい例。

927 :デフォルトの名無しさん:04/11/11 23:21:05
>925
>RADによる隠蔽はいいことばかりじゃないからね。
>個人的にはデメリットの方が多い。
一体どんなデメリットがあるんだ?
足りない部分はformのコンストラクタで付け加えればいいし、
こういう発言を聞くと、一昔前の
「HTMLのタグは手打ちに限る。HTMLエディタを使うなんて言語道断」
という主張を思い出す。


928 :デフォルトの名無しさん:04/11/11 23:28:16
>>927
昔々は炊飯器で米を炊くのが邪道だったそうだ。
放っておいてやれ。

929 :デフォルトの名無しさん:04/11/11 23:31:04
>>927
「RADによる隠蔽」についてなら漏れも925に同意だけど、C#の場合別に隠蔽されてないしね。
リソースだってイメージリストやアイコン付加した際、国際化可能としてリソース分離するときなど、
必要な場合にしか使われないし。

>>925
コンパイラも使わないで IL を手で書ければ最高だよね。
慣れれば結構すらすら書けるものだよ。コード全体を100%把握できるし。
大きいコードを書く気にはなれないのが難点だけど。

930 :デフォルトの名無しさん:04/11/11 23:38:57
>>929
ILよりもバイナリエディタの方がきめ細かく制御できてお勧めダヨ。

931 :デフォルトの名無しさん:04/11/11 23:40:59
このままだと
「.NETのライブラリはソースが公開されていないので信用できん!」
とか言い出しそう。

932 :デフォルトの名無しさん:04/11/12 00:22:19
公開されてるじゃん、バイナリエディタで読める。

933 :デフォルトの名無しさん:04/11/12 00:27:13
>>931
普通に見られるんだが。
あ、MethodImpl属性ついてるのはだめよん

俺の場合、ソースを読んでさらに信用しなくなった。

934 :デフォルトの名無しさん:04/11/12 03:14:11
>>887
ありがd

935 :デフォルトの名無しさん:04/11/12 03:18:00
>933
Reflectorを使うってこと?
見れないことはないだろうが・・・


936 :デフォルトの名無しさん:04/11/12 09:54:22
>927
>足りない部分はformのコンストラクタで付け加えればいいし

でもこれはRADでできないことは手書きで、っていうことでしょ。
RADの事情をコードに持込むってのはどうなんだろう。

あと、"一昔前"のHTMLは事情が違いすぎるような。
エディタ使ったドキュメントが表示できないなんて普通にあったし。

937 :デフォルトの名無しさん:04/11/12 10:20:48
>925
RADじゃダメな時、というのをマジで教えて欲しいのだが。
動的生成の場合は当然無理だが。
一体どんなGUIなんだ??

938 :デフォルトの名無しさん:04/11/12 12:44:38
>>936
>RADの事情をコードに持込むってのはどうなんだろう。

その結果が激しく不自然なコードになるんじゃなければ、別に良いと思うけど。
だいたい実装用のコードなんてのは抽象的仕様記述じゃないんだから、
開発環境、利用する言語、利用可能なPGの能力、利用環境など様々な事情を
反映したものになって当然なわけで。

939 :デフォルトの名無しさん:04/11/12 13:08:18
IDEからのイベントハンドラ登録とかは確かに適当だとは思う。
初期化時に複数登録したい時とかってこうするしかないし。

InitializeCompornents(){
  Button1.Click += new EventHandler( method1 );
}
Form1(){
  Button1.Click += new EventHandler( method2 );
}

あと、プロパティウインドウからだとTagにテキストしか入れられないから
初期化時に別のを入れようとするとやっぱ別の場所でやらなきゃいけないのもなぁ…。

940 :デフォルトの名無しさん:04/11/12 13:41:42
以下をformのコンストラクタに貼り付けるとダイアログに早代わり!

// ダイアログらしくする
this.MaximizeBox = false; // 最大化ボタンなし
this.MinimizeBox = false; // アイコン化ボタンなし
this.ShowInTaskbar = false; // タスクバーに出さない
this.FormBorderStyle = FormBorderStyle.FixedDialog; // ダイアログスタイル
this.StartPosition = FormStartPosition.CenterScreen; // 画面中央に表示

・・・プロパティウインドウでもできるじゃん・・・

941 :名無しさん♯:04/11/12 15:30:34
早めに次スレ立てときますた。
http://pc5.2ch.net/test/read.cgi/tech/1100240847/l50

そろそろ新しいテンプレが( ゚Д゚)ホスィ・・・
何か案がありましたら書き込んでくださいませ。

942 :デフォルトの名無しさん:04/11/12 16:32:48
datetimepicker の背景色を変える事はできないのでしょうか?

textbox.BackColor のようなプロパティが datetimepicker に見あたらない
のでどうやればいいのか途方に暮れています。

カレンダーの背景色は変える事ができるのに、通常の背景色を変える事は
できないのでしょうか?

変更方法があれば教えてください。

943 :デフォルトの名無しさん:04/11/12 17:12:15
>>942
http://support.microsoft.com/default.aspx?scid=kb;ja;832041


944 :デフォルトの名無しさん:04/11/12 17:26:06
>DateTimePicker.BackColor

プロパティ自体はあるんだよな。
何故かインテリセンスには出てこないけど。

945 :デフォルトの名無しさん:04/11/12 17:27:32
質問させてください。
if(radioButton1=true)
{
int M = 1;
}
eles if(radioButton2=true)
{
int M = 100000;
}
eles if(radioButton4=true)
{
int M = 100000000;
}
eles if(radioButton5=true)
{
long M = 10000000000;
}
else if(radioButton6=true)
{
long M = 1000000000000;
}
というものを書いたのですが、「;が必要です」と表示されて
エラーになってしまいます。
どうしてでしょうか。
また、テキストボックスからの数値を変数に入れて、for文で
ほかの変数と比較するにはどうしたらよいでしょうか。

946 :デフォルトの名無しさん:04/11/12 17:31:58
>>945
そのエラーの原因は一部elseがelesになってるからだろうが、
ほかにもツッコミどころの多いコードだな。

>  また、テキストボックスからの数値を変数に入れて、for文で
>  ほかの変数と比較するにはどうしたらよいでしょうか。

質問が要領を得ない。
・質問文に複数のポイントがあるがそのどれが分からないのか、それとも何もかも分からないのか?
・他の変数ってどういう風に定義されているのか

947 :デフォルトの名無しさん:04/11/12 17:33:56
このいきなり宣言されたMをどうやって使うつもりなんだろうか…。

948 :デフォルトの名無しさん:04/11/12 17:36:20
そもそも代入してるから最初のifが必ずtrueになるわけだが。

949 :デフォルトの名無しさん:04/11/12 17:38:02
radioButton1=true って何がしたいんだ?

プログラムを作る前に、(MSDNを)半年ROMってろ。

950 :942:04/11/12 17:43:58
>>943 >>944
ありがとうございます。

バグって事は、DateTimePicker を使う時点で BackColor を変更できない
って事なんでしょうか?


951 :デフォルトの名無しさん:04/11/12 19:43:27
>>945
面白すぎ

952 :デフォルトの名無しさん:04/11/12 19:47:55
お前ら釣られすぎですよ

953 :デフォルトの名無しさん:04/11/13 01:51:54
ボタンがフォーカスを受け取らないようにするにはどうしたらいいでしょうか?
CanFocusプロパティは読み取り専用で設定できないようなので・・。
何か方法がありましたら教えて下さい。

954 :デフォルトの名無しさん:04/11/13 03:37:54
Enabled を false にする

955 :デフォルトの名無しさん:04/11/13 13:36:54
>>954
レスありがとうございます。
ボタンの機能はそのまま(クリックできる状態)で
クリックしてもフォーカスが移らないようにしたいのです。
ToolBarのボタンみたいな感じです。
DelphiのSpeedButtonのようなコントロールがあればいいのですが・・。

956 :デフォルトの名無しさん:04/11/13 13:51:13
WM_SETFOCUS を受け取った際に別のウィンドウに SetFocus するとかは?

957 :デフォルトの名無しさん:04/11/13 14:19:36
>>956
C#でWindowsメッセージを扱ったことがなかったので、
ためしにEnterイベントで同じことをやってみたら思い通りに出来ました。
ありがとうございました!

958 :デフォルトの名無しさん:04/11/13 17:10:57
フリーのPDF生成ライブラリにオススメはなにかありますか。
iText.NETはJ#ランタイムを入れなくてはならないらしくて、ちょっと躊躇中・・・

959 :デフォルトの名無しさん:04/11/13 18:51:35
メインメニューの項目のショートカットキー項目にスペースキーなどが無いのですが、
これを追加するにはどうしたらよいのでしょうか?

960 :デフォルトの名無しさん:04/11/14 01:47:50
>>959
ProcessCmdKey

961 :デフォルトの名無しさん:04/11/14 01:52:01
すいません。
>>883が紹介してくれましたやつで参考にさせていただきましたが
それぞれの環境でintarface nameをいちいち指定してあげなければいけないのは大変だなと思いまして
intarface nameを自動で取得したいのですが、どうやれば取得できるのかわかりません。
すみませんが、自動でintarface nameの取得の仕方をお教え願えませんでしょうか?
よろしくお願いします。

962 :デフォルトの名無しさん:04/11/14 01:55:37
すいません。
スペルミスです・・・。
×intarface
○interface

963 :デフォルトの名無しさん:04/11/14 02:03:20
>>961
自動で、と仰る意味がよくわかりませんが。
Type.GetInterface メソッドとか如何でしょう。

964 :デフォルトの名無しさん:04/11/14 09:42:47
>>961
はて、883のリンク先にinterface nameなんて用語出てこなかったが、インスタンス名のことでいいのかね。

GetInstanceNamesで取得したstring配列をチェックしてみれば大体傾向はつかめると思うんだが。
//ネットワークアダプタが複数ある可能性がある場合にどうするか、が問題だ。

965 :961:04/11/14 10:59:49
>>963-964
亜rが問うございます。

あら・・・・
申し訳ありません。IntarfaceNameじゃなくてInstanceNameでした・・。

GetInstanceNameで取得できました!!
ありがとうございます。

しかし、ネットワークアダプタが2つある場合はどうしたらよいでしょう・・・。
本当にこれが問題ですね。

ちょっと考えてみます。

966 :965:04/11/14 11:03:01
変換ミス・・・orz
ありがとうございます、でした・・・。

967 :デフォルトの名無しさん:04/11/14 11:34:19
/win32icon で設定したアプリケーションアイコンを
プログラム内から取得するには、どうすればいいんでしょうか?

968 :デフォルトの名無しさん:04/11/14 12:01:12
HashtableをReadonlyにするにはどうすればいいですか。

969 :デフォルトの名無しさん:04/11/14 14:35:17
>>968
中身一個一個をReadOnlyにしたいの?
全体をReadOnlyにしたいの?

970 :デフォルトの名無しさん:04/11/15 01:20:03
ArrayList.ReadOnly() のHashtable版みたいなものを言ってるんじゃないの?

このあたり、const参照/ポインタがあるC++なら何も考えなくていいんだけどな

971 :デフォルトの名無しさん:04/11/15 01:49:45
よくわからんがそれぐらい自分で作れ

972 :デフォルトの名無しさん:04/11/15 12:35:26
public class TextBoxEx : TextBox {
 public TextBoxEx() {
  this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint,true);
 }
}
ってことをしたいんだが、派生クラスをつくらないでunsafeな感じにアクセスすることってできないかな?
邪道?

973 :デフォルトの名無しさん:04/11/15 13:10:27
>>972
リフレクションを使えば可能だが、正直必然性が分からない。
邪道かと聞かれれば当然邪道。

974 :デフォルトの名無しさん:04/11/15 16:24:51
Label コントロールの TextAlign プロパティにて
MiddleCenter や BottomCenter などを指定しても
縦位置が中央寄せや、下寄せにならず常に上寄せになってしまうのですが、
縦位置を中央や下寄せにするにはどうしたらよいのでしょうか?


975 :デフォルトの名無しさん:04/11/15 16:28:37
>>973
サンクスコ。
使うコントロールだけクラスを増やし、それにたいしてのアクセスのために
デザイナのコードとかいじらなくてはいけなくなるなぁとめんどうくさがっていました。

976 :デフォルトの名無しさん:04/11/15 19:37:40
Windowsコントロールでコンソールを再現したいのですが
どうしたらいいでしょう?
FormにTextBoxを貼り付けたものを試したのですが、
テキストを追加して最後の行までスクロールする事が
出来ませんでした。
カレットまでスクロールするメソッドがありますが、
テキストを追加するとカレットが消えてしまいます。

977 :デフォルトの名無しさん:04/11/15 20:22:00
Panelの境界線をFixedSingleの(凸凹してない)状態で、
さらに色を黒じゃなく別の色で表示したいけどやり方がわかないです。

3Dは嫌で、BorderStyleをNoneにしてPaintイベントでちまちまDrawLineとかやってみたけど、
パネルの上にさらにのってるパネルやコントロールのおかげで途中で途切れたりします。

なんかいい方法ないですかね??

978 :デフォルトの名無しさん:04/11/15 20:32:28
>>974
> 縦位置が中央寄せや、下寄せにならず常に上寄せになってしまうのですが、
私の所ではならないんだが。

>>976
SelectionStartプロパティでキャレットの位置は動かせる。

>>977
> パネルの上にさらにのってるパネルやコントロールのおかげで途中で途切れたりします。
極めて真っ当だと思うんだけど……?
途中での意味が今一よくわかんない。

979 :デフォルトの名無しさん:04/11/15 20:43:04
>>978

説明足りなかったす。

パネルやコントロールってののコントロールはとりあえずおいといて、
親パネルの上に貼った子パネルってのは透明の見えないパネル。
その子パネルの上に2つ3つコントロール配置して、親パネルのリサイズとかで子パネルを整列させてます。

なんで、親パネルにはボーダーがあって、その中をボーダーの無い
子パネルが親パネルのサイズによって配置替えしてる状態。

で、子パネルの背景色を透明にしてもみたけど、透明になってない部分があるのか、
部分的にボーダーが途切れちゃう箇所が出てくるわけなんですよ。

まだ解りづらいかな…日本語下手でスマソ

980 :976:04/11/15 20:49:44
>>978
助かりました、ありがとうございます!

981 :デフォルトの名無しさん:04/11/15 21:04:41
>>974
グリフ(文字の形)の下に、英文字のgやyのために日本語文字だけで考えると余分な空白が
付いているのを「上寄せになっている」と勘違いしていたりはしませんか?

982 :974:04/11/15 21:11:47
>>978
いろいろ調べたんですが FlatStyle.System にしてあると
TextAlign が無視されるようです。MSDN によると、

NET Framework Version 1.1 の場合、 FlatStyle プロパティに
FlatStyle.System を設定しても、 TextAlign プロパティの値が
無視されることはありません。

とあるんですが、うちは .NET Framework 1.1 なのですが
FlatStyle を System にすると必ず上寄せになってしまいます。

このあたり、何か御存知の方いらっしゃいませんでしょうか?

アドバイスよろしくお願いします。

983 :デフォルトの名無しさん:04/11/15 23:01:47
>>967
WIN32 APIにそれらしきものがあった。

984 :デフォルトの名無しさん:04/11/15 23:30:20
>>983
なんというAPIでしょうか?


985 :デフォルトの名無しさん:04/11/15 23:38:47
>>984
LoadImageだな。
ただし、/win32iconじゃなくて
.rcファイルをrc.exe(リソースコンパイラ)でコンパイルした.resファイルを/win32resで加えてそっちを参照する。
ちなみに.resは/win32iconも兼ねることができるから。

986 :デフォルトの名無しさん:04/11/16 01:26:17
>>982
.NET 1.1 入れてあるけど、使ってるのは 1.0 って落ち?
例えば VC# 2002 とか。

987 :974:04/11/16 09:40:24
>>986
Visual Studio 2003 で C# なので .NET 1.1 かと思いますが、
.NET 1.1 を使用するには何か明示的な設定が必要でしょうか?

どうやっても FlatStyle.System で TextAlign が有効にならない…。

アドバイスよろしくお願いします。

988 :デフォルトの名無しさん:04/11/16 09:59:02
>>987
1.0で試して分かった事。
SlatStyle.SystemではTextAlignは垂直方向への配置以外は無視される。
1.0ではプロパティが完全に無視され、必ずContentAlignment.TopLeftとして扱われてしまっていたが、
そのバグを1.1で修正したのが>982の文章。

989 :974:04/11/16 10:08:52
>>988
ありがとうございます。私のところでは水平方向の配置は問題なく
行なえるのですが、垂直方向がどうしても上寄せ固定になってしまいます。

これは私の所の環境に問題があるのでしょうか?

みなさんの所では FlatStyle.System で垂直方向、水平方向共に
設定したプロパティが有効になりますか?

990 :デフォルトの名無しさん:04/11/16 10:17:37
>>989
わかりにくかったか。
左右への寄せは1.0では不可能だったがこれはバグだったので1.1で修正された。
上下への寄せは不可能なのが仕様。
ってこと。

AutoSizeを使うなりして適切なサイズを取得して親コントロールのClientSizeとでPositionを決定するとかすれば。

991 :974:04/11/16 10:39:00
>>990
そういう事ですか。Label コントロールを使用して垂直方向への
位置合わせを簡単に行なおうとしたら FlatStyle.System をやめるのが
簡単そうですね。

何か理由があって FlatStyle.System にしている気がするんですが、
どうして .System にしたのか思いだせない。。。

XP Style の関係だったような気もしないでもないですが、ラベルコントロール
で FlatStyle.System にすると、何がかわるんでしょう?

今、あらためて調べてみましたが FlatStyle.System にする事により
ラベルコントロールがどのように変化するのかが見つけられませんでした。

何度もすみませんが、このあたり情報があれば教えて頂けないでしょうか?

992 :デフォルトの名無しさん:04/11/16 12:02:34
初心者です。
#include <stdio.h>
#define K 10
main(void)
{
int score[K];
int i, j;
int temp;
for(i = 1; i <= K ; i++){
printf("a%d = ", i );
scanf("%d", &score[i] );
}
for (i = 1; i <= K ; i++){
for (j = i + 1; j <= K; j++){
if (score[i] > score[j]){
temp = score[i];
score[i] = score[j];
score[j] = temp;
} } }
下から5行目から最後のtempまでの意味はどういうことなのですか?
よろしくおねがいします。

993 :デフォルトの名無しさん:04/11/16 12:31:33
>>992
C#関係ないし…

っつーかC#のコードじゃないじゃん

994 :デフォルトの名無しさん:04/11/16 12:31:49
>>992
スレ違い。ここ行け。
http://pc5.2ch.net/test/read.cgi/tech/1099212476/l50

995 :デフォルトの名無しさん:04/11/16 12:32:09
>>992
それはC#じゃなくてC言語なんだけどな・・・

俗に言うバブルソート(交換方)のプログラム。

int score[K];

で0〜9の10個の配列を作成(#define K 10 の為Kは10と置き換えられる)

そして、最初のforでその配列のそれぞれにscanfを用いて、ユーザに数値を入力させる。
その後、その配列を比べて、小さい順に値を並べ替えている。

ちなみに、このプログラムはバグがある。
配列は0〜9の10個だが、最初のユーザ入力させる部分で、
カウンタが1から始まり、さらに i <= K で10まで処理させるようになっているが、
実際には配列の添え字は9までしかないのでエラーとなる。

996 :994:04/11/16 12:33:04
>>992
ちなみに答えはコレ
http://dictionary.goo.ne.jp/search.php?kind=ej&MT=temporary

997 :デフォルトの名無しさん:04/11/16 12:33:49
誘導
http://pc5.2ch.net/test/read.cgi/tech/1100240847/l50

998 :デフォルトの名無しさん:04/11/16 12:35:06
998

999 :デフォルトの名無しさん:04/11/16 12:35:34
アフォ


1000 :デフォルトの名無しさん:04/11/16 12:37:02
↑馬鹿

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

255 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)