Scheme の .NET 対応マダー?
4 :
デフォルトの名無しさん :04/09/25 21:35:03
4様参上(゚Д゚≡゚д゚)
独自のメッセージを送るとき、WM_など既存の物と 値が衝突しないようにするにはどの範囲を使えいいですか。
ユーザ
VSのデザイナでフォーム作るとき、複数のフォームで共通のコネクション・コントロール使う方法無いかな。 フォームごとにコントロール用意しなきゃならないのは何か無駄というか、後々問題起こりそうな気がする・・・。
WM_USERよりもWM_APP
MVPになりてぇなぁ・・・
>>8 WM_APPで検索したら、それ以降の値はシステムのIDと衝突しないことが
保証されてるみたいですね。ありがとうございました。
12 :
デフォルトの名無しさん :04/09/26 21:28:47
そんなこと言わないで。 これは男の性だから。
おっとっとすれ違いすまん。
DataGridって、カラムごとにIMEのモード切替とか、KeyPressイベントの処理とかはムリポ?
15 :
デフォルトの名無しさん :04/09/28 10:12:12
スクロールバーはオーナドローできないんですか?
SQLServerに画像を格納するにはどうしたらいいんでしょうか? すでに格納してある画像を取り出してImage型に変換する方法は分かったんですが・・・。
前スレの988なんだけどさ 実際今一番人気の言語ってなんですか? C++とかが人気多そうだからやりたいような気もするけど 店ではもう売ってないんですよね? まあ、おれなんかは、趣味でたーんまにソフト作って 自己満足してるだけの奴なんで言語は何でもいいんだけど しょぼいソフトでもいざ配布するとなると C++なんかがいいなって思ったりする プログラムなんてなんも知らない人からすれば Frameworkを入れなければいけないってだけで面倒だもんね そりゃ、それを入れてまでやりたいような魅力あるソフト作れればいんだけどさ 今後、Frameworkなんかがアプリやゲームなどで取り入れられてて、 知らないうちにFrameworkがインスコされてるって状況なればいいんだけど どうなんだろ?
>>17 Windows 2003 以降では標準で .NET Framework がついてきます
他の突っこみどころにはスルー
>>18 w2003?そんなの出るんだ?
てか、出てるの?
XPは標準?
とにかく、標準でついてるってのはいいね
もうすこし.NETしてみるか
アホが二人
VB6.0(VB.NETではありません)のソースをC#に変換するツールを探しています。 市販ソフトでもフリーウエアでも、どちらでも構いません。 情報をお持ちの方がいらっしゃいましたら、ご教授ねがえませんでょうか? よろしくお願いいたします。
>>21 VS.NETにそのまんまの機能があるんだが
>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 変換するツールがあるのかどうかは知らんけど、ラクしようとして
そんなの使っても気付かぬところで仕様違いが出てハマったり
すると却って多くロスるよ。
>>17 一応マジレスすると今も店にはVCでもBCBとかのC++コンパイラは売っている。
>>17 WindowsXP SP2導入以降は、たしか.NETframeworkが同梱のハズ
違ってたらゴメソ
>>28 SP1にも.NET Framework入っていると思う。
この間の正月に買ったPCに最初っから入っていたし。
31 :
デフォルトの名無しさん :04/09/29 20:19:31
>>28 >>30 入ってないよ。最近自作APのテスト環境として1台セットアップしたからわかる。
メーカー製には後付けで入ってることが多いんだよ。
ウインドウズアップデートで勝手に入っていくのじゃないのか?
入らなかったと思うけど(記憶違いかも知れない)。 もちろん .NET Framework 1.1 入れてれば 1.1 SP1 は入ってくる。
35 :
デフォルトの名無しさん :04/09/29 21:39:28
OEのアドレス帳をインポートするにはどうしたらいいですか? Beckyみたいにしたいんですけど。
ファイルを開いて読み込むだけ。
37 :
デフォルトの名無しさん :04/09/30 00:11:09
ど素人ですが質問させてください。 SQLServerから読んだデータを表示した後 DBのコネクションを閉じないで終了するコンソールアプリを 1秒ごとに連続して動かすと30秒後ぐらいにパフォーマンスが極端に悪くなります。 試しにコネクションを閉じてやると、パフォーマンスが悪くなる事はありませんでした。 ガベージコレクションはプログラムが終了する時にメモリに残った オブジェクトを自動的に開放してくれると聞いたのに なぜコネクションを閉じるコードを書く必要があるのですか?
>>37 GCだとオブジェクトは解放するがリソース(この場合はSQLServerのコネクションか)は解放しないからじゃないかと。
ファイルをオープンしたらクローズしなきゃならんのと同じ理屈だと思われ。多分。
>>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;
}
}
宜しくお願いします。
>>39 なるほど、そこには全然頭が回っていませんでした...orz
これから確認してみます。
SQLserverがわの接続数なども関係してると思われ
>>40 まず、DataReader使うのなら、読み込み終わったら、すぐにCloseメソッドを実行する必要あり。
DataReaderに関連付けされているコネクションは、Closeメソッドが実行されるまで
ビジー状態になってて、閉じる以外の操作ができない。
あと、SqlConnectionを使っているので、接続プーリングが働いている。
Closeメソッド(またはDisposeメソッド)で接続を開放しないと、接続プールに
戻らない。ADO.NETのデータプロバイダでは、閉じない接続はデフォルトで
60秒間は再利用されない。
>>43 閉じない接続はデフォルトで60秒間は再利用されない。
これはじめて聞いた、どこかに記述があるなら教えて欲しい。
しかし、プロセスが終了してもってのは考えにくい。
ような気がするけど実装によってはそうなのかもしれない…
なんでProcessってDiagnosticsなんですか???
>>44 プログラミング ADO.NET by MS Press
コンボボックスが開かれているかどうか (コンボボックスのリストが表示されている状態か?)を 調べる方法はありませんか? またコンボボックスのリストをプログラムから開く事はできますか? 方法があれば教えてください。
50 :
デフォルトの名無しさん :04/09/30 10:45:39
イベント……? 48は開いた時に通知がほしいんではなくて、開いてるかどうかを静的に調べたいだけじゃないのか?
>>48 コンボボックスが閉じている状態をビットマップで保存して、開いているか調べたいときに画面のハードコピーをとって、保存してある画像を比較しろ
>>51 そんならDroppedDownプロパティやね。
54 :
デフォルトの名無しさん :04/09/30 11:42:43
コンボボックスのドロップダウンなんですが、 ▼ボタンを押してもドロップダウンを表示させないようにすることは出来ますか? ネイティブだとコンボボックスの高さを小さくしておくことで可能なんですが、 。NETだと強制的に空白一行分のドロップダウンが表示されてしまいます。 OnDropDownやcomboBox_DropDown内で DroppedDown = false; とかしてみましたがダメでした。 方法をご存知でしたら教えてください。
>>54 普通に考えたんだけど、コンボボックスのドロップダウンを表示されたくないのに、
コンボボックス使う必要あるのか?
それとも、何か特別な理由で何かの処理のタイミングで
一時的にコンボボックスの値が変更されないようにしたいだけなのか・・・
>>55 手軽に入力内容を絞りたいとか、補完を利用したいとか?
>>54 そこまでやるんだったら、独自のコントロールを作成した方が早いと思う
>>55-57 ありがとうございます。
コンボボックスを使う理由は、ビジュアルスタイルが適用できることです。
独自のコントロールも作ったんですが、
期待の動作はもちろん実現できるものの、
ControlPaintで書いた外観が、ビジュアルスタイルが適用された回りのコントロールから
浮いて見えてしまうんです。
ビジュアルスタイルも実装しる
60 :
デフォルトの名無しさん :04/09/30 15:35:35
プログラミングよく知らない者なんですけど、 同じ.NET対応言語のVB.NETと比較してC#の優れている部分と、 劣る部分はどういったものがあるでしょうか?
マネージドクラスでラップされているものはマネージド資源として見なしちゃってOKですか?
んなこたーない
>>62 難しいなぁ
Dispose(bool) の実装で、マネージ&アンマネージの区別が付かずに困っていたんですが……
……ま、趣味グラマだし今のところは適当でいいか
ぼくのオブジェクトに滝沢君の顔を実装するプログラムを作ってください
ハンドルされていない例外 : System.ArgumentException: 適応先のオブジェクトが不正です at ConsoleTest.Class1.Main(String[] args) in d:\visual studio projects\consoletest\class1.cs:line 17
>>60 .NET対応言語は色々あるけど、
VB.NET・・・VBプログラマを名前で騙して.NETに取り込む製品
C#.NET・・・Borlandから引き抜きまでしてJAVA潰し。MSの最重要製品
J#.NET・・・J++の失敗で開き直った製品。似非JAVA。恥の上塗り。
C++.NET・・・そのうちC#に移行してもらいたいのでVSに加えた。X-BOX御用達?
てな感じでしょうか?
C#の方がよりオブジェクトオリエンテッドなのかなって印象はありますが。
>>60 どこかに各言語を比較したホムペでもないしら
>>63 Disposable なものはどんどん Dispose しないとまずいイケースが多いと思うよ。
FileStream なんか gc で回収されるまで開きっぱなしだし、Bitmap は巨大メモリ占有し続けだし。
>>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
じゃあ、MSが@の方法を推奨する理由だけでも教えてくれませんか?
71 じゃないけど
>>72 using System.Web.UI.WebControls;
なんてのが入っていると、Aでは
System.Windows.Forms.TextBox
System.Web.UI.WebControls.TextBox
のどっちを使えばわからないから文句を言われる
ただそれだけ
新規クラスを作る場面がよくわかりません。 例えば、サブフォルダ内すべてのファイルをリストアップする場合 再帰処理が必要ですが、標準ではないので ソフトごとに毎回、メインクラスに再帰処理メソッドを書き込んでるのですが、 毎回書き込むのが面倒だから、別にクラスを作って流用しようって考えでいいのでしょうか? 私が作るのは小規模なプログラム大体3000行ぐらいなので 今までメインクラスのメソッドに毎回かいてたんですけど・・・・ 新たなクラスを作るのは面倒だから、見やすいからってアバウトな感じで新規クラスを作ってもいいのでしょうか?
まずはOOPの勉強からだな。
最後の1行意味わからないですね。訂正 新たなソフト作る度に同じ処理のメソッドを作るのは面倒だし、見やすいからってアバウトな感じで新規クラスを作ってもいいのでしょうか?
77 :
デフォルトの名無しさん :04/09/30 19:42:59
>>76 軽く本を読んでもいいけど、けっきょく勘所は慣れないとわからない。
最初は思いついたようにやってみたらいい。
使いづらいクラスができあがったら、間違ってたってこと。
向上心を持ちながらたくさんやってれば、どんどん見えるようになってくる。
>>75 どうも、GOTOのころの言語から頭が離れなくて・・^^;
>>77 なるほど、気楽にクラス作っていこうと思います。
どうもでした
というか、クラスを分けないと最近はまともなプログラミングも出来なくなる罠
80 :
デフォルトの名無しさん :04/09/30 23:11:24
pictureBoxかLabelで数枚の画像をパラパラマンガみたいに表示したいのですが うまくいかないのです どうしたらいいでしょうか?
数枚の画像を印刷してパラパラマンガを作る
すみません。自己解決しますた
パラパラ用画像をグラフィックソフトで横一列にづらっと並べて 描画時に画像をスライドさせながら表示することでできました
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に変換したい
BitConverterは駄目か。
>>90 こんなおいしいクラスがあったとは知らなかったぜ
>> 書き込んでくれたみなさま 早レスありがとうございます。こうしてみました。 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);
せっかくToUInt64が開始点を決められるようになってるのに、 一旦Arrayにコピーする意味があるのか? いやない。 8バイト固定だぜ。
>>93 ないっすね。へんなものみせてごめんなさい。
そもそもBitConverterにコピーしたhash渡してないし...
FolderBrowserDialogというクラスが2003から対応してるみたいなんですが、 現在C#std2002を持っているのですが、このクラスを使うにはどうすればいいのでしょうか?
>>96 ありがとうございます。ちょっと自分には難しそうですがなんとかやってみます
それとちょっと変なこと聞くのですが、c#2002の最新版有無チェックの機能ありますよね?
あれでバージョンアップしても、買った当初からずっと「これは最新版です」って言われるのですが
2002はバグ修正とかはなかったのでしょうか?
MSのサイトみても、2002用のバグ修正のファイルとかは見つからないし
たまに挙動が変な時があるので、バグ修正とかあればいいのですが
>>96 やっとこさできました
サイトみながらコピペしたり四苦八苦して、エラーばっかりでて
アセンブリ名やらクラスやらよくわからないこと言われて
DLLはstdじゃ作れないから、どうやったらいいか調べたり
結局エラー大量でもう無理かって思った時に
そういえば、あのサイトからDLした奴があるなぁ
それ開いてみようって思ったら
ソースだった・・・今までの苦労なんだったんだよって思いながら
コンパイルすると、DLL出力するファイルを直接利用できないとかわけの
わからないエラーがでて、まあそれでもやっとDLL作れて
やっと、安心して使えるフォルダ選択ダイアログが手に入りました
たぶん、教えてもらわないと、1ヶ月かかってもわからなかったと思います
たすかりました。ありがとう
DataGridの使い方がめちゃくちゃ難しーよー。 DataSet, DataTable などと絡めて、 GUIプロパティの動的な設定とか、 詳しく、かつ、わかりやすく説明している書籍とか、 ウェブサイトを教えていただけませんか? MSDNのサンプルソース見たり、解説を読んだりしても、 ちょっと理解しづらいです。
100 :
54 :04/10/01 23:21:38
報告ご苦労。下がってよいぞ。
Process.Start(アプリ名) だと、そのアプリのiniファイルなどを読み込まないでデフォルトで起動したりするのですが 通常ダブルクリックでアプリが起動するように起動させるにはどうすればいいでしょうか?
自己解決 System.Diagnostics.ProcessStartInfo pInfo = new System.Diagnostics.ProcessStartInfo(string filename); System.Diagnostics.Process process = System.Diagnostics.Process.Start(pInfo); これでいけました。なぜかわかりませんが
んーやっぱり、うまく起動するものとしないものがある マウスでアプリのアイコンをダブルクリックしたのと同じように起動できる方法教えて下さい
>>104 pInfo.WorkingDirectory = (exeのあるディレクトリパス)
でどう?
//Process.Start(string)と単にProcessStartInfo.FileName指定しただけのとで差はないはずなんだが……。
>>105 あ、なるほど!うまくいきました!
pinfo.workingdirectoryを設定してないと、規定フォルダが自作のアプリのディレクトリになるためだったんですね
ありがとうございます
>//Process.Start(string)と単にProcessStartInfo.FileName指定しただけのとで差はないはずなんだが……。
Process.Start(string)これだと、iniファイルを読みに行かなかったりするんです。
ソフトにもよるんでしょうけど・・・いまいちよくわかってません
>>102 単に、起動させようとしているアプリが糞なんじゃないんか
>106 Startの引数はふるパス?
>>107 どうなんでしょうか、私にはわかりかねます
一応起動はするけど、iniファイルのデータが取り込まれないんです
>>108 引数はフルパスですよ。起動はするけど、起動後
同じフォルダ内のexeファイルも読みに行ったりするので
規定ディレクトリ設定してないとだめだったみたいです
自分で適当なアプリ作って情報見てどう違うのか見るのが一番速い
コマンドライン引数とか、カレントディレクトリのことね
100%カレントディレクトリの問題だけどな
113 :
デフォルトの名無しさん :04/10/02 15:16:40
テキストファイルから FileStream.ReadByte() で取得した バイト配列を保持しています。 このバイト配列に格納されたファイルデータを Proccess.Start 等を使い指定アプリで開くためには、 一旦テンポラリとして物理ファイルに書き出す方法しか 私には思いつかないのですが、 今回、できればこのテンポラリを作りたくないのです。 バイト配列状態にしたファイルデータを、 物理的なファイル形式に書き出さずにアプリで開くことは可能なのでしょうか?
一部のアプリは STDIN から読み込めるのもある。 一部のアプリは ShellFolder に対応してるのもある。 一部のアプリは COM インターフェイスを提供しているのもある。 一部にアプリは DDE ・・・ってサイズ制限あったっけ?
共有メモリ使え C#でどうやるかは知らん 後は親プロセスの情報なんかで渡してリモーティングとかソケットとか
要は受け取るアプリに応じて渡せ、と。 どう受け取るかをまず作らないとな。
c#standerdで作ったソフトは配布してもいけますか?
119 :
デフォルトの名無しさん :04/10/02 18:51:55
C#にstanderdなどというバージョンは存在しない。
それ以前にstanderdなどという単語は存在しない。
>>118 も存在しないでいいや。
c#スタンダードで作ったソフトは配布してもいけますか?
121 :
デフォルトの名無しさん :04/10/02 19:14:00
pictureBoxの上にLabelを配置してpictureBoxの画像の上に LabelのTextを表示させるにはどうしたらいいでしょうか? pictureBoxは実行時に大きさを変更するのでpictureBoxのTextだと表示位置がずれてしまうので^^;
その場合PictureBoxのPaintイベントで文字を直接描画する方が良いような気がする。
毎回エラーが出るような処理を回避する場合 IFなどの条件文か、tryで回避するかどちらがいいんでしょうか? 例えば、リストビューに画像ファイルの一覧が表示されていて リストをクリックされたら選択されているファイルをpictureBoxで表示させるプログラムの場合 ユーザーがクリックして選択されてない状態でも画像表示させようとして 選択されてないので、当然エラーになります。 IF文で選択されていれば画像表示という風にするべきか tryでエラー回避して表示できる場合だけ表示するようにするべきか どちらがいいんでhそうか?
IFに一票
>>124 ifでチェック可能なものならifで。
例外処理はコストが大きめなので。
127 :
デフォルトの名無しさん :04/10/02 20:29:50
>>124 「tryで回避」などという表現が使われているので恐らく「例外」のことを言ってるんだろう。
「エラー」は誤解を招く恐れもあり、ここでは不適切。
まず、例外周りはパフォーマンス的にかなりのコストがかかることは知っておくべき。
つーかそれ以前に、
例外が発生することを「考慮した」コードを書くのは当然のこととして、
例外が発生することを「前提とした」コードは一般には好ましくない。
// 「前提とした」コード? // arrayの要素を0で埋める。 int i=0:; try { while (true) array[i++] = 0; } catch {}
tryで回避というのは、家庭教師に何とかしてもらおうということでは?
>>129 なるほど、そういうことだったか。
行間読めなくてすまんかった。 m(_ _)m
131 :
デフォルトの名無しさん :04/10/02 21:44:34
ん〜labelの親コントロールをpictureBoxにしてみたのですがlabelが表示されないんですよね
なんでなんでしょ?
>>122 Paintイベントはよくわからないのですorz
RADの弊害か・・・ お前がプログラム組むのは1年早ぇよ。
1年じゃ足りないだろ Paintイベントすら理解出来ないゴミは一生VBでも使ってろ
>114-117 やはりWin32の出番ですか。ありがとう。 中途半端なフレームワークだなぁ…。
いや受け取るアプリの問題だろ? 私は.NETアプリ間の通信はソケット使ってるし。
>>125 >>126 >>127 >例外が発生することを「前提とした」コードは一般には好ましくない。
なるほど。tryはできるだけ、使わなくてもいい設計にしないとだめなんですね
>>129 レスありがとうございます。
みなさん、コストがかかるって言われてますが、どういう意味なのでしょうか?
あと、実際tryを利用する場合というのはどういう場合なのでしょうか?
>>101 サンキュー、DataGridの件、情報ありがとう。
>>136 普通に複数の箇所から呼ばれるメソッドの例外処理とか、
try
{
// なにか処理
}
finally
{
// リソース開放とか絶対やらないといけない処理
}
とか。
>>138 まさに、
>>124 の処理とかはいろんなとこから呼び出されるんですよ
クリックイベントやkeydownイベントやその他
private void PicView()
{
//画像表示
}
でも、IF文でまず
んー、なかなか、使い道がよくわからないなぁ、もう少し勉強してきます
>>139 あー、いや「普通に複数の箇所から呼ばれるメソッドの例外処理」ってのは
try
{
複数の箇所から呼ばれるメソッド
}
catch(Exception)
{
}
みたいな処理の話で、そのメソッドの中の話じゃあない。
で、そのメソッドが呼び出し元に例外を投げるんじゃないなら俺もifのほうがいいと思うんだが。
まあ、ifですむんならifですますな、俺も。
>>140 あ、なるほどー
よくメソッド定義元内で、例外がでないようにする処理(if(File.Exists(filename))など)しようと思うけど
そうすると、例外が出て処理できなかったことをどうやって呼出元で取得するのかわからなくて
メソッド呼出元に例外がでないようにする処理していた。
すると、メソッド呼ぶ側全部に同じような処理させないとだめなので、
なんか無駄だなーって思ってた。
なるほど、理解した。ありがとう
いまVC#2003stdでDLLの作成をしています。 ※Stdなので、.csprojのsetting-outputTypeをLibraryに書き換える方法でやってます するとInterop.SHDocVwの参照がないとかいって怒られますが、 HDの中を検索してもそれらしきものが見つからないんです。 どうしたらいいんでしょうか?別の名前で存在しているんでしょうか? 自分で作るとか、M$から落とすとかそんな方法でやるんでしょうか? 教えてください。
>>143 > ※Stdなので、.csprojのsetting-outputTypeをLibraryに書き換える方法でやってます
これ意味わかんないんだけど、普通にクラスライブラリのプロジェクトを作ったらだめなの?
あと、Interop.SHDocVwはMicrosoft Web Browserをフォームに貼り付けると自動的に作成されて参照が追加される。
手動で作りたいならTlbimp.exeを使ってshdocvw.dllから作成しろ。
>>145 手元にインストールされてるVC#stdは普通にクラスライブラリプロジェクトを作成できるんだけど。
148 :
デフォルトの名無しさん :04/10/03 09:40:28
リッチテキストファイルから特定の文字のフォント情報を取得するにはどうしたらいいのですか?
>>146 あ、ごめん。「Windows Control Library」で作っているのです。都合上。
>>148 RichTextBoxでLoadFileして必要ならFindして
SelectionStartとSelectionLengthを適切に設定して
SelectionFontを取得する。
メソッドの作り方はわかるのですが、クラスのクラス?の作り方がわかりません MyClassという自作のクラスがあって MyClass.MyItemsというクラスを作りたい場合何を勉強すればいいでしょうか?
>>151 内部クラスのことか?
class MyClass {
class MyItem {
}
}
みたいに MyClass の中で MyItem を宣言すれば OK よん
152 完全に無視してたスマソ
>>152 MyClass
{
public MyClass()
{
}
public MyItem items=new MyItem();//これでいけました
public void Add()
{
}
}
こういう風にメソッドの外でクラスを作ることをなんていうんでしょうか?
何をしたいのかというと ListViewにPictureBoxの機能を連動するようなMyClassを作りたかったんですが PictureBox継承にしてしまうと、MyClassを使う場合、pictureboxの機能も使えてしまって ごちゃまぜでややこしいので、できればMyClass使う場合、pictureBoxを意識しないで 使えるような設計をしたかったんです MyClass.items //ListView MyClass.View //ListViewで選択されてるitemをPictureBoxに表示するメソッド
基礎から出直してきます どうもでした
俺、完全に無視されたヨカン
ここIDでないんですね・・
>>159 >>153 で書かれてることは
>>155 こういうことなのでしょうか?
このことを内部クラスっていうんですね
ありがとうございます
いやそれは違うから
フィールドについて調べてみよう。
そういうことか。何となく流れが混乱している意味がやっとわかった。
@ 『内部クラス』は『クラスの中で宣言されたクラス』を指す。
>>153 では MyItem がコレ
A 内部クラスといっても、普通のクラスとの本質的な違いは殆どない。
>>155 はスコープの問題。
B 『クラスの宣言』と『インスタンスの作成』は全く違うことに注意。
下手すると両方とも「クラスの作成」になっちまうからな
>>160 は、内部クラスを『メソッドの外で宣言する物と思い込んでいる』
ような気がする。(合ってなくはないが微妙にニュアンスが……)
C# ver2.0で追加される クラスのライブラリってどこか参照できるところがあれば 教えてください。
Itemって名前のプロパティ作って怒られたよ俺
>>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をインスタンス化
するのは無駄なことなのかも?
内部クラスとスコープこの二つの単語をもう少し勉強してきます
( д) ゜ ゜
その前にオブジェクト指向の基礎を勉強してこいよ
やっと、自分の考えていること表現する方法がわかった↓
こんな構造作りたいんだけど・・
MyClass.View.PictureBox
MyClass.ListView
>>166 のやり方でさっきからやってるけど
MyClassのメソッドでPictureBoxに画像表示してるけど
Form1に表示されない・・・・
んー、素直にPictureBoxを継承すればすんなり行くんだけど・・
pictureBoxの機能はすべてMyClass内で自動でやってほしんだよね・・
あ、違う MyClass.View.PictureBox これじゃなかった pictureBoxはMyClassのプロパティ?として使いたいんだった あーやっぱ出直してくる
まず、この話に内部クラス(ネストクラス)は一切関係ない。スコープも取りあえず関係ない。 アクセシビリティもおいとこう。 根本的にFormに表示できるのは、 ・祖先がControlであるクラスで、 ・FormのControlsプロパティに追加された上記クラスのインスタンス のみだ。 お前さんのMyClassとやらは条件を満たしてるのかね? //しかしフィールドも知らない人がよくこんなことしようと考えるなぁ。 //Hello worldから始める人って少なくなったのかなぁ。
>>171 PictureBoxを継承した自作クラスでFormに描画できるのはそういうことだったんですね
MyClassは継承もしてないし、Controlでもないと思います
Controlもよく意味がわかってないですが^^;
フィールドというのは、クラスの先頭で宣言するpublic int a;などのように
データを保存するだけのもののことをいうんですよね?
FormにListViewなどを配置すると、Formクラスの先頭に
private ListView listView1;
ていうのができますが、これはプロパティ?それともフィールド?
少しはその足りない頭で考えようとしてみろ お前の聞いてることはC#とか言語以前の問題だ
もうどうしようもねえな
すげぇ…。
RADの弊害だな しかしここまでひどいのは初めて見た
>おおまかな概要 「白い白馬」やっちまった。
180 :
デフォルトの名無しさん :04/10/04 00:47:13
>>178 ほんとそうだよな。
こういう書き込み見てると頭の頭痛が痛いよ。
>>180 なんかそのせりふ頭痛に寄生されてるみたいでキモイ
>>176 一応C#と独習C#は基礎的な部分は繰り返し呼んでたんだけど
勉強の仕方が悪いのか頭に入ってないですね
説明文自体が専門用語ばかりで・・
悪いのは勉強の仕方ではなくおまいの頭・・・
151は神だと思うw
頭に入ってなければそれは勉強したとは言わない 眺めただけという
プログラムできないとバカ扱いされるんですか? ちゃんと仕事して家族養ってるし年収も1000万もらってるんですけど ちょっと興味湧いたのでプログラム始めたんです プログラム初めてからまだ1週間です わたしはバカって言われたことありません
よかったな、初体験だ。
189 :
デフォルトの名無しさん :04/10/04 12:20:43
>187 馬鹿かどうかはわかりませんが、貴方のここで書いていることはほとんどが釣りと疑わせるようなものであることはまちがいないです. 私も釣られてるんでしょうか?
さすがに 187 は別人の釣りだと思う。
雰囲気悪くなるからそんなにいじめるなよ
すべてのプログラマの基底クラス、その名は151
>193 そんなもん継承させないでくれ...
いろいろ調べててわかったんですが 自作コントロールというのはいわゆるDLLのことだったんですね
なんかおかしいぞ。
相変わらず斜め上だな……。
198 :
151 :04/10/04 15:49:32
Controlクラスや、その派生クラスから継承して作ったGUIクラス = コントロールでよいのでしょうか。 それを /target:library オプションを付けてコンパイルしたものがDLLなんですね。 そこで質問なんですが、自動車免許(大型)の更新には、焼きそばは必要なんでしょうか?
まだ続ける気があるなら151はトリップつけろ、やりかたはクラスの継承と同じだ。
>>198 だから、コントロール=DLLじゃないって。
201 :
デフォルトの名無しさん :04/10/04 16:35:13
モッコリはにゃ〜ん
202 :
デフォルトの名無しさん :04/10/04 16:38:28
モッコリはにゃ〜ん
203 :
デフォルトの名無しさん :04/10/04 16:40:52
モッコリはにゃ〜ん
どういうクラスを作りたいのかというと ファイルが送られてきたら、リストビューにファイル名追加して さらに画像をピクチャーボックスに表示する こういう動作をするクラスを作りたいんです ListViewの機能にPictureBoxの機能を加えたようなもの このクラスの名前を例えばMyClassします MyClassにPictureBoxを継承してしまうと MyClassを利用する側はPicturBoxのメソッドにもアクセスできることになる 利用する側は直接PictureBoxのメソッドを利用することはないのに 利用できるようになるのは無駄というかわかりにくいですよね? 利用する側からはPictureBoxのメソッドの存在を隠蔽したいんです そこで、継承ではなくMyClassの内部にPictureBoxをオブジェクトとして扱おうとしたけど 今度は利用する側(Form1)に表示されない・・ そこで自作コントロールを作ればいいと考えたんですけど DLL作ってるんですけど、結構面倒ですね、うまく動作してるか デバッグしながら確認出来ないから 一旦DLL作って、それをフォームに貼り付けてやらないと チェックできないし・・ じゃあ、どうすればいいのか・・・コントロールを作りながらそのコントロールを 利用する側も一緒に作っていく方法がわからなくて困ってます
自作コントロールはDLL化しないと、Form1などで 利用するこはできないですよね? もしできるなら、この問題は解決するんですけど
>>205 Form1はDLLにしないとMainメソッドから呼べないとでも?
>>204 どっから送られてくるのか知らんがw
とりあえず、大量の画像のファイル名をListViewに羅列して、
マウスがListViewのアイテム(画像ファイル名)上に来たら、該当する画像を表示する。
こんな感じでいいの?
PictureBoxとListViewをぶっこんだユーザーコントロール作ればいいだけちゃうんかと
>>208 今画像の振り分けソフトを作っているんです
起動時にlistView1に画像のアドレスが一覧されていて
Form1上のMyClass.PictureBoxをクリックすると、listView1で選択されている画像ファイルが表示されるとともに
そのファイルがMyClass.ListViewに追加されるというものです
この処理をすべてForm1のメソッドでやればいいんですけど、MyClassを何十個も増やせるようにしたいので
そうなってくると非情に面倒な結果になります
あと、今適当にやってたら、プロジェクト右クリックでユーザーコントロール追加できるんですね
これで簡単にユーザーコントロールをグラフィカルに作ることができました。これ便利ですね
クラスの説明とかはいろいろあるのに、VC#自体の説明書がないので、まだ、このソフト使い慣れてない・・
で、ユーザーコントロールは簡単に作ることができて、フォームに追加することはできたんだけど
いざ、デガッグしようとすろと、ユーザーコントロールはビルドされていなければいけませんと出て
やっぱり、いちいちビルドしてからでないと使えないみたいです
グダグダになってまいりました。
おまえらもう151にはかまうなよ。 151は自分の分をわきまえろ。 んな高度なもん作る前にやることがあるだろ。
>>209 ええ、そうなんですよ。その作り方もわからなかったし、存在すら知らなかった・・
でもIDEでGUIで作れたので便利です。IDEの説明がもっと充実していればなぁ
本当にトリップつけて続けるとは思わなかった。 とりあえず151は入門書を256回読んでから首吊れ。
おまいらせっかくトリップ付けてくれたのは、あぼーん設定しろって意味なの分らんの? それはともかくとして、このスレもう4年も経つんだな。
216 :
デフォルトの名無しさん :04/10/04 17:44:07
最初のスレの
>>3 ↓
〆 ̄TTTTTTTTTTTTTTT7
| =|  ̄ ̄ ̄┴┴┴ ̄ ̄ ∨
|=|  ̄ ̄――― ̄ |
| =| 巛lllllllllllllllii ̄ ̄iillllllllllllll|
| =| ___llll lll___|
|=\人 o > / o フ<
|i⌒i| へ ̄ ̄, \ ̄ ̄ , .|
|| |.|  ̄ \ ̄ |
|| ‖ // ( | ヽ |
| \| イ_ ^  ̄ ̄ |
| ≡ ./| \王I王I王I王I王フ|
/| =/ | |
/ |/ 人 =≡≡= ノ
― ̄| \ へ _ イ
| \  ̄ ̄ ̄
トリップ月の151は187なのか?
MSDNにはコントロールを継承したクラスの内部のメソッドは作成元スレッド以外から呼んではいけない、 という風に載っていたのですが、この場合の内部というのはどこまでを指すのでしょうか? public class Form1 : Form { /*独自のメソッド*/ public void MyMethod() { } } この場合、MyMethod()は別スレッドから直接呼び出しても問題ないでしょうか?
>>218 それはクラスの外部のメソッドなのか?
違うだろ?
>>218 パブリックなら普通に読めるでしょ
てか、オブジェクトについてもうちょっと勉強したほうがいいよ
ごめんちょっとワラタw
>>218 あなたが実装しなかったメソッド(つまり .NET Framework に含まれているメソッド)。
自分が実装したメソッドなら、他スレッドから安全に呼べるかどうかは自分でわかるはず。
たとえばその void MyMethod() は何もしないので当然他スレッドからも安全に呼べる。
外野は黙ってろ
>>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イベントが発生するんですよね。 なんか勘違いしてるんでしょうか・・・
ん?おれは init->formの順で呼ばれたけど?
やってみたがちゃんと init→form→loadの順でメッセージボックスでるぞ
問題なくバージョンにかかわらずinit->formだな。
すいません。 Form()の中でMessageBox.Show("init",""); Init()の中でMessageBox.Show("form",""); を呼び出してました。 orz
ここはひどいインターネッツですね。
234 :
デフォルトの名無しさん :04/10/04 23:01:23
気を取り直して次の質問 ↓
c#stdを使っているのですが ユーザーコントロールを配置して デバッグしようとすると、ユーザーコントロールはビルドされていないとダメって コンパイル時に起こられるのですが、みなさんはどうしてますか? VS.NETproとかだとこういうエラーはでないんですか?
VS.NETだとソースにバグがあるとそのエラーで全部のコンパイルに失敗して ユーザコントロールはビルドされていませんというエラーが出るけど、 バグを潰すとそんなエラーはでなくなって普通に動くよ。
237 :
デフォルトの名無しさん :04/10/05 00:00:19
プラグインで機能を拡張可能なアプリを作りたいです。 Win32ではDLLすら扱ったことないのですが、 .netでプラグインを実現するにはどういった方法がありますか? 構想としては、 例えばある基底型をアプリ側で用意しておいて、 プラグイン側ではそれから派生して新しい型を作ってDLLにして、 アプリ側でそのDLLを動的に読み込んでその型のインスタンスを作る、 なんて流れが出来ればなあと思っているのですが、。、。
SetWndClassEX
239 :
デフォルトの名無しさん :04/10/05 00:07:34
すまん、Genericsでなんだが class hoge<T> { int num = 0; T typ; public hoge() { typ += num; } } で、Tがint以外の時はエラーになるもんなん? ボクシングが動くんだか動かないんだかよくわからんのですが・・・・。
>>235 はふらっとC#に私がカキコしたもので
誰かがこのスレにコピペしました。
でもレスしてくれたので返答します
>>236 ソース自体にはなんらバグはありません。
どうやら、C#stdではDLL化していないユーザーコントロールは
一緒にコンパイルしてくれない仕様みたいですね。
もともと、私のC#std2002はクラスライブラリ作れない仕様ですし・・・
結局現在は、Formでインスタンス化してユーザーコントロールを使ってます
また、ここで質問していたことすべて実現しました。
どうもお騒がせしました。そして結果的に荒れた原因も作ってしまい
申し訳ありませんでした。
>>239 なんでボクシングの話になるんだ?
operator + (T, int)
が定義されていないTだったら、どうやってもコンパイルできないだろ。
operator+=ではなくて?
>>242 はい、C++と勘違いしてる厨房がいますよ
245 :
237 :04/10/05 00:36:01
>>243 貴重なページの紹介、ありがとうございます。
さっき書いた構想を、そのまま実装すればいいんですね。
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) //実行時にここで複数の場所に追加できませんとエラーでます } } なぜエラーが出るのでしょうか?
×private Add(ListViewItem item) ○public Add(ListViewItem item) 書き間違え
>>246 ListViewItem は、複数の箇所(複数の ListViewや、一つのListViewに複数回)に追加できないからです。
Clone でコピーを作るか、新しく new で作るかして追加してください。
>>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へ ドラッグ&ドロップにてデータの受け渡しをするにはどうしたらいいのですか?
どのレベルでの解説を期待するのかな。 まずform2のListBoxのAllowDropをtrueにして、から?
253 :
デフォルトの名無しさん :04/10/05 15:22:08
>>252 の部分を改造してやってたのですが、よく見たらform2のListBoxのAllowDropをtrue
にしてなかったのが原因でした。
255 :
デフォルトの名無しさん :04/10/05 23:15:33
pictureBox上のLabelを透過するにはどうすればいいですか?
257 :
デフォルトの名無しさん :04/10/05 23:47:24
>>256 親コントロールをpictureBoxにしたのですがLabelが表示されないのですが
どうしてなんでしょ?
その後でフォームの方のControlsにAddされてるとか? 背景TransparentでTextが空とか? その周辺のコードも示さずにどうしてとか聞かれても。
259 :
デフォルトの名無しさん :04/10/06 00:26:34
pictureBoxのControlsにAddして背景TransparentでTextは空じゃないです LabelのTextだけpictureBoxの上に表示したいのです
>>259 "その後で"フォームの方のControlsにAddされてるとか?
その周辺のコードも示さずにどうしてとか聞かれても。
PictureBoxコンテナじゃないからAddしても表示されないと思うが。
>>261 > PictureBoxコンテナじゃないからAddしても表示されないと思うが。
実はGroupBoxなんかもControlから直接派生したクラスだったりするよ。
263 :
デフォルトの名無しさん :04/10/06 00:56:55
>>262 GetStyle( ControlStyles.ContainerControl ) が false を返すという意味。
>>264 へー、ControlStylesにこんなのまであったのか。知らなかった。
……でもLabelでもPictureBoxでもListViewでもControlsに入れた他の子コントロールを表示してくれるんだよなぁ。
>>263 その周辺のコードも示さずにどうしてとか聞かれても。
いい加減釣りか実のところ。
パネルの中にピクチャボックスとラベルを兄弟として入れるのが正しいと思う
もう描画したほうが早いんでないの?
>>266 > パネルの中にピクチャボックスとラベルを兄弟として入れるのが正しいと思う
それだと本末転倒。
Panelに対してLabelの背景の透過が適用されてしまう。
全スレで同じ事使用とした人がいたけど、成功したのだろうか。 私はC++でDLL作って、その中でSusiePluginよびだして、BITMAPデーターをC#に渡していた。 直接SusiePluginの関数をC#から呼ぶよりよほど簡単だった。
ユーザーコントロールに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); //ここでエラー この断片コードを実行すると一番下の所でオーバフローが起きてしまいます。 いろいろ分析してみたんですが無理だったので分かる方教えてください。
すみません。自己解決しますた
274 :
本物 272 :04/10/06 14:07:06
入力ミス?と思うのですが、まだ解決していません。
>>272 SetMeasurableCharacterRangesの引数のCharcterRange配列要素数は最大32個までって制限。
なんでかはしらん。
>>271 似たような状況で漏れは動的に menuItem を生成して、Hashtable に登録することにしました。
本筋は MenuItem の派生クラスを作って、Tag なり何なり追加することなんだろうけど。
自己解決したんだろ?
>>276 MenuItemを継承したクラスを作って
それをContextMenuに関連付ける方法がわかりません
ContextMenu.MyMenuItemと言う風に出すにはどうすればいいんですか?
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で何をしているのかも分からん。
283 :
デフォルトの名無しさん :04/10/07 04:12:00
VCとかのGUIスレッドをやりたいんだけど ワーカスレッドしかないの?
>284 貴方の言ってるGUIスレッドとワーカースレッドの違いを教えてくれ
↓のってDataGridViewの場合どう書けばいいですか? DataGrid1.CurrentCell = new DataGridCell(0, 0);
DataGridViewCellの派生クラスをnewしてやればいいんじゃない?
あ、誤読? SetCurrentCellAddressかSetSelectedCellCore辺り?
>285 UIスレッドの間違い。すまん。 メッセージループがあるかないかの違いです。 Formから立ち上げたスレッドをイベントドリブンにしたいんす。
>>289 そっちのスレッドでも Application.Run() すれば UI スレッドになるよ。
Win32 みたいにPostThreadMessageで簡単にインタースレッドで通知を行えないので、
Control 作って Invoke する and/or 自前でコマンドキュー用意したりする必要があるけど。
>290 ありがとう! 早速ためしてみる!
.net2003TheSpoke買ったらC#入ってたんですけど、 C#はMICROSOFTが提唱している言語でC#=即ちvisualC# ということで合ってますか?
>>292 C# = 言語
Visual C# = MS発のC#開発ツール(ほかにC# Builderとか。)
>>292 C++ = 言語
Visual C++ = MS発のC++開発ツール(ほかにC++ Builderとか。)
>>292 Java = 言語
JBuilder = Borland発のJava開発ツール(ほかにVisual J++とか。)
297 :
デフォルトの名無しさん :04/10/08 00:03:01
場違いかもしれませんが、教えてもらいたいことがあります。 C#のPOPUPMENUってVB.NETで言うと何に当たるか教えてください。
まずその「C#のPOPUPMENU」とやらの定義を聞こうか。
299 :
デフォルトの名無しさん :04/10/08 00:33:56
今簡単なランチャーを作ろうと思っています。 Bevelを右クリックした時にアイコンの登録削除 のポップアップメニューが出るようにしたいです。
.NET Frameworkのクラスライブラリは言語によらない。 VB.NETでもC#でも使うクラスは同じ。
301 :
デフォルトの名無しさん :04/10/08 00:46:36
夜遅くありがとうございます。
Bevelって何て読むの? 「ベベル」?
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(); ・・・・ の様にするしかないのかな・・・
AL[2] = new ArrayList();
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()};
っていう書き方をしたらわかる?
>>309 > AL=new ArrayList[5];
AL[0]のコンストラクタは何時呼ばれるんだ?
ArrayListにデフォルト・コンストラクタが無かったらどう書くんだ?
AL[0]とAL[1]のコンストラクタに違う引数を渡したい時は?
AL[2]にArrayListのサブクラスを入れたい時は?
ってもう居ないか
不確定プログレスバーってある?
君の質問が不確定
不確定テキストボックスってありますか。
>>314 Delphi 6 で XP の manifest を使うと
テキストボックスがかなり不確定になります
>>312 Windows の標準 UI には無いみたいだし、.NET にも無いみたい。
Explorer ではファイル飛ばしたりしてるよね。
不確定プログレスバー ナイト2000。
>>316 さんくす
SmtpMail.Send() がコールバックくれないからどうしようかと・・
やっぱ適当に動かしチャオ
メーラとか以外と適当だよね。
ある程度計算してると思うけど
100%でずっととまってたり。
不安定ツリービュー
おれのソフト見てくれ〜みたいなスレありませんか?
>>321 書いたC#のコードを晒したいなら
>>1 のソース置き場とか。
この板に直接書こうとすると連投規制とか行数制限にかかる予感。
バイナリについての評価を求めてるならこのスレでなくて別の適切なスレで
聞いたほうがいい答えが返るんじゃないの。
すみません。ControlCollectionついて教えてください。 ControlCollectionはIListを実装しているはずですが、 ControlCollection.Add(Control value)しかありません。 ControlCollection.Add(object value)の実装は どこへいったのでしょうか? また、このような実装は属性かなにかを使えばできるのでしょうか?
>>323 インターフェイスの明示的な実装というものだ。
インターフェイスのメンバを実装させる時に、
int IList.Add(object value) {...}
と言う風に宣言することで、「その型からみて」隠蔽されるようになる。
こうすることでシグネチャが同じインターフェイスメンバと独自メンバが共存できるようになるわけだ。
StringCollectionのインデクサなんかが一番利点を感じられるところだな。
隠蔽されているとは言え実装は強制されているわけで、ではどう呼ぶかというと
「そのインターフェイス型なら確かにそのインターフェイス用のメソッド・プロパティが実装されている」。
つまりIListとして=IListにキャストしてAddを呼ぶと上のメソッドが呼ばれることになる。
>>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だけでいけるかも。
自分はそうだった。
コマを進めるにあたって正確な時間を計りながらコマを進めて行きたいのです。
タイマをカウントするスッドレから 各オブジェクトにブロードキャストで通知してもらうとか
331 :
デフォルトの名無しさん :04/10/09 13:32:16
sprintfと同じような機能の関数はありますか?
無いです。
Orz..... month.ToString() + "月" + (ry とかだと醜いからsprintf欲しかったけど ないならいいです。CodeProjectとかに落ちているかなあ?
String.Format
>>334 なるほど……
# 日付を例に出すのは良くありませんでしたね
# datetime.ToString("HH時mm分"); とかできますし
337 :
デフォルトの名無しさん :04/10/09 18:40:57
FolderBrowserDialog.ShowDialog();を使ってフォルダ選択した後に、 もう一度 ShowDialog();した場合、ルートに戻ってしまいますが、 "C:\WINNT\system32"などを選んだ後に、もう一度ShowDialog();した場合、 そのディレクトリがすでに開いているようには使えないものでしょうか? TreeViewで似たようなものを自作するしかないのかな?
SelectedPathは{get; set;}だよ?
テラリウム急にやりたくなってインスコしてみた デフォルトの敵にも負けるorz
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' 型の式に適用することはできません。 って怒られます。。。どうしたらいいですか?
そりゃDataGridViewにインデクサがないからだろ。 セルの値ならDataGridViewCell.Valueでいいじゃないか。
普通は、 static void Main(){ Application.Run(new Form1()); } だけど、とあるソフトのコード見てたら、 static void Main(){ (new Form1()).ShowDialog(); } だった。これってApplication.Runと同じかな?なにかメリット・デメリットはある?
>>344 どうも。その検索方法をすっかり忘れてた
346 :
デフォルトの名無しさん :04/10/10 16:38:24
StreamReader.ReadLine でブロックしている際に、別スレッドから Close を行うと ReadLine は IOException とかを投げ返してくるのですか? それと関連して、TcpClient から作成した NetworkStream を StreamReader で包んで、 同じように ReadLine でブロックしている際に TcpClient.Close を行うと IOException (or SocketExceptopm) が投げられるのでしょうか? とりあえず、ブロックが解除されればいいのですが……
テラリウムやってるんだけどさ 虫がいないんだよ 誰か無視うpしてくれ
>>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 あたりで何とかなりそうなんですけど・・・
なんでそんなマニアックな
>>352 どうもありがとうございマンモス。
レジストリから取得することにします。
マンモス
マンモスマンはかっこよかったよね
356 :
デフォルトの名無しさん :04/10/11 08:08:51
そういや、いただきマンモスとかの、「〜マンモス」って、マンモスマンが元ネタなの?
>>338 {get; set;}でしたか、どうもありがとう。
このスレのびるの早いですね。
まんもすうれぴー?
まんかすうれぴー
そろそろマンモスのAAが出てくるかな
のりぴーのAAだろ?
マンモスマンのAAだろ? ていうか、スレ違いもいいとこ。
そんなのりぴーももう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 はなんで変更されないんでしょうか? 参照型変数をメソッドの引数にした場合、参照された値も変更されるんじゃないんですか?
>>365 されないです
変数は“単なる名前付け”だと割り切ってしまうとわかりやすいかも
「s」という名前がついた string オブジェクトを SetText の引数として渡す。
SetText では渡されたオブジェクトを target という名前で処理する。
"ヅラ"というオブジェクトを target という名前に指定する
ちなみに 『SetText(s);』を『SetText(ref s)』に、 『SetText(string target)』を『SetText(ref string target)』にするとできたりする
>>366 365じゃないが。
おお、すごくわかりやすい説明だ。
私だとつい参照がどうとか言い出したくなってしまう。
>>366 は、最終的に s という名前は "禿げ" のままである事に注目
……名前じゃなくて、あだ名の方が適切かも
あだ名だと複数の識別詞がついても違和感ないし
370 :
365 :04/10/12 00:01:18
なんか微妙に不安なんですが・・・SetText()の中では、
メモリに、s とは別に、target という名前の領域を新しく作って、そこに"ヅラ"を入れてると考えて良いですか?
(s と target が指しているメモリの領域は別なんでしょうか?)
>>368 個人的には、参照どうとか言われたほうが分かりやすいです orz
>>370 がんがって説明したのにOTL
メモリの話は正解です。
ちなみに、メモリ内に取った変数には“オブジェクトの場所(つまり参照)”が入っています。
オブジェクト本体は全然別のところにあるんですよ。
変数が作成されるメモリの領域は“スタック”、オブジェクト本体があるメモリ領域は“ヒープ”
ここらへんC,C++やってないとよくわからなくなるんだろうなぁ
ちなみにstringは参照型だが特殊で、変更不可と言うことになっている。 内容が変更される時には自動的に新しく領域が確保される、つまりnewされてるわけだな。
アドレス1丁目の”s”マンションに人気者の”禿げ”の人が住んでいます アドレス2丁目の”target”マンションに嫌われ者の”ヅラ”の人が住んでいます ある日、禿さんがヅラさんに呼ばれtargetマンションに遊びに行きました すると、ヅラさんはおまえも「ヅラかぶれよ!」と言われ禿げさんはヅラにされてしまいました しかし、その禿げさんは影武者でホンモノはsマンションでテレビを見てたとさ。
377 :
デフォルトの名無しさん :04/10/12 00:31:08
>>365 >target = "ヅラ";
targetの参照先が新しいstringオブジェクト"ヅラ"に変わっただけ。
>>376 明示的に new しなくても勝手に new されるってことじゃ?>参照型だが特殊
>>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 いやアドレス(のコピー)を渡してるよ? それが構造体じゃない限り。
>>382 アドレスのコピーなんてありえねーだろ。バカ?
アドレスを保存してるレジスタセグメントのアドレスを渡すならわかるけどな
アセンブリもわかんねー糞はひっこんでろ
のりぴー33歳かよ・・・
>>383 藻前らBASICで文字列扱う時にメモリのことなんかいちいち考えてたか?
ここはC#スレなんだからそんなこと知らなくて結構
使えればいいんだよ
みんながみんなお前みたいに志の低い人間じゃないんだよ(・∀・)
レジスタセグメントって一体なんだろ…
>>383 ええと、たとえばintを引数にすると、そのintの値をコピーして関数に渡す、と表現するよな。
アドレスと言いうのは実際には4バイトなり8バイトなりの整数値だよな。
そうすると、引数にクラスオブジェクトを渡すってことは
適当なオブジェクトhogeを指すアドレス値のコピーを渡すって表現でなにかまずいの?
DataGridViewで現在のセルを設定するのはどうしたらいいですか? ↓じゃダメみたいです。。。 DataGridView1.CurrentCell = new DataGridViewCell(0, 0);
>>390 ヘルプは持ってるよな?
DataGridViewのところにsetting the current cellって項目がしっかりあるぞ。
>>391 ごめんなさい、ヘルプ無いみたいです。
無料で配布してるC#2005Expressのベータ?でやってます。。。
プログラミング初めてです。。。
今ちょうどVS2005のMSDNを見つけたのでなんとかできました。
ありがとうございました。
いや、メニューバーのヘルプ(H)にインデックスとかないか? それをヘルプと言ったわけだが。 MSDNと言うと普通オンラインのを指すような気がするし。 私自身はSDKとDocument Explorerしか使ってないからあんまりはっきりとは言えないが。
>>395 そこを見てインストールしてみたら
ちゃんとヘルプが表示されるようになりました。
ありがとうございました〜!
397 :
デフォルトの名無しさん :04/10/12 17:55:04
すいません、、メッセージループって何ですか? マウスとかキーボードからのアクセスを感知するための、監視システムみたいなもんですか? 詳しく説明されてるサイトとかありましたら教えてください。
>>397 主にWindowsの仕組みの話なのでWindowsプログラミングのスレで
聞いたほうがより詳しい答えが期待できるのでそっち推奨。
400 :
デフォルトの名無しさん :04/10/12 18:04:02
マウスカーソルがフォーム上のある領域に入ったらアイコンが変わるって事を したいのですが、どの様にしたらいいのですか?
MouseMoveイベントで範囲を判定してアイコンを換える。 むしろどこで悩んでるの?
わかりますた。ていうかアスキーのデジタル用語辞典に載ってますた。 .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を既製品使わないで作ってみたい暇人なのですが、作れないと夜も眠れないので、ヒントをちょびーーっと教えてください。
ドラッグ中はフォームの上に乗って無くてもマウス移動追跡できるっけ? 出来る前提で。 ドラッグ開始 ↓ 枠描画 ↓ ドラッグ終了 ↓ 元のフォームの上だったら何もしない。 別のフォームの上だったらタブ移動。 何も無いところだったら新しいフォーム作る。
>ドラッグ中はフォームの上に乗って無くてもマウス移動追跡できるっけ? ドットネットでは、OnMouseDownで自動的にCaptureが呼ばれてるみたいやね。
>403 そのての奴だが、ドラッグスタート時に全体を覆う透明ウィンドウ作ってそこでどのウィンドウの上にあるか処理したほうがすっきりしない? いっこいっこのウィンドウでやると煩雑になる希ガス
System.Windows.Forms.ListViewにチェックボックスオプションをつけたものを使用しています。 デフォルトの動作ではアイテムのダブルクリックでこのチェックボックスのOn/Offが切り替わるのですが、これを抑制する方法についてご存知の方いませんか?
TabControlで右クリでもタブを切り替えることって可能ですか?できそうだけど何故か見つからない。 可能ならご教授ねがいたいす。
>>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;
}
}
}
>>409 できました。禿しくサンクス。
GetTabRectか…
配置されてるタブ本体の範囲かと思ってスルーしてたよ。
でも考えてみるとそれだったら全部のタブ同じ値になるから存在価値なくなるか。
C♯で定数の配列はどう作ればいいですか? いろいろやってみましたができませんでした。。。
>>411 ラッパークラスを1つ作ってインデクサに get のみを記述すれば OK
Array からの派生はできないから厳密には配列じゃないけど、記述上は配列っぽくなる。
>>413 twintail2 のコピペだった気がする(笑
個人的には極めて自然で自分でもこう書くだろうと思ったんだけど、 413の人はどんなコードを思いつくんだろう?
他の.NETコントロールと比べると、美しくないくらいだと思うがな。 tabControl1.Tabs[i].Rectangle.Contains(e.X, e.Y) のほうが、統一感がある。 まぁ、Rectangle以外に何のプロパティがあるのかと言われると困るが。
>>416 tabControl1.TabPages[i].Bounds.Contains(e.X,e.Y)
>>417 これだとタブページ内の領域なのかタブの領域なのか分かんない罠
おそらくタブ部分を管理しているのは TabPage じゃ無くて TabControl だから、俺は
tabControl1.GetTabRect(i).Contains(e.X, e.Y)
が今まで上がったコードの中で一番わかりやすい。
わざわざTabControl.Tabクラス(とそのコレクション)作ってそれで管理、なんてのは冗長に過ぎると思うなぁ。 そうするとTabクラスとTabPageクラスにも直接的な関係を持たせたくなってしまうし。
Enumで各要素に16進数など割り当てることが可能ですよね。 public enum Week { Sun = 0x01, Mon = 0x02, Tue = 0x04, ・・・ のような感じで。 そこで、 Week days = Week.Mon | Week.Thu | Week.Wed; のように使われていた時、daysにMonのフラグが立っているか チェックしたい時に、スマートな記述方法はどうするのでしょうか?
if ((days & Week.Mon) != 0) {...} なにが「そこで」なんだろう?
なるほど。有難うございました。お手数おかけしました。 首吊ってきます・・・orz
>>421 この場合のdaysはint?
できればWeekと関係のある型にしたいと思ったけど適当なのが見つけられない。
>>421 そこで……って『@』と同じ意味だと思ったけど、違うのか?
>>425 いや、なんか16進数で指定したら特別な処理が必要なんじゃないかと疑っているように読めたから。
本質的に1段落目そのものが不要なわけで。
>>424 例で示されているとおりWeek型だけど?
デフォルトではintだわね。
>>426 勘違いしてました。感謝。
列挙型って定義されてない値(この場合0x03とか)も入るのね。
知りませんでした。
428 :
デフォルトの名無しさん :04/10/14 03:07:09
>>428 そうだな、ぶっちゃけ対象者のレベルがわからん、というかブレてる。
usingの説明をする辺り触れたこともないのか、
メソッドやらプロパティやらは理解してるのか、
継承(大胆に言い換えればオブジェクト指向)の理解はどの程度なのか。
メッセージループの解説なんか正直初心者には不要。おまじないと言っておく。
Mainメソッド内の書き換えのところも蛇足。
Windows.Formsネームスペースはイクナイ。System.Windows.Forms。たまたま頭の6文字が同じだっただけのこと。
あと、ほんとにさわりだけなのでツッコミどころも探しづらい。
STAThreadとMTAThreadの説明も入れようと考えてましたが、やめますた。orz そういや、本人の書いたソース見たこと無いや。頭痛。
教えてると「おまじない」はよく使うんだけど、いちいち気になるらしく、突っ込んで聞いてくる香具師がいる。 んで、教えると「ワケわからん」で、パニック状態になる香具師どうにかしてくれ。
432 :
デフォルトの名無しさん :04/10/14 10:59:02
ドラッグドロップでドロップされた位置を知るために Forms.DragEventArgs e のX,Y座標を取得してるのですが、値がウィンドウ座標ではなくディスプレイ座標になってしまいます。 この座標値をウィンドウ座標に変換するにはどうしたらいいのですか?
this.PointToClient(new Point(e.X, e.Y));
と開き直る奴も多い
>431 教え方が悪いことも自覚しよう
と開き直る奴も多い
うーんSystem.Windows.Forms.DataGridで 行ヘッダーの高さをマウスで変更できるのをやめさせたいのだが 方法がつかめない。 さんざん検索したつもり。
い~から既存の奴つかうのやめて自作しろって そのほうが速い
>>439 どうやって自作するんですか?
PictureBox とかに罫線を描画しまくるんですか??
いい知恵があったら教えてちょ~だいマセ。
継承。 ロマサガ2やってりゃわかるが、最終皇帝を強くするために技覚えまくったろ。
わかんねぇよ、どのあたりのクラスから継承するんだよ。
>440 いえ、フォームに気合で描画です. ほかのコントロールも結局は同じことしています.
>>443 予想はしていたが、ちょっと気が遠くなるなー。
でも、いまどきのフラットスタイルのGUIならば、なんとかなりそうだ。
なんでフラットなGUIに回帰したのかね。 凸凹コントロールスタイルはCoolじゃないとBillが言ったのか? (となると漢字Talk6はvery Coolだ) ライブラリや言語の話じゃないな、スマン.....
Cool!! Cool!! Cool!!
447 :
デフォルトの名無しさん :04/10/14 23:26:14
>>445 Webの流行が原因。
Webサイトはたいていフラットなデザインだからな。
フラットのほうが(・∀・)イイ!! 立体ボタンはごてごてしすぎ
449 :
デフォルトの名無しさん :04/10/15 00:22:54
そこで3Dディスクトップですよ
まぁMicrosoftWindowsを一から作れってこった。 無能ども。
FormのなかにFormを表示するにはどうしたらいいですか?
452 :
デフォルトの名無しさん :04/10/15 02:35:42
>>453 ありがとうございました。
大変助かりました。
455 :
デフォルトの名無しさん :04/10/15 08:50:31
自分のクラスのコンストラクタを呼び出すとき、 this() と書いて呼び出せるの?
コンストラクタ初期化子としてはそうだな。 普通のメソッドからはコンストラクタは呼び出せないのでそういうのが必要な場合は その部分だけプライベートメソッドに切り出して呼び出す。
例えば、 class A { public A(String name) { // ここからAクラスのコンストラクタA(String, bool)を呼び出したい。 } public A(String name, bool flag) { } } ときどうすればいいのでしょうか? this(String, bool)としたらコンパイラに怒られました。
せっかくコンストラクタ初期化子って名前出したんだから調べようや。 ヘルプのコンストラクタのところ見るとかさ。
461 :
457 :04/10/15 14:41:55
>>460 すいません…。
ありがとうございました。
>>430 さんの言うSTAThreadとMTAThreadってどういう意味があるんでしょう?
STAThreadはどうやらCOMに関係あるらしい事までしかわからないし
MTAThreadに至っては検索してもヒット数が少なすぎて・・
両方ともCOMだ シングル・スレッド・アパートメントとマルチ・スレッド・アパートメントの略 関係ないがインド人はスレッドのことをトレッドトレッドといってたので最初は何いってるかわからんかった
>>463 >>464 ありがとうございます
むぅ。むつかしい
とりあえず
「マーシャリング」
「COM アパートメント」
から勉強して出直してきます
IEの「ファイルのダウンロード」ダイアログを使う方法を教えてください。 非IE版のJaneでも使用されているので、IEに限らず他のプログラムから利用できると思われます。
Janeならソースがあるジャン
469 :
デフォルトの名無しさん :04/10/17 18:50:40
openFileDialogで取得したFileNameを別のFileNameを取得したときも残しておくにはどうすればいいですか?
button1のプロパティを全部button2にコピーする簡単な方法ってありますか?
>>471 [DllImport("shdocvw.dll", CharSet=CharSet.Unicode)]
extern static int DoFileDownload(string lpszFile);
でできました。ありがとう。
イベントハンドラの変数を他のイベントハンドラから参照する方法ってあるの?
フィールドに代入しとけ。
タブ型のメモ帳みたいなの作ろうと思って 上書きするときにopenfiledialogで取得したfilenameを使って上書きしようと思ったんですけど たとえばA.txtを開いてB.txtを開いたあとA.txtを上書きしようと思ったらもちろんのことfilenameはB.txtのものであるわけです。 タブを作るときにopenfiledialogのfilenameで一応残してあるのですが・・・
>>478 そちらのスレッドの方がふさわしいですね。
スレ汚しすいませんでした。
ADO.NETの接続プールとかが、いまいち理解できないんだけど、 たとえば二つのフォームそれぞれにConnectionコントロールを作った場合、 それだけで二つ分の接続を使ってしまうってことになってしまうんでしょうか?
接続プールがどういうもんで何のためにあるのか勉強しよう。
スレ違い覚悟で質問。 enumの名前はどうつけたらいいか迷ってる。 例えば車の名前のenumを作るとしてCarとすると、 同名のクラスやプロパティが作れない。 Carsと複数形にすると、複数形のプロパティを作りたくなったときに困るし、 複数形にすることを好ましくない作法とする向きもある。 (Keys列挙体とかクラスライブラリにもあるんだけどね) じゃあCarName? 他のenumも全部〜Nameにしないと統一感がないし、 しかしそれでは冗長だし。 何かいい基準ってない?
>>482 CarType もしくは CarEnum でどうよ?
>>482 俺もCarTypeでいいと思う。
それはそうと複数形のenumはFlagsAttributeがついてないか。
>>483 ガイドライン曰くEnumサフィックスつけるなとさ。
そもそも車の名前で列挙体ってのもどうだろう? と思ってしまったりしなく無くもないこともない。 まあ、私なら普通にCarNameだろうなぁ。 でも例えばブルーバードかグロリアか、ならCarTypeにするだろうし。 あと複数形かどうかは基本的にFlags属性つきかどうかで分けてるよ>.NET Framework
>>483-485 レスありがとう。
プレ(サ)フィックスでEnumはやめれ、というのは何かで見た気がする。
クラスライブラリの単/複数はそういう違いがちゃんとあったのか。
けして恣意的なものじゃなかったんだ。(日本語と違って
その辺りは明確に区別する言葉が発祥だしね)
すごく参考になりました。
サフィックスにName、Typeを適所で使い分けてみる。
string data = "abc゚"; int index = data.IndexOf("c"); これだとindexは2のはずなんですが、なぜか-1になってしまいます。 ゚ ←が検索文字列の右に含まれていると正しく検索できないのですが、 なんででしょうか。。
>>487 Unicodeの仕様について余り詳しくないからはっきりとはいえないけど、
濁点・半濁点は直前の文字と合わさって一つの文字として判定されて居るんだと思う。
ポはホと゚の二文字じゃなくてあくまでポと言う文字として考える、と。
文字の情報として、分けたら意味を失うわけで。
ちなみに全角の濁点半濁点も同じだった。
で、それとは別にstringはcharの配列でもあるわけで、abc゚は4つのcharを持っているから
Lengthは4を返す、と。
そういうことではないかな。
EnCar
>>488 なるほど!そういうことだったのですか。
仕方ないので一文字ずつ判定して検索することで解決しました。
わかりやすい説明サンクスでした。
491 :
デフォルトの名無しさん :04/10/20 01:34:07
しょうもない質問なのですが、 エクセルより劣る見た目よさげなグラフ機能を自作しようと、休日がんばっているのですが、 GDI+とC#+DirectX9どちらで実装するほうが良いのでしょうか。
何を以て「良い」のかわからないので答えようがありません。
3DでぐるぐるしたいのならDirectX9と適当に答えてみる。
Windows フォームのPanelの上にフォームを this.formHoge.TopLevel = false; this.panel1.Controls.Add(this.formHoge); とかで貼り付けています。 this.panel1.AutoScroll をTrueにしてスクロールバーを自動表示させたいのですが formHoge.Sizeの高さを5000とかすると デスクトップウィンドウのサイズ制限にひっかっかってしまい タスクバーをのぞいたデスクトップウィンドウのサイズまでしか拡張できません。 どのようにすればこの制限を解除できますが?
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 まだ使いたいんならまずいんじゃないの?
GotDotNetJapanとAtmark(@)ITの掲示板は、 どっちが雰囲気がいい?
自分で確認すれ。
500 :
デフォルトの名無しさん :04/10/20 21:34:22
どっちかといえばGotDotNetJapanのほうか まあ好き好きでは・・
501 :
デフォルトの名無しさん :04/10/20 23:21:23
Visual C#.NET Standard2003だけを持っているんですが ユーザコントロールのテンプレートが出ないんですけど なんか方法ありますか?
MSN Messenger の「Windows へのログオン時に Messenger を実行する」みたいに 自動でexeを実行するにはどうしたらいいんですか?
>>502 Windows サービス アプリケーション
でヘルプを調べてみそ。
>>502 ヘルプくらい読もうね。
Windows.UserLogon += new EventHandler(this.Execute);
>504 それちょっと感動した。
506 :
デフォルトの名無しさん :04/10/21 08:01:07
ニートは歴史に名を残すのか?
508 :
デフォルトの名無しさん :04/10/21 08:42:05
いくら一部をいじっているとはいえ、現金を写して公開するのは違法。
スキャンするだけで確かタイーホだったよな?
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をマスターしてるとはおもえん。
>>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が隣のページに切り替わった というイベントを取得するにはどうすればいいのですか?
>>514 わかったわかったー♪
これで先に進めるよ〜♪お兄ちゅんありがとう☆
517 :
デフォルトの名無しさん :04/10/21 15:10:04
>>515 TabControl.SelectedIndexChangedイベント。
隣のページって限定なら、あらかじめ現在のページのインデックスを記録しておいて、
切り替えイベントが起きてから、移動前後のIndexを比べて、隣かどうか判定。
new Form().Show(); こんな書き方出来ますか?
>>518 出来る。当たり前。
ていうか、どう見ても釣りだよな・・・orz
520 :
デフォルトの名無しさん :04/10/21 17:01:06
ワラタ
521 :
デフォルトの名無しさん :04/10/21 17:08:47
>>518 やってみれば分かるだろ。
ていうか、どう見ても釣りだよな・・・orz
ハゲタ
なんだ、かっこなしでできるのか。 俺はいつも (new Form()).Show()ってやってたぜ。 思い込みは良くないな。 これでソースの可読性が少し上がった。
>>524 カッコを外したって可読性の面ではよろしくない書き方だと思うぞ。
string s = new StreamReader("filename",Encoding.Default).ReadToEnd();
こんなん普通にやるから、
>>518 がなんで疑問に思うのかさえ理解不能。
バケラッタ
528 :
デフォルトの名無しさん :04/10/21 20:30:56
ひとつのプロセスがopenできるsocketの最多数を を教えて下さい。 「ソケット && WSAEMFILE」とかでgoogったけど 解らんかった。 擦違い・簡便!
それぐらい自分でやってみるがよろし。 試せばいいことをやらない人が多すぎ。
530 :
デフォルトの名無しさん :04/10/21 20:38:13
そ、そ、そんなぁ〜 ごもっともではございますが・・・ しかし、レス、はやっ
Exceptionとかデバッガ上でウオッチウィンドウにMessageプロパティの値が表示されていますが、 自作のクラスでそれと同じように任意の値を表示させるにはどうしたらいいのでしょうか?
532 :
デフォルトの名無しさん :04/10/22 02:09:38
市販のアプリで、.NETで書かれてるものってあるんでしょうか? やはり、まだ市販のものはネイティブC++が主流なんでしょうか?
>>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 形式では深いタグは対応できないのでしょうか? 教えて頂けると大変助かります。 どうか宜しくお願いいたします。
あとは速度が速ければ言うことないんだが。。。orz
>>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が返って来ちゃうぞ。
>>536 Javaよりは速いと思うが・・・もっともVMのメーカーにも夜が。
.NET製市販アプリがでるのは何時頃なんですか?
まずMSが.NETでOfficeを出してお手本を示して欲しいな。 3年ぐらい先かな。
longhornが出てからの話。
そもそもVS.NETからして.NETベースだな。 //完全に.NETってわけではないが。
VS.NETのもっさり具合は勘弁してほしい。
書籍やサイトの検索でも原因が分からず どなたかお助けください。 あまりに初歩的な質問で凹み気味(´・ω・`) コンソールアプリケーションのソリューションを作成し 以下のソースを実行すると日本語が化けます。 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
英語版を使ってるとか? >VC#2005 //いやそれで文字化けるとも思えないが……
以前は英語版を使っていたのですが、同様の現象が起きていました。 (現在は手元にないので確認できません) その後、日本語版が公開されたので現在は 日本語版を使っていますが現象は同じです。 やっぱりみんなは化けないんだ…(つдT)
csc.exeでコンパイルしたのをコマンドプロンプトで実行しても化けるの? VC#でビルドしたのをコマンドプロンプトで実行したら?
うちでは問題ない(OSはXPだけど) ていうか、OSから再インスコしてみたら?
>>550 > csc.exeでコンパイルしたのをコマンドプロンプトで実行しても化けるの?
すみません。それを未だ試していませんでした…。
実行してみると…日本語がでました!!
となると VisualStudio 側の設定が何かまずい・・・?
設定も見ては見たのですがまだ分からず(´・ω・`)
教えてクンで恐縮なのですが心当たりがありましたら助けてくださいませ。
自己レスです。 以下の設定を変更したところ日本語が表示されました。 オプション→デバッグ→全般→コンソール Window を使用する。 初期設定:チェックあり 変更後 :チェックなし IDE のコンソールウィンドウが日本語に対応していない…? それともこれって常識・・・? ひとまず解決です。 ありがとうございました!
554 :
デフォルトの名無しさん :04/10/22 21:21:53
>>533 「一般人が使うアプリはまだC++」ということは、
一般人が使わえないような高いアプリでは、結構.NETになってきてるんでしょうか・・・?
くまー
一般人が使えないような高いアプリではまだC
>>554 企業向けシステムなんかでは結構使われてきてる。
うちもやってる部署あるし。
>>557 まだまだなのか・・・
なんかよく雑誌では、もう世間は.NET一色ですよ、なんて記事も見かけるんだが
Longhornが出るまでは無理だろ
>>537 ありがとうございました!
XmlNode使ったらできました!
本当にありがとうございます!
>>554 個人のフリーソフトとか、Webアプリならいくつかありますねー。
ASPでやる新規事業なら大抵ASP.NETでないかな。 既存のを.NETで置き換えるのは難しいだろう。
むしろ今から無印ASP始めるところなんか無いだろ
WEBサイトでaspxって拡張子でCGIをやってるところって 全部 IIS6とASP+ の構成なの? それなら結構サーバーサイドでは普及してると思うが。
>>564 ASPにせよPHPにせよJSPにせよCGIではない、勉強しなおしてこい。
あと数は少ないがApacheで動いてるのもある。まあ9.5割近くはIISだろうけどな。
>>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; ←ここを実現したい (下記省略) よろしくお願いいたします 長々とすみません・・・・・
すいません。質問させてください。 メソッドから配列を返せますよね? public int[] foo() { int[] i = new int[10]; // ... return i; } みたいな感じで。 でも、本や.NET Frameworkのクラスライブラリを見てる限りでは、 上記の書き方が出来るとか、実際に書いてるコードを見たことがありません。 何故ですか?
>>568 わざわざ出来ると明言する必要がないくらい当たり前に出来るから。
>>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なんかに保持ってないとダメかも。
C#(に限ってはいないが)のフリーのコンポーネントが揃っているサイトを ご存知ないでしょうか? 特にエディタコンポーネントがあれば・・・ Delphiに対してあまりに見劣りがするのですが・・・
572 :
デフォルトの名無しさん :04/10/24 17:38:04
574 :
デフォルトの名無しさん :04/10/24 18:31:47
.NET の必要性が分からない。 MS に踊らされているだけでは?
エンドユーザからすれば必要性が分からないかもね。 まあここはC#スレであって.NETスレではないので該当スレでしゃべれ。
すんません。スレかえます。
>574 オレ個人で言えば .NETだから使ってるのではなく、C#だから使ってるのだ。 C#の強力な言語仕様、豊富なライブラリ、コンポーネント利用でのGUI設計の容易さ、 などが選択の理由である。 仮に処理系がネイティブであっても別に何の問題もなかった。 (というより今のオレにはその方が良かったかも?) もちろんMSというバックがいることの将来性もあるが。
>>1 で 「.NETの話題はこちらでどうぞ。」とありますけど。。。
>>579 ライブラリとしての.NETに留めといたほうがいい。
.NETそのものについて扱うと変なのが湧く。
しかし……正直、.NET 抜きで C# を語る奴はおらんだろ
誰かDelphiのTEditorをC#に移植してくれませんかね・・・ ソースは一万行越えてるけど・・・ 優れたエディタコンポーネントがないと困る人が多いと思いますが・・・
禿同
TEditor重すぎで話にならん
>>583 Delphi 8 で作り直せば良いんじゃないか?
確かにネイティブなTEditorが重いのだから .NETに移植すると更に重いのでしょうが・・・ まだ誰も手をつけていない今の段階で移植すれば C#の歴史に名を残せますよ。 早い者勝ちだ!!! ・・・とは言うものの、フリーのコンポーネントを発表する人が 思ったより少ないのは何故なんだろう???
キミがめんどくさいことは俺もめんどくさいってことだな。
だって金になるし
エディタくらい簡単に作れるんじゃないかな。 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()で解放されたんじゃないんでしょうか?
>>592 Dispose()はbutton2が所有しているリソースを破棄するだけで、
button2オブジェクトそのものを破棄、あるいはnullセットするわけじゃないから。
594 :
592 :04/10/24 21:43:50
>>593 どうもありがとうございます。
button2 = null;
でnullセットしたのですが、nullにしてもフォームから消えてくれません。
もちろん、button2.Text="";なんてしたら、エラーが出ます。
Dispose()では消えるんですが、なんでnullセットだとフォームから消えないんでしょうか?
>>594 button2 = null;は参照を解除するだけで、
button2オブジェクトそのもの、あるいはbutton2が所有しているリソースを破棄するわけじゃないから。
597 :
デフォルトの名無しさん :04/10/24 22:54:08
nullセットしたのですが、nullにしても何故か
>>592 >>594 が消えてくれません。
今すぐ消えてください。
>>597 592 = null; も 594 = null; も参照を解除するだけで、
592 そのものを破棄するわけじゃないから
破棄しようとして、特攻仕掛けて殺人なんかするんじゃねーぞ
気に入らなければ透明あぼーん汁
>>570 ありがとうございました。
>RequiredFieldValidator fr =
>(RequiredFieldValidator)e.Item.FindControl"RequiredFieldValidator1");
>fr.Enabled = false; ←ここを実現したい
上記はUpdateCommandではできないことがわかりました。
ほんとうに助かりました。
ViewStateで保持して実現したいと思います。
本当に本当にありがとうございました。
TreeViewの継承コントロールを作って、フォームデザイナで貼り付けたんですが、 継承コントロールのほうであらかじめ登録してあるTreeNodeが重複して勝手に書き込まれてしまいます。 (FormのInitializeComponentメソッドで、this.treeViewEx1.Nodes.AddRange( ... )というふうに) どうにかなりませんでしょうか? 継承コントロールでなく、別の方法でもいいので何とかなりませんでしょうか?
>>600 あー、俺もそれあったなあ。
TreeViewじゃなくてComboBoxだけど、
フォームデザイナでコントロールを移動する度にItems.AddRangeを追加しやがって、
どんどんアイテムが増えていくんだよね、、、
602 :
600 :04/10/25 00:27:43
>>601 同志!!まさにそれです!
そのときはどうやって解決されましたか?
Nodes.Count==0の時に追加するようにしたらいいんでないの?
>>600-602 デザイン中に実行されては困る副作用があるコードは
DesignMode プロパティで分岐するのが基本。
605 :
600 :04/10/25 00:51:36
>>607 FormのDesignModeプロパティを見て、継承コントロール内のパブリックメソッドを実行して初期化処理を行うということですか?
>>608 ??
わざわざFormのプロパティを見る必要あんの?
コントロール自身のLoadイベントで自分のDesignModeプロパティみて分ければいいじゃん。
>>609 しかし、TreeViewコントロールにはLoadイベントがないようですが…
代わりはHandleCreatedイベントかな。
あぁ、そうなんだ。 UserControlしか見て無かったよ。
>>611 ありがとうございます、若干変な動作をしますが、とりあえずデザイナでの自動コード生成はなくなりました。
質問に答えてくださった方々、どうもありがとうございました。
俺もデザイン中にコードが実行されていると気づくのにしばらくかかったくち・・・
615 :
デフォルトの名無しさん :04/10/25 11:58:28
class Sort : IComparer { public int Compare( object x, object y ) { return x.s-y.s; } } これは数字のSortプログラムですが、これを文字の昇順プログラムに 直すにはどのようにしたらいいのですか?
さて昇順と言ってどういう並びなのかな。 Unicode順ならChar.CompareToを返せば済む話だが。 string.CompareToは全半角漢字順もなかなか考慮して返してくれるな。
string.CompareTo でファイル名をソートするプログラムができました。
618 :
デフォルトの名無しさん :04/10/25 20:52:11
619 :
デフォルトの名無しさん :04/10/25 21:17:59
>>618 無効な引数って、どんなソース書いてるのよ。
引数が無効なら修正するしかないでしょ。
SendToメソッドがないと無効な引数となるっぽいですね。。。 う〜ん、もしかして、 1.SendToメソッドでブロードキャスト 2.ブロードキャストを受信するホストはUdpClientなどで受信→返信パケット 3.ReceiveFromメソッドで返信パケットを受信 っとすることでIPチャットのメンバ確認のようなことができるのでしょうか?
C#(というか.netFrameworkか)で循環リングリストを実装するにはどうしたらいいんでしょ? Cでポインタ使って実装したことはあるんだけど、C#だとポインタが表に出てこないからよくわからん かといってUnsafeでやるのはどうかと思うし
ポインタの代わりにインスタンスの参照を持てば良いんじゃない? 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
を取得したいのですが、どうにもうまくいきません。何かヒントとなる要素や間違いがあればご指摘お願いします。
DataGridのHeaderのHeightはどうやったら調整できますか? #間違えてVBスレに書き込んじゃいました。
>>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のドキュソメントは重すぎて見る気もうせた。
628 :
デフォルトの名無しさん :04/10/26 03:20:07
Microsoft.IE System.Windows.Forms.HtmlHistory HtmlLocation HtmlNavigator HtmlPopup HtmlScreen HtmlWindow HtmlWindowCollection (´・∀・`)ヘー、こんなのあるんだ。
.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;の部分で、「ハンドルが無効です。」ってエラーが出ます。 ドキュメントのサンプルをそのまま実行しても、同じエラーが出ます。 どこがおかしいんでしょうか?
コマンドプロンプト開けてそこから実行してみな。
どうもありがとうございます。 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みたいなコントロールってありますか?
>>633 省略できるパラメータならMissing.Valueを指定してやればいい。
>>634 みたいとかいわれてもー。
636 :
デフォルトの名無しさん :04/10/26 20:37:35
VC#ではなぜ、Document-Viewを強制しなくなったのかな? こういったポトペタ環境は初心者にはいいかもしれんが Formになんでもかんでも書く人がいて嫌いだな そう思いません?
637 :
デフォルトの名無しさん :04/10/26 20:56:41
>>635 ありがとうございます。怒られなくなりました。(^^;)
>>636 私は自由度が高くてよいと思うが、
それがいやなら、企業なら社内規定で縛るべきかもね。
どうも勘違いしていたようで普通の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;
ImageList.ImageSize
>>641 DocumentView程使えないものもない。
じぶんでObserverつくる。
>>636 C#にDoc-Viewを実現するために特別なフレームワークが不要だったから。
何らかの抽象クラスを提供して面倒見てやらないといけないC++と違って、
C#はeventを使ってクラス階層に関係なくそういった構造を実現できる。
Doc-Viewがしたければ自分で勝手にDocクラスとViewクラスを作れば良いだけ。
>>641 もしかしていまどきMFCなんか使ってんの?
時代はWTLだよw
647 :
デフォルトの名無しさん :04/10/26 21:48:31
>>645 こういう人って趣味でプログラム書いているようなヲタでしょ?
協調性がないよねw
社会では`自分で勝手に'なんて通用しない
C#は、C+;から来た人、Delphiから来た人、Javaから来た人が色々いて それぞれ文化が違うから面白いね。 ポトペタでフォームにイベント処理一杯、というのはDelphiなら当然なんで (あまりいいものではないが) あまり違和感がない。 VisualC++から来るとdoc-viewの残像が消えないのかな? Javaから来ると、「きっちりクラスを設計しろよ!」ってことになるけど。
>>646 >時代はWTLだよw
それほんとう?実際の開発で使われてる?
>>647 クラスの設計すらさせてもらえない最下層使い捨てグラマですか?
>>649 市販ソフト書いてるうちでも使ってる。
MFC じゃ COM 関連のサポートが貧弱すぎてちょっと使い物にならないし。
(Outproc COM object からイベント受けるためだけで何行コード書かせるんだよ、とか)
652 :
デフォルトの名無しさん :04/10/26 22:05:45
>>651 最後の行の意味が分かる人はこのスレにはほぼいないと思いますよw
>>651 ありがとう。実際の開発に使えるようなものなら勉強してみたいと思っていたんです。
>645 言語のサポートは否定しないが、MVCに必要なものぐらいC++で誰でも作れるぞ? Observer的なもの作ればいいだけだし、イベントの元になるメソッド呼び出しのオブジェクト化もFunctorのようなものをテンプレート使って作ることが可能 手間的にも仕組み的にもほとんど変わらない。構造がグレーでないだけC++のほうが好ましいところもある。
>>654 C#だとイベントの関連付けはぺたぽとだし。
C++だとせいぜいあらかじめIDEに仕込んだものくらいしかできないからなぁ。
656 :
デフォルトの名無しさん :04/10/26 22:42:10
>>654 それはどうせどこぞのHPのサンプルプログラムをみての話でしょ?
お金をとるアプリケーションを書くようになるとわかるけど
サンデープログラマ(オタク?)がHPで書いてるようなサンプルプログラムなんて
まったく使い物にならないぞ
>>656 それほんとう?
業務で使えるようなサンプルって、
ウェブでは一切公開されていないの?
658 :
デフォルトの名無しさん :04/10/26 22:47:02
ウィンドウの初期表示位置を デスクトップ上でぴったり右下に(タスクバー除く)位置させたいのですが そのためにデスクトップのサイズはどれで得られますか? 設定はForm.DesktopLocationでよさそうなのですが
業務で使えるっていうか、特定の業務だとか企業だけで使うようなものは公開されないんじゃ?
>>657 656じゃ無いけど、Webで公開してるやつらは作ること自体が目的化してる面がある。
技術的には面白いけど結局使い物にならないってのは良くあるね。
>>659 つまり、サンプルを基盤にして独自拡張できる力がないといかんと、
それだけが言いたいのかな?
>658 どっからそういう話になるんだ?金融向けディリングアプリケーションとか作ってますが? 自分のいっている話からそういうところになんで飛躍するんだ? 自分が言いたかったのはDocViewにC#の言語特性は必要事項ではないということ。 サンプルなんか見ませんよ。どこからそういう話になるんだか。
664 :
デフォルトの名無しさん :04/10/26 23:00:37
>>662 ありがとうございます
調べてみるとScreen.GetWorkArea()というのが使えそうなのですが
引数にControlを取るみたいなのですがControlを作らないといけないのでしょうか?
Formしか使っていないのですが
>>664 なぜControlを引数に取るかというと、複数ディスプレイの環境を考慮してるからだ。
どのディスプレイのWorkingAreaを取得するか、でGetWorkingArea(Control)はそのコントロールが一番多く含まれるディスプレイのワーキングエリアを取得する。
プライマリディスプレイしか考慮しないならScreen.Primary.WorkingAreaを使えばいい。
> Formしか使っていないのですが
FormもControlの派生クラスな訳だが。
666 :
デフォルトの名無しさん :04/10/26 23:07:53
ディリングってw
>>665 >FormもControlの派生クラスな訳だが
Σr(‘Д‘n)
ボタンとかスクロールバーとか
そういう部品だけがコントロールなもんだと
思ってました
よくわかりました
ありがとうございます
System.Windows.Forms.SystemInformation.WorkingArea のほうが良くない?
デリングシティ
なぜMSは抽象層としてSystem.Formsを定義しなかったんだ? ターゲットプラットフォームごとに互換性の無いウィンドウシステムを使えってことか? それともすべてのプラットフォーム用にWndProcを実装しろってことか?
672 :
デフォルトの名無しさん :04/10/26 23:17:58
話し変わるけどC#ってコンポーネントのソースって見れないの?
>>671 Javaのさんざんな状態を知らないの?
AWT、Swing、SWTと乱立。
しかも携帯でこれらが使えるわけじゃない。
デスクトップOSでもOSによってずいぶんと違う。
少なくとも現状では各プラットフォーム共通の
ウインドウシステムなんて現実的ではない。
>>674 乱立とプラットフォーム間の互換性は関係ないかと
さすがにモバイル向けと同じインターフェイスってのは期待しないけどさ。
MSのいう.NETのマルチプラットフォームはMSのOSのみ(PCのWindowsとかCEとか)を対象としたマルチで 他社のOSまで含めてるわけじゃないって話を聞いたんだけどデマ?
>>676 あながちデマじゃないと思う。
本気でマルチプラットを考えていると思えないし。
マルチプラットをちらつかせて実は自社プラットに縛ろうとしている
戦略が見え隠れせんでもない。
ラジオボタンでボタン形式の表示にしたときの 3D境界線のもっこリ具合をもっと大きくしたりといったことは可能でしょうか? Border3DSizeプロパティでgetはできるもののsetはできないですが
>>678 多分真っ当には無理。
OnPaintをオーバーライドしてしこしこ描いていくしか。
SystemInformation.Border3DSizeは画面のプロパティからユーザが操作するもの。
680 :
デフォルトの名無しさん :04/10/27 01:03:33
>>679 OnPaintをオーバーライド???
知ったかぶりハケーン
非ビジュアルなコンポーネントを作るために、 メニューでファイル→新しい項目の追加→コンポーネントクラス を実行すると、ソースが作成されます。 そのソースにはコンストラクタが2つ(引数の無いものとIContainerを引数にとるもの)があります。 その2つはどう違うのでしょうか。 IContainerを引数にとる方は、デザイン時にIDEから呼ばれるのかなと思っていますが、 裏付ける記述を発見できません。どなたか助けてください。
682 :
デフォルトの名無しさん :04/10/27 01:22:27
>>641 VC6を使ったことが無いのはあんたのほうじゃないの?
(自分の記憶違いかと思って、思わずVC6を立ち上げて確認してしまった)
685 :
デフォルトの名無しさん :04/10/27 01:45:49
>>682 MFC見たくデバックまでできるんですか?
ついでに書いておくと、MFC自体はDoc-Viewを強制してないから、 VC5以前のバージョンでも、ウィザードを使わないか、もしくはウィザードの 生成したコードを少しいじればDoc-Viewを使わなくてすむ。
688 :
デフォルトの名無しさん :04/10/27 02:00:57
>>684 ごめんプロジェクトの意味が分からなかったみたいだねw
趣味でやってる香具師ってきらいなんだよね
>>641 ダイアログベースだと分担できないって、Wizardの作ったコードを埋めていくしか
できないレベルなのか…
>>688 MFCがDoc-Viewを強制してるかしてないかの話で、だれもプロジェクトの話はしてませんよ。
>690 トレースはできるの?
つか、おまいらどんなもの作ってるんですか? 自分はメインはディーリングアプリケーションのクライアントとサーバー両方。 あとは趣味のツールとか。
もまいらただいま
>>693 趣味でツールとかゲームだな
仕事でC#を提案することは殆ど無い、っていうか無い
>>693 自分のサイトのASP.NET
クライアントサイドは以前作ったもののネイティブで動くようにしてくれと要望が殺到したのでやめた。
仕事ではC#の話自体ほとんど出ない、っていうか出ない
オレは趣味でプログラミングをしてるんだけど 以前は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# のリファクタリングツールでよさげなものはありませんか? できれば無償のものがいいのですが…。 最低限、使われていない関数を洗い出してくれる、って程度の事が できればいいのですが。
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); } }
>>699 Image.FromFileじゃなくてStreamから読み込めばできたような気がする。
>>683 ありがとうございます。
説明を読んだけどよく分かりませんでした。
まあ、気にしないことにします。
702 :
デフォルトの名無しさん :04/10/28 01:04:47
C#がどうこうっていうより .NET Frameworkが使えなさ杉w 半ブラックボックス化したFrameworkなんて使い物にならん
俺か?俺を釣りたいのか?
705 :
デフォルトの名無しさん :04/10/28 03:09:14
いえ、君のような雑魚にようはないw
>>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#もまだ勉強しはじめたばかりなのでエラーの理由も分かりません。他に編集状態を調べる方法がありましたら是非教えてください。
ざっとプログラム作ってみてストレスになっていることがあります。 ・フォームを継承した場合、継承元とプロパティが同じなのにデザイナが生成 したコードの中にソースがでてきます。無駄なソースだという以外にもImageList の二重生成などではアイコンが消えてしまうなどの不具合があります。 ・SqlConnection、SqlDataAdapterからDataSetを生成し、DataViewのDataSourceに して、DataGridで表示した場合、MappingNameにテーブル名やビュー名を入れないと 書式設定、色設定ができませんし、開発段階でテーブルのフィールドなどが変更 された場合も何度も更新したり、下手をすると新しく作り変えてあげない限り Grid上に表示されなかったりと、挙動不審です。 作り方や手順がまずいのかもしれませんが、とにかく面倒なことと、コンパイラに 起因する変なバグが出やすいです。
710 :
C ◆ZHxgEbZjZg :04/10/28 12:15:44
>>708 さん
解決しました。どうもありがとうございました。Dataクラスなんですね。
ドキュメントは見ているのですが、どうやって調べていいかわからないのも考え物ですね。
ほんとにありがとうございました。
>>710 「型又は名前空間名'xxxxx'が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。 」
というエラーが出たときは大抵usingがしていないから、該当内容をヘルプで調べて、そこに書いてある
名前空間をusingしてやる……という入門レベルでの話なのだが。
713 :
C ◆ZHxgEbZjZg :04/10/28 16:09:37
>>711 ,712
先日、VisualStudio買ったばかりの超入門者なんです。
とりあえず、「作って覚えろ」で本を参考にしながらデータベースアプリを
作ってます。
でもやっぱり基礎は大事ですね。がんばります。
ご迷惑をおかけしました。
すいません。 厨な質問で申し訳ないのですが、教えてくださいませんでしょうか? テキストファイルを読み込んで 「中に何も書いていない」 「中に何かしら書いてある」 という判定を行うにはどのようにしたらよいでしょうか? よろしくお願いします。
ありがとうございます。 ファイルサイズが0だったら無いって判断するのですか・・。 なるほど、勉強になりました。 またまた申し訳ないのですが、この場合はどうやってやったらよいのでしょうか。 ファイルサイズが0になったらこの処理をする、ということをやりたいのです。 この場合はどうやってファイルを監視(?)していたらよいのでしょうか? タイマーのようなものを使うのでしょうか? 変な質問ですが、よろしくお願いします。
ふぁいるの更新あったら通知するようにとか可能。
>>718 はい、そのとおりです。
ファイルの更新といいますか、サイズが0になったら警告を通知するというものを作っております。
一定の時間でファイルサイズの比較などをやるという方法がよくわかりません。
ループを使って常にグルグルまわしているのか、どうやってやるのか・・
さっきループを使ってやってみましたが、すぐにフリーズしてしまいました・・。
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###"); }
>720 C#でどうやるかしらんが、>719に書かれてるやつ使うんじゃないかな。 たぶんフラグで更新あったら通知とかできるはず。 更新あったときファイル開いて長さ取得かな?もっと効率の(・∀・)イイ!!のあるかもしれないけれど。 基本的にはループして何かをチェックするってのは最悪の手段なのでやめてください。
>>719 ,
>>721-722 みなさん、こんな馬鹿のためにレスを下さって感謝します。
FileSystemWatcherを調べたところ、ファイルが変更されたらイベントを起こすということができるそうです。
本当にありがとうございました。
ところが現在コンパイルエラーで詰まっております・・・・
なにぶんプログラムは初級者同然ですので・・。
気力でがんばっていこうと思います。
>>723 >気力でがんばっていこうと思います。
気力じゃない、頭を使え。
725 :
デフォルトの名無しさん :04/10/29 11:44:55
フォント ファミリから日本語のフォントだけを抽出するにはどうしたらいいのですか?
すいません・・・。 てかほんとに何度もすいません。 FileSystemWatcherを使うというアドバイスをいただきまして やってみたところうまくいきました。 しかし、今いるフォルダの中を監視したい場合はどうすればよろしいのでしょうか?
>>726 今いるフォルダとやらをPathにしてFileSystemWatcherを作ればよかろう。
>>727 レスありがとうございます。
今いるフォルダ(カレントディレクトリ)の取得はできましたが
watcher.Pathに設定するとおかしくなってしまいます。
やり方がおかしいのでしょうか?
何がどうおかしくなってるのかさっぱり。
watcher.Pathに設定するとおかしくなってしまいます。 watcher.Pathに設定するとおかしくなってしまいます。 watcher.Pathに設定するとおかしくなってしまいます。 watcher.Pathに設定するとおかしくなってしまいます。 watcher.Pathに設定するとおかしくなってしまいます。 watcher.Pathに設定するとおかしくなってしまいます。 watcher.Pathに設定するとおかしくなってしまいます。
>>729 Application.StartupPathで取得したパスを設定しました。
そしたら「見つからない」といって怒られました。
解読困難な日本語ですいませんです。
>>730 ?
取りあえず該当部分のコードとエラーメッセージを書け。
>>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への 参照のパスはもちろん変化しませんでした。このへんの仕様が 良くわからないのですがどうなっているのでしょうか?
>733 プログラムのコツ 関連するAPIマニュアルは読む サンプルコード探しまくる。 聞くときはエラー、コードを提示 デバッガーを有効活用する
C#では /doc でXMLドキュメントが生成できるけど、C++では生成できないの? 市販のドキュメント生成ツール買わないとだめかな。 VCコンパイラにそれを要求するのは酷なのか?
できるよ
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使ってもうまくできません。
変換の法則性がさっぱり分からん
VS.netで開発してます。 MSChartを用いて折れ線グラフが表示できるようになったのですが、 グラフ上の2点をマウスで指定して、 その点に対応するデータをピックアップする方法って用意されてるのでしょうか?
>>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);
>>742 様
ありがとうございます。
早速PointSelectedイベントで引数にdataPointがあったのでいけました。
最終的にはマウスで範囲選択し、その中の最大値を見つけてそこからいろいろしたかったのですが、
MSchartでやるのはかなりややこしそうですね。(そもそもマウスで選択するのが難しい…)
ありがとうございました。
>>738 どうやってドキュメント生成するんですか?
スイッチがわからないっす。
745 :
デフォルトの名無しさん :04/10/31 14:05:43
2002年に出てた、.TXT構想とB#言語ってどうなったんだろ?
Maccrosoftの次世代構想か懐かしいなオイ。 //あのB# Sample CodeのCompiled Codeがなんとも素晴らしい
>746 その記事面白いね。 「C++とJavaがあるのに何故C#が必要か?」という問いかけがあるけど C#になって初めて満足な言語ができた、と思ってるのだが。 それもまた時が経つと「何故あの頃は当時のC#で満足していたのだろう?」 という意見になるのかな? 時代がどう転ぶかは分からないけどね。
>>746 面白い。
いまさら当たり前のことに気づかされた。
751 :
デフォルトの名無しさん :04/10/31 15:37:40
Socket通信において、受信したパケットから 送信元IPアドレスを得る方法はどうすればいいのでしょう? UDPを用いて、すべてのアドレスからのパケットを受信するようにしております。
接続したSocketのRemoteEndPointプロパティ
>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〜とかでガリガリいろいろ書いてるんですが、 レイヤーみたいなことを実現するにはどういう風にするのがいいんでしょうか? ヒントだけでもいいのでお願いします。
レイヤー単位で Image を持つ
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の関係がいまいちわからないんで、本でも探してみます。
>>754 残念ながら、本屋にならんでいるC#.NET Frameworkの本はクソだらけだ。
コンポを使って間抜けなテキストエディタを作ったり、
しょーもない住所録を作ったり、くそデジタル時計を作ってみたりで、
ろくなものがない。
あなたが実現したいような画像関連のソフトをつくるために、
それにビチッと答えてくれるような本はないよ。
ほとんどの本はPictureBoxにファイルを読みこんで、説明おわり。
ま、クソライターが、とりあえず今このテの本かいといたら、
売れるだろ、と思って書いたのばっかりだ。
(あまり売れているようには思わんがな)
>>754 さん
レスありがとうございます。
そうですか、書籍は無いですか…
たとえば、マウスで範囲選択するとき、
マウスをPictureBoxないでドラッグしてるあいだだけ
そのときのマウスの位置とドラッグ開始点を矩形で囲んで見せるような
処理を書くのも方法が思いつかず困ってます。
mouse_moveのたびに1個矩形を描いて、前のを消してを繰り返してるのですが、
とても連続的には出ないので…
がんばっていろいろ調べてみます。英語読まないとだめなのかなぁ…
ぁぅ
>>758 さんごめんなさい、アンカーと名前と番号間違えた…
1個矩形を書いて消す、とひとくちにいっても。 (A)下にある画像を全部再描画してから矩形を書くのと、 (B)以前あった矩形をXORとかNOTで書いて、矩形のところだった ピクセルだけを元に戻して、新たに矩形を書くのでは、速度が違うぞ。 今どきは、画像がでかくなかったら(A)でも実用にたえる。 その矩形ってSetPixelで書いてないよな、DrawRectangleで書いてるよな。 それぐらいのテクだったら、MFCでアプリ作る的な、本でも書いてある。 でもそれだけのために買うことはない。 解説があっても1Pぐらいだから立ち読みでなんとかするか、ウェブ検索するべしっ。 ただし、英語で読む必要はないと思う、これはポピュラーな話だからの。 検索キーは"XOR","矩形","マウス","選択"、ぐらいでいいだろ。
どうもつまずいてるところがちょっと違う気がしてきました。 上のほうで最初に質問したレイヤー化で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年引いて秒を取得すればよい?
>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
英語の発音なんてどう聞こえるか。なんだから別にいいんじゃないか
そこでワーニングですよ
773 :
デフォルトの名無しさん :04/11/01 09:28:26
□□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
マスコミュ くちコミュ
>771 シュミレーションとは絶対に聞こえない
コミニュケーションだと思ってるアフォも多いな
IME変換していれば間違いに気づいたのにな。
コスモポタリン
779 :
デフォルトの名無しさん :04/11/01 13:17:34
.NET2 の Clipboard.ContainsAudio()って、どんなデータを渡すとtrueを返すんですか? 単純に.mid、.mp3ファイルをコピーしてもfalseになるんですが。
まあ例えばOS付属のサウンドレコーダでコピーした時とかだな。 WAV形式のバイト配列。
>>780 どうもありがとうございます。
言われてから、Get/Setするメソッド見てみたら、確かにその通りですた・・・ orz
public static Stream GetAudioStream();
public static void SetAudio(byte[] audioBytes);
public static void SetAudio(Stream audioStream);
かえるの子供はおじゃまたくしだもんな。
とうころもしもどうぞ。
そんなことしたらまっろくろくすけが出るぞ。
785 :
デフォルトの名無しさん :04/11/02 12:04:13
ASP.NETのWebアプリをC#で書いてるんですが、 (int)Session["ID"]; だと、以下のエラーが出て、 System.InvalidCastException: 指定されたキャストは有効ではありません。 int.Parse(Session["ID"].ToString()); だと問題ないというのが不思議なんですが・・・ nullになってる訳でもなさそうです。
漏れの予想ではセッションIDはたぶんストリング。
GetType()で型を調べてみたら?
> ほんとに元は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
>790 メインフォームでアプリケーションオブジェクトの管理をしてる時点でうんこ設計
ヽ(・∀・)ノ●ウンコー
794 :
デフォルトの名無しさん :04/11/02 19:14:55
複数行からなるテキスト文から特定の行にある文字列を 全部取得するにはどうしたらいいのですか?
すいません、教えてください。 アプリケーションを終了したいのですが System.Diagnostics.Process[] myProcesses; myProcesses = System.Diagnostics.Process.GetProcessesByName("プロセス名"); foreach(System.Diagnostics.Process instance in myProcess) { instance.CloseMainWindow(); } とやりますと、終了確認のダイアログが出てきてしまいます。 (終了確認のあるアプリケーションです) このダイアログを出さないで終了させるにはどうしたらよいでしょうか? 教えていいただけませんでしょうか。 よろしくお願いします。
>>795 Process.Killで良いんじゃないかな。
>>794 Splitしてその配列の中から。
ただし"a\r\nb"は{"a","","b"}にされるので一旦\nに置換するとかすると吉。
大技:TextBoxつくってTextにぶち込んでLinesを使う
>>796 ありがとうございます。
Process.Killでできました。
ご教授ありがとうございました。
すいません。 もう一度お教え願えないでしょうか? プログラムを実行しまして、次のプログラムに移るときに何秒間か待機させる方法を探しております。 たとえば if(〜〜){ 処理; } //ここで何秒間か待機させる if(〜〜){ 処理2; } というようなことをしたいのです。 連続の質問申し訳ないのですが、よろしくお願いいたします。
Thread.Sleep
>>790 設定を保持するクラスを用意する。
OKボタン押下時→設定保持クラスの値を書き換えてダイアログを閉じる。
適用ボタン押下時→設定保持クラスの値を書き換えてもダイアログは閉じない。
クラスに限らず、メインフォームとも設定ダイアログとも別の場所に設定情報を
保持しておけばよろし。
801 :
デフォルトの名無しさん :04/11/02 23:15:14
今日も小もない質問をしてしまいます。 MSの正規表現クラスで "aaa bbb ccc test"string[]の中に放り込みたいのですが、 スペースだけなら、.Splitでもしたらいいのですが問題があり、 このスペースが曲者で、UTFとか2バイトの空白も考慮しないとならず 正規表現で取得するのが手っ取り早いと思うのですが、 正規表現を(@"(\S[^\s]*\s)*?")とかでとってきたいのですが、露骨にまちがってますか? よろしくお願いします。
まず日本語を勉強すべきだな。 Regex.Split("hoge foo bar", "\\s");
>>801 "UTFとか2バイトの空白も考慮しないとならず"
それは C# の string (ユニコード文字列) ではありません。
なんだかわからんエンコーディングの文字列のバイナリ表現を、byte -> char と変換して
適当に string 化したものを一般的に扱う術は無いです。
>>801 もとになる文字列(らしきもの?)を何からどうやって取得しているのか説明してくれれば
知恵を貸せるかもしれない。
805 :
デフォルトの名無しさん :04/11/03 00:12:33
元になる文字列現在はテストとして渡されたのが [1byte空白][UTF空白][1byte空白][文字列][1byte空白][UTF空白]以下ずっとこのような形式で 終端まで続きます。とりあえず、文字列だけ抜き出しかつ要素1つ 1つをstring[]の配列にいれてデータがほしいです。 正規表現で抜き出せないないなら、別の方法を探してみようと思います。
1byte空白って何?そんなもんC#にあるの?
上でお騒がせした759==754です。 折れ線グラフを選択したかったので選択範囲だけ折れ線グラフの色を変えて再描画 選択範囲が変わると前の選択範囲を普通の色に書き直して選択範囲をまた〜 ってやってまぁまぁの速度出てたのですが、 ControlPaint.FillReversibleRectangle ってのを今日になって見つけました… o..rz...
>808 不謹慎(・A・)イクナイ!!
当然のように
ControlPaint.DrawReversibleLine
なんてのもあるわけで…
>>809 さん 不謹慎ですか…ぁぅぁぅ
>>810 さん GIMPのソース呼んで勉強したってすごいで努力家ですね、
そんだけやって蟻なのかと… とはいえちらっとPaint.netのソース見たりはしてみたんですが。
FillReversibleRectangleはなかったような…見落としたかな 見てみよっと。
>>792 ということは、管理をするクラスを一つ作って、
そのクラスにメインフォームをアップデートするメソッド登録、
ダイアログに管理クラスを渡して適用などを行うようにするのでしょうか?
学生の身分なんで、多くのソース見る機会がないもので(涙
>>812 もっとも安直な実装法としては、以下のようになるでしょう。
設定値保持クラスを作り、Singletonパターンで1個しかインスタンスを作れないようにしておく。
そのクラスを引数にとるアップデート用メソッドをメインフォームに用意する。
設定ダイアログで[OK]あるいは[適用]が押されたら、設定保持クラスのプロパティに値をセットし、
メインフォームのアップデート用メソッドにそれを渡す。
(そのためには、メインフォームからダイアログを開くときに、thisを渡しておく必要がある。それは
あなたの考えているとおり)
[OK]と[適用]の動作の違いは、ダイアログを閉じるか否かのみ。
発展型として、設定保持クラスのコンストラクタで設定ファイルを読み、デストラクタで書き込むとか
いろいろ考えられる。
こういうのは自分で実装してみないと知識もカンも身に付かないので、とにかく自力で思いつく限りの
パターンを実装してみれ。学生ならなおさら。
>812 その手の設計するときはObserver的な考え使ったほうがいい。 OberverではSubjectはObserverがどんなものか知らないし、しる必要もない。そうすることでオブジェクトの分離ができる。 誰がどのクラスを知ってるべきかなど考えてどうするか悩んでるんでしょう? たとえば、メインフォームのメソッドを呼ぶためにダイアログは名フォームのこと知らなければいけないけど知らせたくないとか。 自分がするならメインフォームクラス、アプリデータクラス、設定管理クラス、設定いじくるようダイアログクラスを作る。 関係は次のとおり(左が右のクラスを知っている) メインフォーム アプリデータ、(ダイアログ起動するためだけに)ダイアログ アプリデータ 設定管理 ダイアログ 設定管理 ダイアログは設定管理だけを更新する。 設定管理は設定変わったイベントを出す。 データは設定変わったイベントを受けて内部データ変えて、データ変わったイベントを出す。 データわかったイベント受けて、メインフォームは表示を変更 たぶんスコープの問題とオブジェクトの分離をごちゃ混ぜにしている。
815 :
デフォルトの名無しさん :04/11/03 03:19:52
そこまでやるなら鼻からVC++でDoc/Viewつかった方が早いw
なんでそこにObserverを特殊化した形のDoc/Viewを使う必要がある?
817 :
デフォルトの名無しさん :04/11/03 09:04:53
VisualStudioのフォームのデザイン用の画面のワークスペースの色を変更する方法はないでしょうか? 現在は真っ白ですが、できればWindows2000デフォルトのデスクトップ色のくすんだ青色にしたいのですが。
ついでにもうひとつ質問書き込みします。 デバッグF5実行時に、自動的にVisualStudioIDEを アイコン化(最小化?)してくれる機能は無いですか? C++BuilderやDelphiにはあったのですが。
>>817 デスクトップ領域で右クリックして「プロパティ」
画面のプロパティダイアログで「デザイン」
指定する部分「アプリケーション作業域」で色かえれ
>>813-814 ありがとうございます。
もうちょっと結城さんのデザインパターンの本を読んで自分なりに
勉強してみたいと思います。
821 :
デフォルトの名無しさん :04/11/03 13:44:24
Panel上にPictureBoxを設置して自動的にスクロール表示させてるのですが、 パネルのスクロールバーをスライドさしたとき、 表示されている部分の左上のPictureBoxの座標を得るにはどうすればいいですか?
AutoScrollPositionプロパティ。 ただしこれは821の意味ではX,Yそれぞれ負数になっている。
IEのコンポーネントを使用して ダイアログ内の設定画面をHTMLで作成して入力された値を ほげほげってできないかな。
|-`).。oO(ほげほげを指摘されているわけじゃないよね。。。?)
普通にできそうだ。サンキュ。
インプロセスで動く簡易的なWebサーバーコンポーネント欲しいよね。 IEコンポーネント使っても、ページの内容を動的に変えるのってかなりめんどいし。 Web Forms使って内容を出力できたら便利なのに。 と以前pluggable protocol使ってIEコンポーネントでアプリのヘルプ見れるようにしたときに思った。
>>822 さん
ありがとうございます。早速やってみます。
MyWebなんて覚えてる人いる?
クラスAにstatic int num;してコンストラクタでnum++;、デストラクタでnum--;すれば、 クラスAのインスタンスの数が分かりますよね? で今やりたいのは、クラスAから派生した全てのクラス(B,C,D,,,,,,,)の数を知りたいのですがどうしたらいいですか?
>>830 インスタンス数じゃなくてクラス数なら、わざわざプログラムで解決する必要ないような。
オブジェクトブラウザでも使ったら?
プログラム板って雰囲気悪いね
>>830 sealed クラスならいざ知らず、そうじゃないクラスならば全ての子クラス数を取得することは無理っすよ
アセンブリ単位でクラス数が固定されているのならば、↓のような感じでできますが
[手順]
Assembly.GetAssembly().GetTypes() とかでアセンブリ内の全ての Type の配列を取得
Type.IsSubclassOf(typeof(ClassA)) で一つ一つ確かめながら数えていく
>>799 ありがとうございます。
できました。
感謝いたします
すいません・・・。 多々にわたる質問本当にすいません。 FileSystemWatcherを教えてもらったとき、気がつかなかったことがあります。 実は今日気がついたことなのですが、 私はログファイルを監視するようにしています。 そのログが更新されるときに問題が発生しました。 更新したログファイルを書き込むときに、一度もとのログを削除してから書き込まれます。 そこでイベントが発生してしまい、困っています。 この問題を解決するためにはどうしたらよろしいでしょうか? 私も考えて見たのですが、どうもうまくいかなく、質問させていただきました。 あつかましいようですが、なにとぞお力添えをいただけないでしょうか?
あつかましいです
ひょっとして830が言ってるのはあるクラスの全派生クラスのインスタンス数ではないのか。
そうなら基底クラスのデフォルトコンストラクタに830みたいな機構入れておけばいいんだけど。
>>835 わけわからん
838 :
デフォルトの名無しさん :04/11/03 23:02:43
初歩的な質問ですみません。 c#で ”H16/11/01”みたいに平成をHで出す事できますか? Datetime型→stringへの変換時です。 後、それからもっと初歩的ですみません。 Comboboxでドロップダウンリストを出して選ぶと必ずイベントをとりたい 場合ってどうしたらいいんでしょう? SlectedIndexChangeイベントだと、インデックスが変わった時しか発生しません。 インデックスが変わらなくても、選ばれると発生させたいんです。 Clickイベントを起こすのは嫌だなと思ってます。 宜しくお願いします。
>>838 JapaneseCalendar.GetEra()
ComboBox を継承してイベント追加。
って選んだ時ならDropDownイベントじゃないか。
ComboBox.SelectionChangeCommittedがお望みの動作に限りなく近いはず。
>>835 すいません。
FileSystemWatcherでログファイルを監視して
そのログファイルのサイズが0になったらイベントを起こしています。
しかし、ログファイルの更新があると、勝手にイベントが動いてしまいます。
それを避けるにはどうしたらよいのでしょうか?
おかしな文章でしたら申し訳ないです
844 :
デフォルトの名無しさん :04/11/03 23:40:48
戸愚呂弟が強い。 指弾で体力削られた後、100%中の100%喰らうとマジ厳しい orz
>>843 イベントで起動するメソッドの方で判別すりゃいいじゃん。
>843 何でログ書くときに削除されるの? そのログクラスの仕様を削除イベントで内容に変えるか、更新前イベント、更新後イベントつけて、その間の削除イベントは無視するかが自然じゃないの?
>>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 です。 何が悪いのでしょうか?
this.toolTip1.Active =false; がいらん。
すいません。 RitchTextBoxに1行ずつ書き込んで生きたいのですがどうやればいいのでしょうか?
嫌な生き方だな。
853 :
デフォルトの名無しさん :04/11/05 20:43:52
次期VBには、Myクラスという便利な機能が付くようで、羨ましいです。 C#では、やっぱりMyクラスは、使えないのでしょうか?
>>853 いや別に便利でもないし。
結局既存クラスのメソッドプロパティを関数ベースにラップしてるだけだし。
使おうと思えば使えるけど使おうと思わないな。
ちょっと正しくないか。 既存クラスのラッパクラスを関数ベースっぽく扱えるようにコンパイラが小細工する、だな。 一部のメソッドなんか省略パラメータ代わりのオーバーロードで醜いこと甚だしい。
>>855 いや、VB の位置付けを考えるとMyみたいな簡易版のライブラリは重要じゃないか?
ということとは別として、何が「やっぱり」なのかはわからないけど普通に考えると使えそうだよね。
857 :
デフォルトの名無しさん :04/11/06 04:41:38
858 :
デフォルトの名無しさん :04/11/06 10:13:52
VisualStudio.NET2003の統合開発環境のエディタと同じキーマップのエディタってないですかね? ほんとはIDEから切り離したいんだけど、それだとタイーホされちゃいそうだし、 それ以前に切り離しかたがわからないです。
適当なエディタのキーバーインドをカスタマイズすればいいだけなんじゃないのか?
858です。そういうレスがつくのは大体予想してた。 キーバインドでVS.NET2003とほとんど同等になる コンフィグファイルを公開してるのってどんなエディタがありますか。 やっぱ EMACS ですかね?
VSのエディタだけが欲しいのなら エディタ以外を非表示にすればいいんと違うの? シンプルなタブ型エディタになるよ。 .txtとかを開くときはデフォでなってるし。
いや、あのさ。 VisualStudioの入っているPCの時は起動は重いけどそれなりに楽しく使ってる。 VisualStudioの入っていない端末にいったときにはnotepad.exeを使えばいいってことも頭ではわかってる。。 だけど体がうけつけんのだよ。だからCD-Rとかに使いやすいエディタを入れておいて、 使う時だけインストール、仕事が終わったらアンインストールってな感じで使いたいんさ。
あ、それとね、
>>862 べつにIDEが嫌いなわけじゃないんだよね。
IDEが好きだから、エディタを切り離して別のところで使いたいなーと思っただけ。
エディタからコンパイラとかリンカを ShellExecute しようとは思っていないですよ。
OSにプログラマも満足するような、フルパワーなエディタが標準でついていたらいいのにね。
この天気のいい日曜日にグチを書き込んで、おれは悲しいな。 遊びにいくべー、じゃあそんなわけでバイバイ。
867 :
デフォルトの名無しさん :04/11/07 14:41:27
panal上にPictureBoxを配置してスクロール表示さしてるときに、 スクロールバーの現在位置を変えるにはどうしたらいいですか?
>>867 Panel.AutoScrollPositionプロパティ。
ちょっと数値が直感的でないから要注意だ。
869 :
デフォルトの名無しさん :04/11/07 18:43:32
C#を勉強したいと思っているので、ツールを買おうかなと思っています。 でもC#のツールってVisual C#以外にもあったんですね。 Visual C#とBorland C# Builderってどう違うんでしょう? 初心者はやっぱVisual C#ですかね・・・?
>>869 無難なのはVisual C#
金が勿体無いと思うならShaepDevelop (フリーソフト)
マニアならC# Builder
とりあえずSharpDevelop使ってみ。
>>870 レスありがd
さっそく落としてみようかなと
>>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#のソースってありませんか?ちょっとこれ実装してみたいのですが、 原著見ても数式理解できないのソースとにらめっこしたいです。
.NET Framework SDKに入っているXMLdiffにはC#のソースが 付いているらしいのだが。
すいません VSの使い方を教えてください。こういうことができるかどうかもわかりません。 LOGIN.form のボタンをクリックすると MENU.form を呼び出すように作成しています。 デバッグ開始すると必ずLOGIN.form が出てきてしまいますが、MENU.formだけをデバッグすることはできるのでしょうか? 2階層くらいならまだいいのですが、階層が増えていくと、非常に面倒です。 くだらない質問かもしれませんが、どうか教えてください。よろしくお願いします。m(_ _)m
>>877 #if DEBUG
this.buttonMenu.performClick();
#endif
とかしておけば?
>877 ビジュアルスタディオよりもプログラムについて勉強されたほうがいいと思います。
880 :
デフォルトの名無しさん :04/11/09 13:48:48
Windows Forms の DateTimePicker で 2004年11月 のように 年月のみを入力させるようにはできませんか?
>>880 DateTimePicker.Format
DateTimePicker.CustomFormat
あとカレンダー使うのは不自然だろうからDateTimePicker.ShowUpDown
すいません。どうやってやればいいのか検討もつかないので教えてください。 ある通信プログラムがどれぐらいの速さで通信しているか調べる方法はあるでしょうか? ある通信プログラムというのはネットゲームだったり、ウェブからファイルをダウンロードしたりということです。 ソケットとか調べるのかな?といろいろ調べてみましたがよくわからなかったです・・・・。 すいませんが、よろしくおねがいします。
ある特定のクラスのサブクラスを列挙するもの無いですか?
885 :
デフォルトの名無しさん :04/11/10 04:55:27
Labelを、DockStyle.Fillにしても、 全体化(?)されないのは仕様ですか?
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
入れ子になった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' が見つかりませんでした。 // ディレクティブを使うかアセンブリ参照を使ってください。 } }
>>888 (Edit and continue が行われると、)コンパイラは命令とメタデータの差分を生成し、
メモリにある既存の命令とメタデータの一部はそれらによって置き換えられます。
変更された命令とメタデータは、ソースコード上でそれらが挿入された位置に対応
する位置に収められます。
もし編集されたメソッドがJITコンパイラによってx86命令に置き換えられていた場合
には、それらは新しいx86命令によって置き換えられます。
892 :
デフォルトの名無しさん :04/11/10 13:03:46
>>890 ありがとうございます。
こんなに早く回答していただけるとは思いませんでした。
英語が苦手なので大変助かりました。
本当にありがとうございました。
>>891 情報ありがとうございます。
そういう仕様だったのですか…。
C++では普通に使えていたので、C#でもできると思い込んでおりました。
ありがとうございました。
>>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;
とかいうまねならできたはず。
>>894 エイリアスを使うものなら1.0でも
using IO = System.IO;
Console.Write(IO.IsolatedStorage.IsolatedStorageScope.Assembly);
なんて書き方ができるよ。
//プリプロセッサのマクロに近いな、この使い方。
::は名前空間とクラスの名前が同じ場合にそれが名前空間であることを明示するため、だったっけ。
>>894 結局エイリアス名を書かないとならないのですね。
---
お作法や効率的に良いか悪いかは分かりませんが、
ネストしたクラスを使って、やりたかった事が出来ました。
namespace A { class B { class Hoge { .....
using A;
B.Hoge hoge=newB.Hoge();
ところで、鯖側に強制終了された Socket に、書き込みを行おうとすると 一度目では例外が発生せずに、二度目ではじめて例外が発生するのは何でですか?
898 :
デフォルトの名無しさん :04/11/10 21:12:04
IPEndPoint ipEndPoint = new IPEndPoint(Dns.ResolveToAddresses("
http://www.google.com ")[0], 1101);
で、
要求した名前は有効で、データベースにありますが、解決された正しい関連データがありません。
ってエラーが出るんですが、どうやったら直りますか?
>>898 "www.google.com"で試してみたら?
//なんでyahoo.comならスキーマ付きで通るんだか。
900 :
デフォルトの名無しさん :04/11/10 22:22:49
相談させて下さい。 windowsのDatagridに入力するフォームで、一定時間毎にDataSetを更新しようと思います。 ただしデータを入力中に更新したくないので 今グリッドの中でデータを入力している最中だということを、知りたいのですが、 それらしいプロパティが見つかりません。 もし、あるのなら教えて下さい。 よろしくお願いします。
>>883 ありがとうございます。
なるほど、こんな風にして値を算出すればよさそうです。
本当にありがとうございます。
あとどうしてもVisual Studio.NETのバグとしか思えない現象になってしまいました。
その現象というのは、イベントが発生しない、というものです。
さっきまではきちんと動作していましたが、もう一度コンパイルしてみるといきなり動かなくなってしまいました。
書いたはずのイベントが無かったことにされているようです。
例ですが
buttonを押したときイベントを起こすには
private void buttonSend_Click(object sender, System.EventArgs e)
{
処理;
}
となるじゃないですか。
認識されてないのか、ボタンを押しても何も起こりません。
挙句の果てに、もう一回イベントをつけようとすると
private void buttonSend_Click(object sender, System.EventArgs e)
{
}
と、上に同じイベントがあるにもかかわらず新しく作られてしまいます。
これってやはりバグなのでしょうか?
今まで作ってきたのにすべてやり直しになってしまいました。
この現象の直し方などを知っている方、どうかお助けください。
長文すいませんでした。
>>901 メソッドを追加しただけじゃイベントハンドラにはなりませんよ。
デザイナでイベントハンドラを追加したときには、VS.Net が InitializeComponent 関数内に
イベントとメソッドの対応付けのためのコードを書いてくれます。
コンストラクタにあった InitializeComponent の呼び出しを消してしまったんじゃない?
>>900 逆に、更新する時間になると、入力不可能にするとかは駄目?
Enabledプロパティで簡単に出来るけど。
904 :
デフォルトの名無しさん :04/11/10 23:24:58
DataTableにColumnChangingイベントあるからこれが発生したら フラグでもtrueとかにして、そのフラグを監視して更新制御をする 方法しか思いつきません。DataSetにDataTable入れ込んだやつをDataGrid にセットすれば、セルをクリックした時点でColumnChangingを捕捉できます。 またまた、くだらない質問なのですがC#で全方向リストを作成する場合、 インターフェイスにICloneable, IEnumerableを実装して実装するチュートリ アルもしくはサンプルがあれば教えください。
>>902 ありがとうございます。
今調べてみましたが、その中には何も書いてありませんでした。
確認のために適当なソフト作ってみました。
デザイナでイベントハンドラを追加してみましたが、そういうコードはどこにも追加されていませんでした。
orz・・・・なきそうです・・・
OpenFileDialogクラスで開いたダイアログがLUNAインターフェイスに 対応してくれません(マニフェストはちゃんと設置してあります) 対応させるにはAPIを使うしかないんでしょうか?
うちの環境だとちゃんと適応されているが? .NET のバージョンは 1.1 で。
909 :
900 :04/11/11 00:42:02
>>903 でもたぶん更新すると入力中のデータって、入力前の値に戻っちゃいますよね?
入力中の行のデータを待避して更新して戻そうと思っても
セルの中を編集している最中だと、その編集中の値を持ってこれないし。。
Application.Run()の前に、 Application.EnableVisualStyle() やってみるとか?
911 :
900 :04/11/11 00:53:21
>>909 自己レスというか追加なんですが、
ここでいう更新のやり方がまずいのかもしれないので。
複数人で平行してテーブルのデータを編集するのですが、
dataadapterのupdateだけだと他の人が削除したデータが、gridから消えないので
自分のセル位置を覚えて、clearしてupdateしてまた覚えていたセル位置に戻っています。
こういう更新の仕方をしてると、編集中のデータは元に戻ってしまいます。
>>909 うろ覚えで悪いが、編集部分は単なるEditボックスじゃなかった?
C#.NETって便利でイイんだけど重くなるのがネック
.NET Passportのサンプルってないですか?
>>913 Athlon64 3700+でチョー高速だぜ、フゥーハハハァー
916 :
900 :04/11/11 02:25:49
>>905 その書き方だと間違ったやり方でやってないか?
デザイナでやるなら、デザイナ上に配置したボタンをダブルクリックしてみ。
するとコードのInitializeComponentでイベントハンドラが自動で追加されて、
対応するメソッドも書き加えられて処理をかけるようになるはず。
BASEライブラリのプロテクト プロパティにプログラムで利用するにはどうしたらいいでしょう。
>>918 プロテクトプロパティを持ったクラスを継承する。
継承したクラスなら使える。>protectedメンバ
>>917 ありがとうございます。
はい、私はずっとその方法でやってました。
デザイナでボタンをフォームに配置してみまして、ダブルクリックしてやってみました。
しかしInitializeComponent();にイベントハンドラなどは追加されておりません。
しかし・・・・なんでこんなことに・・・・
バックアップの必要さを身にしみて感じました・・・
>>920 対象のフォームは、当該ソースファイルの一番先頭のクラスになってますか?
>>921 ありがとうございます。
はい、なっていました。
とりあえず、動くところと動かないところがありました。
まるっきり全部動かない状態じゃなくてよかったです。
それで、もう一度同じイベントを作ってあげて処理のソースをコピペしてあげると今度は動きました。
原因はまったくわからないですが、それで解決できるならその方法でやってみようと思います。
一時期はどうなることかと思いました・・・・
>>923 デザイナでいじるときは、たまに破損することがあるから気をつけたほうが良いよ。
しかもUNDOできなかったりしてね。
バックアップを取るとともに、フォーム内のコードは最小限にしてロジックは外に出したほうが良い。
フォームレイアウトも手書きした方が何かと楽だね。 最初はメンドイけど慣れれば結構スラスラ書けるものだよ。 わけわからないコード挿入されないし、 意味もなくリソースファイル使われないし、 コード全体が100パーセント把握できる。 RADによる隠蔽はいいことばかりじゃないからね。 個人的にはデメリットの方が多い。
RADは厨にも分かりやすくするための戦略だよ。 delphi使いには厨しかいないのがいい例。
>925 >RADによる隠蔽はいいことばかりじゃないからね。 >個人的にはデメリットの方が多い。 一体どんなデメリットがあるんだ? 足りない部分はformのコンストラクタで付け加えればいいし、 こういう発言を聞くと、一昔前の 「HTMLのタグは手打ちに限る。HTMLエディタを使うなんて言語道断」 という主張を思い出す。
>>927 昔々は炊飯器で米を炊くのが邪道だったそうだ。
放っておいてやれ。
>>927 「RADによる隠蔽」についてなら漏れも925に同意だけど、C#の場合別に隠蔽されてないしね。
リソースだってイメージリストやアイコン付加した際、国際化可能としてリソース分離するときなど、
必要な場合にしか使われないし。
>>925 コンパイラも使わないで IL を手で書ければ最高だよね。
慣れれば結構すらすら書けるものだよ。コード全体を100%把握できるし。
大きいコードを書く気にはなれないのが難点だけど。
>>929 ILよりもバイナリエディタの方がきめ細かく制御できてお勧めダヨ。
このままだと 「.NETのライブラリはソースが公開されていないので信用できん!」 とか言い出しそう。
公開されてるじゃん、バイナリエディタで読める。
>>931 普通に見られるんだが。
あ、MethodImpl属性ついてるのはだめよん
俺の場合、ソースを読んでさらに信用しなくなった。
>933 Reflectorを使うってこと? 見れないことはないだろうが・・・
>927 >足りない部分はformのコンストラクタで付け加えればいいし でもこれはRADでできないことは手書きで、っていうことでしょ。 RADの事情をコードに持込むってのはどうなんだろう。 あと、"一昔前"のHTMLは事情が違いすぎるような。 エディタ使ったドキュメントが表示できないなんて普通にあったし。
>925 RADじゃダメな時、というのをマジで教えて欲しいのだが。 動的生成の場合は当然無理だが。 一体どんなGUIなんだ??
>>936 >RADの事情をコードに持込むってのはどうなんだろう。
その結果が激しく不自然なコードになるんじゃなければ、別に良いと思うけど。
だいたい実装用のコードなんてのは抽象的仕様記述じゃないんだから、
開発環境、利用する言語、利用可能なPGの能力、利用環境など様々な事情を
反映したものになって当然なわけで。
IDEからのイベントハンドラ登録とかは確かに適当だとは思う。 初期化時に複数登録したい時とかってこうするしかないし。 InitializeCompornents(){ Button1.Click += new EventHandler( method1 ); } Form1(){ Button1.Click += new EventHandler( method2 ); } あと、プロパティウインドウからだとTagにテキストしか入れられないから 初期化時に別のを入れようとするとやっぱ別の場所でやらなきゃいけないのもなぁ…。
以下をformのコンストラクタに貼り付けるとダイアログに早代わり! // ダイアログらしくする this.MaximizeBox = false; // 最大化ボタンなし this.MinimizeBox = false; // アイコン化ボタンなし this.ShowInTaskbar = false; // タスクバーに出さない this.FormBorderStyle = FormBorderStyle.FixedDialog; // ダイアログスタイル this.StartPosition = FormStartPosition.CenterScreen; // 画面中央に表示 ・・・プロパティウインドウでもできるじゃん・・・
942 :
デフォルトの名無しさん :04/11/12 16:32:48
datetimepicker の背景色を変える事はできないのでしょうか? textbox.BackColor のようなプロパティが datetimepicker に見あたらない のでどうやればいいのか途方に暮れています。 カレンダーの背景色は変える事ができるのに、通常の背景色を変える事は できないのでしょうか? 変更方法があれば教えてください。
>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文で ほかの変数と比較するにはどうしたらよいでしょうか。
>>945 そのエラーの原因は一部elseがelesになってるからだろうが、
ほかにもツッコミどころの多いコードだな。
> また、テキストボックスからの数値を変数に入れて、for文で
> ほかの変数と比較するにはどうしたらよいでしょうか。
質問が要領を得ない。
・質問文に複数のポイントがあるがそのどれが分からないのか、それとも何もかも分からないのか?
・他の変数ってどういう風に定義されているのか
このいきなり宣言されたMをどうやって使うつもりなんだろうか…。
そもそも代入してるから最初のifが必ずtrueになるわけだが。
radioButton1=true って何がしたいんだ? プログラムを作る前に、(MSDNを)半年ROMってろ。
950 :
942 :04/11/12 17:43:58
>>943 >>944 ありがとうございます。
バグって事は、DateTimePicker を使う時点で BackColor を変更できない
って事なんでしょうか?
お前ら釣られすぎですよ
ボタンがフォーカスを受け取らないようにするにはどうしたらいいでしょうか? CanFocusプロパティは読み取り専用で設定できないようなので・・。 何か方法がありましたら教えて下さい。
Enabled を false にする
>>954 レスありがとうございます。
ボタンの機能はそのまま(クリックできる状態)で
クリックしてもフォーカスが移らないようにしたいのです。
ToolBarのボタンみたいな感じです。
DelphiのSpeedButtonのようなコントロールがあればいいのですが・・。
WM_SETFOCUS を受け取った際に別のウィンドウに SetFocus するとかは?
>>956 C#でWindowsメッセージを扱ったことがなかったので、
ためしにEnterイベントで同じことをやってみたら思い通りに出来ました。
ありがとうございました!
958 :
デフォルトの名無しさん :04/11/13 17:10:57
フリーのPDF生成ライブラリにオススメはなにかありますか。 iText.NETはJ#ランタイムを入れなくてはならないらしくて、ちょっと躊躇中・・・
959 :
デフォルトの名無しさん :04/11/13 18:51:35
メインメニューの項目のショートカットキー項目にスペースキーなどが無いのですが、 これを追加するにはどうしたらよいのでしょうか?
すいません。
>>883 が紹介してくれましたやつで参考にさせていただきましたが
それぞれの環境でintarface nameをいちいち指定してあげなければいけないのは大変だなと思いまして
intarface nameを自動で取得したいのですが、どうやれば取得できるのかわかりません。
すみませんが、自動でintarface nameの取得の仕方をお教え願えませんでしょうか?
よろしくお願いします。
すいません。 スペルミスです・・・。 ×intarface ○interface
>>961 自動で、と仰る意味がよくわかりませんが。
Type.GetInterface メソッドとか如何でしょう。
>>961 はて、883のリンク先にinterface nameなんて用語出てこなかったが、インスタンス名のことでいいのかね。
GetInstanceNamesで取得したstring配列をチェックしてみれば大体傾向はつかめると思うんだが。
//ネットワークアダプタが複数ある可能性がある場合にどうするか、が問題だ。
>>963-964 亜rが問うございます。
あら・・・・
申し訳ありません。IntarfaceNameじゃなくてInstanceNameでした・・。
GetInstanceNameで取得できました!!
ありがとうございます。
しかし、ネットワークアダプタが2つある場合はどうしたらよいでしょう・・・。
本当にこれが問題ですね。
ちょっと考えてみます。
変換ミス・・・orz ありがとうございます、でした・・・。
967 :
デフォルトの名無しさん :04/11/14 11:34:19
/win32icon で設定したアプリケーションアイコンを プログラム内から取得するには、どうすればいいんでしょうか?
HashtableをReadonlyにするにはどうすればいいですか。
>>968 中身一個一個をReadOnlyにしたいの?
全体をReadOnlyにしたいの?
ArrayList.ReadOnly() のHashtable版みたいなものを言ってるんじゃないの? このあたり、const参照/ポインタがあるC++なら何も考えなくていいんだけどな
よくわからんがそれぐらい自分で作れ
public class TextBoxEx : TextBox { public TextBoxEx() { this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint,true); } } ってことをしたいんだが、派生クラスをつくらないでunsafeな感じにアクセスすることってできないかな? 邪道?
>>972 リフレクションを使えば可能だが、正直必然性が分からない。
邪道かと聞かれれば当然邪道。
974 :
デフォルトの名無しさん :04/11/15 16:24:51
Label コントロールの TextAlign プロパティにて MiddleCenter や BottomCenter などを指定しても 縦位置が中央寄せや、下寄せにならず常に上寄せになってしまうのですが、 縦位置を中央や下寄せにするにはどうしたらよいのでしょうか?
>>973 サンクスコ。
使うコントロールだけクラスを増やし、それにたいしてのアクセスのために
デザイナのコードとかいじらなくてはいけなくなるなぁとめんどうくさがっていました。
Windowsコントロールでコンソールを再現したいのですが どうしたらいいでしょう? FormにTextBoxを貼り付けたものを試したのですが、 テキストを追加して最後の行までスクロールする事が 出来ませんでした。 カレットまでスクロールするメソッドがありますが、 テキストを追加するとカレットが消えてしまいます。
Panelの境界線をFixedSingleの(凸凹してない)状態で、 さらに色を黒じゃなく別の色で表示したいけどやり方がわかないです。 3Dは嫌で、BorderStyleをNoneにしてPaintイベントでちまちまDrawLineとかやってみたけど、 パネルの上にさらにのってるパネルやコントロールのおかげで途中で途切れたりします。 なんかいい方法ないですかね??
>>974 > 縦位置が中央寄せや、下寄せにならず常に上寄せになってしまうのですが、
私の所ではならないんだが。
>>976 SelectionStartプロパティでキャレットの位置は動かせる。
>>977 > パネルの上にさらにのってるパネルやコントロールのおかげで途中で途切れたりします。
極めて真っ当だと思うんだけど……?
途中での意味が今一よくわかんない。
>>978 説明足りなかったす。
パネルやコントロールってののコントロールはとりあえずおいといて、
親パネルの上に貼った子パネルってのは透明の見えないパネル。
その子パネルの上に2つ3つコントロール配置して、親パネルのリサイズとかで子パネルを整列させてます。
なんで、親パネルにはボーダーがあって、その中をボーダーの無い
子パネルが親パネルのサイズによって配置替えしてる状態。
で、子パネルの背景色を透明にしてもみたけど、透明になってない部分があるのか、
部分的にボーダーが途切れちゃう箇所が出てくるわけなんですよ。
まだ解りづらいかな…日本語下手でスマソ
>>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 にすると必ず上寄せになってしまいます。
このあたり、何か御存知の方いらっしゃいませんでしょうか?
アドバイスよろしくお願いします。
>>967 WIN32 APIにそれらしきものがあった。
>>984 LoadImageだな。
ただし、/win32iconじゃなくて
.rcファイルをrc.exe(リソースコンパイラ)でコンパイルした.resファイルを/win32resで加えてそっちを参照する。
ちなみに.resは/win32iconも兼ねることができるから。
>>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 が有効にならない…。
アドバイスよろしくお願いします。
>>987 1.0で試して分かった事。
SlatStyle.SystemではTextAlignは垂直方向への配置以外は無視される。
1.0ではプロパティが完全に無視され、必ずContentAlignment.TopLeftとして扱われてしまっていたが、
そのバグを1.1で修正したのが>982の文章。
989 :
974 :04/11/16 10:08:52
>>988 ありがとうございます。私のところでは水平方向の配置は問題なく
行なえるのですが、垂直方向がどうしても上寄せ固定になってしまいます。
これは私の所の環境に問題があるのでしょうか?
みなさんの所では FlatStyle.System で垂直方向、水平方向共に
設定したプロパティが有効になりますか?
>>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 にする事により
ラベルコントロールがどのように変化するのかが見つけられませんでした。
何度もすみませんが、このあたり情報があれば教えて頂けないでしょうか?
初心者です。 #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までの意味はどういうことなのですか? よろしくおねがいします。
>>992 C#関係ないし…
っつーかC#のコードじゃないじゃん
>>992 それはC#じゃなくてC言語なんだけどな・・・
俗に言うバブルソート(交換方)のプログラム。
int score[K];
で0〜9の10個の配列を作成(#define K 10 の為Kは10と置き換えられる)
そして、最初のforでその配列のそれぞれにscanfを用いて、ユーザに数値を入力させる。
その後、その配列を比べて、小さい順に値を並べ替えている。
ちなみに、このプログラムはバグがある。
配列は0〜9の10個だが、最初のユーザ入力させる部分で、
カウンタが1から始まり、さらに i <= K で10まで処理させるようになっているが、
実際には配列の添え字は9までしかないのでエラーとなる。
998
アフォ ↓
↑馬鹿
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。