1 :
毛の生えたブリーフ :
03/03/09 20:53
削除依頼お願いします。
4 :
デフォルトの名無しさん :03/03/09 21:11
質問があるのですが IBMのノートパソコンでX22という型なんですが 画面が小さくなって中心に現れるようになって まわりが真っ黒になってしまいました。 壊れてしまったのでしょうか? 弁償しなければならないのでしょうか? ごめんなさい。。。
質問があるのですが IBMのノートパソコンでX22という型なんですが 画面が小さくなって中心に現れるようになって まわりが真っ黒になってしまいました。 壊れてしまったのでしょうか? 弁償しなければならないのでしょうか? ごめんなさい。。。質問があるのですが IBMのノートパソコンでX22という型なんですが 画面が小さくなって中心に現れるようになって まわりが真っ黒になってしまいました。 壊れてしまったのでしょうか? 弁償しなければならないのでしょうか? ごめんなさい。。。質問があるのですが IBMのノートパソコンでX22という型なんですが 画面が小さくなって中心に現れるようになって まわりが真っ黒になってしまいました。 壊れてしまったのでしょうか? 弁償しなければならないのでしょうか? ごめんなさい。。。質問があるのですが IBMのノートパソコンでX22という型なんですが 画面が小さくなって中心に現れるようになって まわりが真っ黒になってしまいました。 壊れてしまったのでしょうか? 弁償しなければならないのでしょうか? ごめんなさい。。。
やれやれ。
すべてがパーに
ここは く だ ら な い 奴 が し つ も ん す る ス レ ッ ド になりました
>>4 こういうネタもあるのか。勉強になるなぁ(w
プログラムにも女にも興味がある厨房ですが なんと昨日パチンコで8万円勝ってしまいました VS.NETとソープランドどっちがお勧めでしょうか?
>>10 取りあえず銭湯行ってから散髪屋。最後にユニクロと靴のヒラキ。
VSだな
20 :
デフォルトの名無しさん :03/03/13 00:01
Excel.Application xlsObj = new Excel.Application(); で生成したexcelオブジェクトを、そのままResponseに出力して クライアントのIEブラウザで読む方法ありませんか。 いったんxls.SaveAsしてResponse.WriteFileしてからファイルを消せばできるんですが、 ファイルの同期とかの問題もあるのでそのまま出力したい。
∧_∧ ( ´∀`)< ぬるぽ
∧ ∧ | | | |
(,,゚Д゚) .| | | |
/==づつ======| | | |=
〜( ノ .| | | | グチャ
ζ | |_..| |§,
., ,・刀慾δ;,,.': ;
,: 。'∽(__f_)(__f_) β 。,.・;
>>23
やめてくれ
26 :
デフォルトの名無しさん :03/03/14 20:24
AGE
ねえ、Graphics.DrawImageって 「ざけんなごるぁ!」ってくらい低速で正常なの? 32*32のタイルを64枚ほど並べた時点で処理に一秒くらいかかるんだけど・・・ もしかして、unsafeで直にがりがり書き込んだりするのが普通なんですか? 何のためのC#なんだか・・・
>>28 まあ
>>27 の気持ちは分かるけどね
俺も描画はPInvokeでやることにしてるし。
もういい! Direct Drawつかうもん!
今後DirectXになるんだし。
>>27 DirectX9入れればC#から使えるよん
>>32 やってみました。
パフォーマンスを測定したところ恐ろしい結果が出ました。
32*32のタイルを640*480の大きさのフォームに埋め尽くす作業にかかった時間
GDI+ 3.2秒
Direct Draw 0.003秒
アフォですか?
スピードが必須ならDirectX使え、ってことでいいんじゃない?
>>33 差が出なかったらDirectXの意味無いやん。
>>33 GDI+の方、もちろん裏画面使ったんよね?
38 :
デフォルトの名無しさん :03/03/22 03:40
厨房な質問ですいません。 class の宣言の前にアクセス修飾子が何も付いてない場合って private でしたっけ。protected でしたっけ。 よろしくお願いします。
>>39 神!!
本当にありがとうございました!!
>>38 一番外側のクラスの場合は、internal扱い。
インナークラスの場合は、private扱い。
>>40 おいおい。
「アクセシビリティ レベル」で確認しろよー。
|ほかの型の中の入れ子になっていないトップ レベルの型だけが、
|internal または public のアクセシビリティを持つことができます。
|このような型の既定のアクセシビリティは internal です。
|ほかの型のメンバである入れ子になった型は、次の表に示すように、
|宣言済みアクセシビリティを持つことができます。
|メンバとして属する型 | 既定のメンバ アクセシビリティ | メンバの許可される宣言済みアクセシビリティ|
(略)
|class | private | (略)
>>41 どうもありがとうございました!!
この文はコメントとして保存させていただきました!!
>>42 「アクセシビリティレベル」で検索すれば良かったんですか・・
「C# 修飾子 無い クラス」とかで検索かけたのですが
どうも自分の検索技術が厨房だったようです。申し訳ありませんでした。
>>43 保存せんでも、ヘルプに載ってる。ちょっとわかりにくいが。
アクセス修飾子の種類と意味を知っていればちょっとした実験プログラムで
動作確認もできるだろー。
ヘルプも嘘まじり、バグまじりだから、動作確認とって整合性
が取れているか確かめる癖を付けた方がいいぞ。
ちなみに41、42の発言は未確認だ。C#使いじゃないので。
>>45 アクセス修飾子の使い分けは本当に難しいです。
こんな夜中にもかかわらず
本当に的確なレスを返していただいてありがとうございました!
これからもっと勉強します!
>>48 タブを入れると開発環境でスペースに展開されるんじゃないかな。
漏れはSDK派なので自作のTabExpanderで展開してるよ。
Linuxのexpandコマンドの代わりだな。
・・・そういえばcygwin入れてたからexpandコマンドあったよ(自爆)
Webアプリケーションで、クライアント二人のオセロみたいなものは作れますか?
>>50 できないことはないが、即時性で問題ありだろう。
今ファイル操作をテストしてるのですが、 StreamWriter で float値をstring型で書き込んだファイルを、 StreamReader で読み込んだstringを、floatに変換したいのですが、 C言語で言う strtod(文字列をdouble型に変換) みたいな事を C#で出来ないのでしょうか? また、数値、文字列を含むファイルの読み書きで もっとイイ方法とかありますでしょうか?
自己即レスですが解決しますた、スマソ
>>52 解決したんなら解決した方法ぐらい示せよ。
Single.Parseで読み込んだのか?
キャストじゃ無理だっけ?
8ビットづつシフトしながらマッチングして加算しる。
57 :
デフォルトの名無しさん :03/03/24 18:09
CreateObjectはどうやったらできるの?
上記質問を補足します。 VisualBasicで参照設定なしで Dim enrl as Object enrl = CreateObject("CEnroll.CEnroll.1") のようにするとコントロールを名前で指定して実行時バインディングできますが、 同様なことをC#でやるにはどうしたらいいですか。
59 :
デフォルトの名無しさん :03/03/24 22:34
実行時に任意の文字列を名前のもつインスタンスを生成する方法はあるのでしょうか? Javaだと以下のようになると思うのですが、同じことをしたいのです。 「classname という名称のMyClass型オブジェクトのインスタンスを生成する」 Class cls = Class.forName(classname); obj = (MyClass)cls.newInstance();
>>57 なんで4時間半もあるのに何もしない?自分は一切動かないつもりか?
System.Reflection
てかsealedクラスってなんだよ! いや意味はわかったけど、Stringクラスsealedだから継承できねぇよ。 文字列操作機能追加したいのに・・・
>>61 文字列は不変なオブジェクトであるという大前提を利用して、
CLRは文字列を特別扱いして効率を上げている。
もしStringを継承できると、この「不変」の大前提が崩れてしまうため、
継承不可にしているらしいよ。
「プログラミングMicrosoft .NET Framework」著:Jeffrey Richter
のP256に書いてある。
>>文字列操作機能追加したいのに・・・
文字列を引数に取るstaticメソッドでいかが?
Javaも一緒<String
なるほど。要するに中身はまっとうなクラスじゃないってことね。 ま、自分の場合、数100KB以上の文字列、というかテキストバッファに 対して検索とかかましたいんだけど。 やっぱchar配列の参照を独自のテキストバッファ検索クラスの コンストラクタに渡すような形にするかな。 それが一番速そうだし。
>>65 検索だけならそれでもいいんだけどねぇ。
内容を変更するときが遅そう。
不変型だから新しくStringインスタンスを生成するとか書いてあるし。
StringBuilderにはIndexOfがないし。
結局、自分が望む物は自作でしか得られない気がしてます。
>>66 似非クラスなら、インスタンス生成も速いんでないの?
継承不可の縛りかけるくらいだから、パフォーマンスあがってないと意味ないし。
一回やってみればいいじゃん。
うぃ。とりあえずはStringとStringBuilderをうまく使い分けていこうかと。 今までMFCで作ってきたプログラムを移植してるんだけど テキストバッファ操作関連の処理が極端に遅くならないようなら OKってことでやってみます。
よくゲームとかで フォームの右上のXボタンを押すと 「終了しますか?はい/いいえ」とか出て、「いいえ」にすると フォームが閉じなかったりしますが、閉じなくするのは どうしたらイイんでしょう。
>>69 Form.Closingイベント参照。
それっぽいイベントを片っ端から見ていくくらいのことはしたまへ。
>>70 ありがとうざいます!
片っ端から診るとき、関係ありそうなモノは解説まで詳しく読むように気をつけます。
>>59 「アセンブリ」をキーワードにして検索してみなされ。
73 :
デフォルトの名無しさん :03/03/29 22:21
Javaには知的エージェントや知能プログラミングに関連する書籍があり、 AIへの応用が出来そうだという感触を持っていますが、C#はどうなのでしょう?
74 :
デフォルトの名無しさん :03/03/29 22:26
>>73 AIへの応用って。。。
技術的な層が違うからJavaをAIに応用っていうことからなんかおかしい。
JavaもC#も同じパラダイムの言語なので、AIのアルゴリズムを書くための言語としては大差ない。
75 :
デフォルトの名無しさん :03/03/29 22:30
>>75 あなたは、他の書き込みを読み込まずに記述するタイプの人口無能でつか?
77 :
デフォルトの名無しさん :03/04/02 23:14
デリゲートなんだけど・・・ 型宣言と実装定義(?)の名前の付け方にいつも迷います。 [型宣言] delegate void MyDelegate(void); [実装定義] void MyCallback(void) { // うんたらかんたら } うーん・・・
>>72 ヒントありがとうございます。
インスタンスの名前で区別するのではなく、それらをHashtablで
管理するクラスを作ることで、目的は果せるような気がしてきました。
しかし、インスタンスに名前をつける方法も理解するよう努めます。
80 :
デフォルトの名無しさん :03/04/04 05:06
文字を含んだ画像から文字の部分だけを取り出して、string型で保存するにはどうしたらいいですか?
ネタにしても酷過ぎる
>>80 2階微分してエッジ抽出したのち文字パターンと照合
85 :
デフォルトの名無しさん :03/04/08 00:20
ボタンとかキー操作によってテキストの表示内容が 頻繁に変更されるようなウィンドウって MFCだとOnPaint()に直接描画処理を書かず 入力があったときは仮想ウィンドウのDCに書いて OnPaint()では仮想ウィンドウから実際のウィンドウへ 単純にコピーするだけっていう手法と取るじゃないですか。 C#の場合は仮想ウィンドウとかどうやって作るんですか? というかもっと別のやり方がある?
86 :
デフォルトの名無しさん :03/04/08 01:36
>>85 private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Image image = new Bitmap(100, 100);
Graphics g = Graphics.FromImage(image);
g.DrawString("text", this.Font, Brushes.Black, 0, 0);
g.Dispose();
e.Graphics.DrawImage(image, 0, 0, image.Width, image.Height);
}
こんな感じかな?
もっといい方法あるかは知らない…
>>73 C#がJava以上に学術研究で認知されればいいけど・・・・
88 :
デフォルトの名無しさん :03/04/08 02:21
メンバ変数を50くらいに増やしたら 突然、インテリセンスが利かなくなったんだけど つらいなぁ。入力中もキーワードが青じゃなくなってるし...。
90 :
デフォルトの名無しさん :03/04/08 03:00
>>88 それうちの環境で良くある
VSを起動し直せばいい
>>86 おお、サンクス!
Bitmap側じゃなくGraphics側にメソッドがあったのか。
ControlクラスにCreateGraphics()ってのあって
これ使えばOnPaint()以外でも描けるみたい。
こっちも試してみます。
>>88 そもそもメンバ変数50個はクラスの設計的に問題ありかも。
ちなみに自分もそこまで増やしたこと無いけど
インテリきかなくなるときちょくちょくあります。
迷わず再起動。
>>88 俺も、もっともメンバ変数の数とは無関係のような気がしないでも無い。
>>91 フォームクラスじゃ100は当たり前じゃないか?
KeyDown で Enter キーの場合、次のコントロールへ移動するように したいのですが、次のコントロールへの移動は ctl.Focus() でできますが、 その時に Beep 音がなってしまいます。 これを消す方法がみつかりません。御存知の方、教えてください。
>>92 自分はわりとまめにクラスにまとめちゃうのでそこまではいかないかな。
intやstringみたいなプリミティブな型のメンバ変数が50もあったら
自分の頭じゃ管理しきれなくて、もうだめぽです。
・・・ってOOPスレ逝ってきます。
95 :
デフォルトの名無しさん :03/04/11 05:45
TextBox クラスのインスタンスに RichTextBox クラスの Redo メソッドを実装するには どのようにコーディングすれば良いのでしょうか。 System.Windows.Forms.TextBox TB = new System.Windows.Forms.TextBox(); System.Windows.Forms.RichTextBox RTB = new System.Windows.Forms.RichTextBox(); private void MIRedo_Click(object sender, System.EventArgs e) { if(TB.CanRedo == true) { TB.Redo(); } } TextBox クラスには Redo メソッドや CanRedo プロパティが無いためにコンパイルが通りません。 TextBoxBase クラスにはこれらのメンバがありませんでした。 RichTextBox クラス固有のもののようです。 よろしくお願いします。
>>95 TextBoxはUndoしかないよ。
実装するんなら、自前でやるしかないと思う。
ん?レス書いて思ったけど、 読み返してみたら意味がよくわからん。 >>TextBox クラスのインスタンスに RichTextBox クラスの Redo メソッドを実装するには RichTextBox使えばいんじゃない?
>>96-97 VC#を買ったのですが個人的に使い辛く、独自のエディタを作ろうと思いました。
参考書にワープロソフトはプログラミングに適さないと書いてあったので
RTF をサポートしてある RichTextBox よりも TextBox の方が良いと判断し、質問させていただきました。
やはり自前で作るしかないですか……海外にサンプルが無いか調べてみます。
どうも有り難うございました。
>>98 チョト大きいけど、SharpDevelopっていう
オープンソースなC#開発環境がある
それが参考になっていいかも…?
>>95 そもそも、いままでどんなエディタ使ってきたの?
本当にしょぼい質問ですが・・・ インデックスカラーの画像ファイルをGraphics.FromImageで Graphicsオブジェクトに代入することはできないのですか?
102 :
デフォルトの名無しさん :03/04/13 19:30
string url ="test"; string sR = "^t([^t]+)t$"; Regex r = new Regex(sR,RegexOptions.Compiled); Match mat = r.Match(url); MessageBox.Show(mat.Result("$0")); esと表示されると思ったのですが、 testと表示されます。 何がいけないのでしょうか?
$0 -> $1 でOKでした。 前方参照構成体が全体にもある罠でした。
104 :
デフォルトの名無しさん :03/04/13 20:34
>>98 RichTextBox自体はワープロ風アプリ専用というわけでもないよ。
106 :
デフォルトの名無しさん :03/04/15 15:31
C#からOCXって使えますか
>>106 使える。
VS.NETなら、ツールボックスで右クリックして「ツールボックスのカスタマイズ」
108 :
デフォルトの名無しさん :03/04/16 09:35
間違えてくだすれC#part1のほうに投稿してしまいました 改めて質問させてください richTextBox1.LoadFile(openFileDialog1.FileName); としてみたのですが >'System.ArgumentException' のハンドルされていない例外が system.windows.forms.dll で発生しました。 >追加情報 : ファイル形式が無効です。 とエラーがでてテキストファイルが読み込めません リッチテキストファイルは読み込めます どうすればrichTextBoxでテキストファイルを読み込めますか?
109 :
デフォルトの名無しさん :03/04/16 10:11
>>108 // Load the contents of the file into the RichTextBox.
richTextBox1.LoadFile(openFile1.FileName, RichTextBoxStreamType.PlainText);
ヘルプに載ってる。
これでどうでしょか
>>109 うまくいきました
ヘルプを見落とすなんてお恥ずかしい限りです
ありがとうございました
111 :
デフォルトの名無しさん :03/04/16 23:27
GraphicsにROP演算が見あたらないのですが・・・ ウィンドウに描画済みのテキストに対して 矩形で反転描画かましたいのですが、やり方がわかりません・・・
>>111 ControlPaintクラスのDrawReversibleFrameメソッドあたりとか。
あるいはAPIのSetROP2あたりで。
113 :
デフォルトの名無しさん :03/04/17 00:30
C#でIBM MQSeriesって使えますか .NetVisualC++じゃないと無理?
MessageQueueというクラスもあるけど、 あれはMSMQでしか使えないのかな?さっぱりわからん まわりもわからない人ばかり
>>112 そんなクラスがあったのか・・・いろいろおもろいメンバ発見。
こちらの使用用途としてはFillReverseRectangle()となりそうです。
ありがとうございました。
(^^)
117 :
デフォルトの名無しさん :03/04/18 13:55
昨日、C#買ったんですけど、ポスター貼らないとダメですか?
つまんね。
∧_∧ ( ^^ )< ぬるぽ(^^)
VBからC#に移行したのですが ファイルリストボックスとかイメージボックスがないんですが・・・ あと、死滅するってどういうこと? せっかく買ってきたのに・・・・
>>120 >>せっかく買ってきたのに・・・・
あのスレは気にすること無いと思う。
>>ファイルリストボックスとかイメージボックス
VB知らないんで調べてみたが、それ系はないみたい。
ms-help://MS.VSCC/MS.MSDNVS.1041/vbcon/html/vxconChangesToFileListBoxControlInVisualBasicNET.htm
どうしても欲しければ、自作するかコンポーネント探すか。
>>121 励まし&わざわざ調べて頂いてありがとうございます
いろんな要素が混ざってるのがC#だと思うのでこれでやってみようと思います
とりあえず、勉強がてらVBで作っていた画像ビューアーをC#用で作ってみようと思い
フォルダを指定しないとだめなのでファイルリストボックスがいるんですが
変わりにFolderNameEditorなるものがあるようなのでこれ使ってみます(さっぱり意味わからんけど)
>>123 ここわかりやすいですね!
お気に入りにいれちゃいました!情報thx!
C#なかなかいいっすねー こんな機能があったらなあって思っていたのが追加されてたりして 開発環境がかなり便利になってる。 C#かっくいい!!
126 :
デフォルトの名無しさん :03/04/26 14:10
カラアゲ
127 :
デフォルトの名無しさん :03/04/26 14:19
>>125 >こんな機能があったらなあって思っていたのが
例えばどんな機能?
128 :
デフォルトの名無しさん :03/04/26 14:27
以前、MSのC#のコーディングルール(命名規則)のページを見た記憶があって、 今探しているのですが、なかなか見つかりません。 ご存知の方いますか?
>>127 ソースをマウスホイールでスクロールできるようになった
フォームリサイズできないように設定できるようになった
ヘルプが見易い(プロパティ一覧など)
}付けると自動で整列してくれる
関数が使いやすい
オブジェクト指向かっくいい
>>131 それほとんどIDEの話じゃないか。
C#の追加された機能を答えないと。
>C#なかなかいいっすねー
>こんな機能があったらなあって思っていたのが追加されてたりして
プロパティとインデクサが俺は好き。
#当の本人ではないが。
>>132 >開発環境がかなり便利になってる。
と書いてあるじゃん。
ま、C#そのものと切り分けられていないが、旧VB使いの場合、
開発環境と言語を切り離せないからそういう思考なんでしょ。
> ソースをマウスホイールでスクロールできるようになった IntelliPointくらい入れろって…… OS標準にすべき機能をわざと別にして付加価値付けてるだけなんだから
>>134 >>開発環境がかなり便利になってる。
>と書いてあるじゃん。
分かってるって。
「開発環境がかなり便利になってる」⇒「C#なかなかいいっすねー」
なのか?だったら「COBOLなかなかいいっすねー」とか「C++なかなかいいっすねー」
ってのも成り立つぞ。
>>136 134
>旧VB使いの場合、
>開発環境と言語を切り離せないからそういう思考なんでしょ。
ってな話の上では、
136
>だったら「COBOLなかなかいいっすねー」とか「C++なかなかいいっすねー」
>ってのも成り立つぞ。
そういうことでしょう。
「C#なかなかいいっすねー」は要は「VC#なかなかいいっすねー」の意味で
言っているだろうって話。(VS.NET上でC#かもしれんが、この場合でも同じこと)
漏れはテキストエディタ+コンパイラでやっている身だが、
120の視野にはこういう方法でもC#で開発できるっていうのは含まれてないと思う。
よって、開発環境もその上で使用する言語もいっしょくたと。
>>137 なるほど。「得意な言語はJavaとVC++です」みたいなもんか。
ちゃんと「VC#いいっすねー」って言ってくれないと分からんよ。
ちなみに漏れもテキストエディタ+コンパイラ+automake,autoconf
VC#使うとWindowsOnlyになってしまうしな。
それはともかく、C#はプロパティとデリゲートがなかなかいいっすねー。
でも.NETはSystemWindows.Formsのクラス設計に時々凹みません?
139 :
デフォルトの名無しさん :03/04/27 22:35
当方VC#.stdなんだが dllって作れるの? やり方載ってるサイト紹介してください
>>139 以前C#関係のスレでハッケソしたのをコピペ
> ■ Visual C#.NET Standard で DLLをビルドする方法。
>
> (1)普通にプロジェクトを作る
> (2)プロジェクトを保存したフォルダの「プロジェクト名.csproj」をテキストエディタで開く
> (3)Settings要素の OutputType属性を "Library"に書き換える
>
> これでビルドするときに Main()がなくても怒られない。
141 :
デフォルトの名無しさん :03/04/28 18:48
142 :
デフォルトの名無しさん :03/04/28 21:33
COMというのをツールボックスのカスタマイズで追加することができたんですが、 これをフォームに追加しようとすると、 「入力文字の形式が正しくありません」のエラーがでて貼り付けできません。 もの自体の中身はさっぱりわからないのですが、 これは提供元に作り直してもらうしかないのでしょうか?
143 :
デフォルトの名無しさん :03/04/28 21:36
>>COMというのを それはCOMと言わない。それをCOMだと誰に習ったんだ?
144 :
デフォルトの名無しさん :03/04/28 21:52
DataGrid上で文字列データを入力するとき、テンキーの+-キーを押すと フォーカスがセルから外れてしまいます。 普通に"1+1"というような文字列をセルに入力したいので、 フォーカスは変わらないで欲しいのですが…。 ちなみにフルキー側の+-キーだと大丈夫です。
145 :
(´・ω・`) :03/04/28 22:59
HTMLの構文強調の出来るエディタを制作しようと次のようなコードを書きました。 しかし、テキストの選択と色の変更の処理に激しく時間を取られる上に 表示がテキストの選択を繰り返して見栄えが悪すぎます。 問題箇所の高速化もしくは選択表示の回避方法はありますか? public static void ChangeTextColor(RichTextBox argText) { Regex r = new Regex(@"<[^<>]+>", RegexOptions.IgnoreCase | RegexOptions.Compiled); String text = argText.Text; for (Match m = r.Match(text); m.Success; m = m.NextMatch()){ argText.Select(m.Index, m.Length); argText.SelectionColor = System.Drawing.Color.Blue; } }
146 :
デフォルトの名無しさん :03/04/29 00:59
ヒント4行目
>>145 選択非表示は、MFCの場合はHideSelectionという関数があったんだが。。
もしするなら、直接RTFで書いた方が速い気がする。
RTFフォーマットのことは知らないが…
そのコードだとどうやっても早くならないと思う。
自分も同じ事をやろうとしたけど、結局自作した。(;´д⊂
148 :
(´・ω・`) :03/04/29 03:58
>>146 推測なんですけどプロパティへのアクセスは遅いから、Stringに深くコピーしろってコトかな?
>>147 C#のHideSelectionはプロパティ、しかもコントロールがフォーカスを失ったときに
強調表示をそのままにしておくもの…ということでダメっぽいです。。
選択→色変更の繰り返しからRFTフォーマットのデータ作成→描画の検討をしてみます。
二人とも、随分参考になりました。ありがと。
俗に言う、コンポの拡張限界ってやつですな。
150 :
デフォルトの名無しさん :03/04/29 08:33
自アプリケーション以外の実行ファイルや フォルダなどのアイコンを取得するには どうすればいいですか?
OpenFileDialogでファイルのパスを取得するところまではできました。 そのあとどうすればいいかが分かりません。誰か助けてください
>>152 ありがとうございます。今から解析します(;^-^)
それにしてもここでコードを提供してる人はすごいですね…
154 :
デフォルトの名無しさん :03/04/29 13:16
HttpContext.itemsに引き継ぎたいデータの参照を格納して、 Server.Transferで遷移してデータの引継ぎを行ってるんですが 今の画面と同じ画面に遷移すると、消えてnullになってしまいます。回避できませんか? ViewStateが影響してるような気もしますが。。。
156 :
デフォルトの名無しさん :03/04/29 19:20
DataSetをForm1に貼り付けてDataGridで編集しております。 Form1.dataSet1に新しいテーブルを追加して、それをForm2.dataGird1で編集しようと 考えたのですが、IDE上ではForm2からForm1.dataSet1を参照できないようです。 (パブリックにしてもダメでした) Form2.dataGird1.DataSet = Form1.dataSet1;とかコーディングすれば いいのでしょうけれど、IDE上でうまくやる方法というか、 本来ならどうやるのがスマートなんでしょうか?
プロジェクトに「新しい項目の追加」でデータセットを追加してみました。 elementsというのをdataSetにドラッグ&ドロップしてみると、 テーブルのリレーションが作れるんですね。 最初からこれを使えばよかった…。 しかしここで作られたデータセットは単なるスキーマでしかないようなので どこかでインスタンス化しないといけないのかな。 Form1とForm2から参照したいから、グローバルのどこかにおかないといけないけど、 そうするとたぶんコレクションエディタが使えないんですよね…。 どうやったらForm1.dataGrid.dataSource = new Dataset1;を IDEに自動出力させて、コレクションエディタと連携できるようになるのでしょうか?
158 :
デフォルトの名無しさん :03/05/01 13:38
初心者的な質問で申し訳ありませんが。 データベースにPostgreSQLを使用してOleDb接続でアクセスすることは可能なので しょうか? C#でのPostgreSQLへの接続方法を探してみましたが、見つかりませんでした。 データベースは既にできております。 宜しくお願い致します。 OS Windows2000 システムpostgres7.3 ホストbsd テーブル名 f10
159 :
デフォルトの名無しさん :03/05/02 16:01
ファイラーを作ってみようかと思ってます。 コンボボックスにpathを入力してリストビューにファイル一覧をだしたいのですが pathを入力しリターンを押してもイベントを起こすことができなくて困っています。 comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)を使って コンボボックスのリスト内に登録してあるpathをクリックする場合は正常動作しました。 pathを入力してリターンキーでイベントを起こすにはどのようにすれば良いでしょうか。
KeyDownイベントでできるでしょ。 private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if ( e.KeyCode == Keys.Enter ) { 処理 } }
161 :
デフォルトの名無しさん :03/05/03 00:01
早速やってみます。ありがとうございました。
162 :
デフォルトの名無しさん :03/05/03 00:07
25歳。
去年まで金無し君だったけど、オンラインカジノとパチンコで
二年で350万貯めた。一度やってみなよ。
初回のみだけど、1ドル以上のチップを買えば30ドル(4000円くらい)貰える。
もらうだけもらってプレイせずに換金することもできるし、ルーレットで赤か黒に
思い切って賭けてしまえば50パーセントで二倍になる。
金なきゃオフラインでゲームすればいいだけ。暇つぶしになる。
ビデオポーカーとかスロとか色々あるのでマジでお勧め。
http://www.imperialcasino.com/~1kl5/japanese/
163 :
デフォルトの名無しさん :03/05/03 00:43
できませんでした、とほほ。こんな風にやってみたです。 private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e) { textBox1.Text = comboBox1.SelectedItem.ToString(); } private void comboBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if ( e.KeyCode == Keys.Enter ) { textBox1.Text = "enter"; } else { textBox1.Text = "etc"; } } 結果はかわらず、マウスでコンボボックスのリストから選択するとokで コンボボックスに文字列を入力してリターン(エンター)ではtextBoxの内容は変わりません。 comboBox1_KeyDown を Form1 や textBox1 で試してみましたが同じでした。
165 :
デフォルトの名無しさん :03/05/03 02:47
Visual C#の質問なんですが、Standardエディションでも商用配布可能なんでしょうか? 確か昔は「アカデミックでは商用配布不可」という制限があったような気がするんですが、最近の事情がわからんです。 C# Standartdエディションのパッケージ裏面を見ると「商用アプリの開発にはVisual Studio プロ以上を推奨」 みたいな事が書いてあったんですけど…
166 :
デフォルトの名無しさん :03/05/03 03:01
>>163 さん
あわわ、なぜか出来ません ; ;
私だけ見たいですね。。。
ソースを削除していなければ頂けないでしょうか。
照らし合わせて原因を探したいです。
>>165 Standardとアカデミックは別もんだからね。
168 :
デフォルトの名無しさん :03/05/03 03:18
>167 んでは、今でも”アカデミックでなければ”商用配布可能、という事ですか?
>>166 164ではないが、サンプル
using System;
using System.Windows.Forms;
using System.Drawing;
class Form1 : Form
{
static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
ComboBox cb = new ComboBox();
cb.KeyDown += new KeyEventHandler(ComboBox_KeyDown);
cb.Location = new Point(0, 0);
cb.Width = 250;
Controls.Add(cb);
}
private void ComboBox_KeyDown(object sender, KeyEventArgs e) { ComboBox cb = (ComboBox)sender; if (e.KeyCode == Keys.Enter) { MessageBox.Show(cb.Text); } } }
171 :
デフォルトの名無しさん :03/05/03 04:00
>>166 comboBox1.KeyDown += new KeyEventHandler(comboBox1_KeyDown);
って記述はしているのかな?
していない気がするんだけどな。
僕は164じゃないけど。
イベントハンドラに登録しないとそのイベントは実行されないよ。
172 :
デフォルトの名無しさん :03/05/03 04:07
わぁできました〜。ありがとうございますっ。 cb.KeyDown += new KeyEventHandler(ComboBox_KeyDown); これを書いてなかったので無反応だったです。 いままではデザイン上のコントロールをダブルクリックして 自動でコードに追加される物しか使っていなかったので気がつきませんでした。 教えてくださった方々に感謝です。
>>172 それも手書き?
プロパティのところの雷マーク押して
KeyDownイベントのところをダブルクリックすると
>>163 のうち、書くのはif文だけで済む。
知ってたらスマソ
174 :
デフォルトの名無しさん :03/05/03 10:56
>>173 さん
ぶっ。手書きでした。。
いやーっVisualStudioも言語も初めてなものでっははは。・・・ぐす。
雷やってみした。便利ですね〜。便利すぎて覚えるの大変です〜。
コンボボックスの件も無事解決したのでいまはリストビューにどうやったら高速に
ファイル一覧を表示させることができるか調べてます。
8000ファイルくらいあるディレクトリをリストビューに入れるのに
ファイラーによって1分くらい掛かったり、2秒で開けたりしますね。
ちょっと面白くなってきました^^
175 :
デフォルトの名無しさん :03/05/03 11:37
protected void FileDel() { FileInfo fi=new FileInfo(c:\\test.jpg") Debug.Writeline(fi.Attributes); //Archiveになってます fi.Delete(); } てな感じでファイル削除したのですが、 他のプロセスでアクセスできませんとでます。 FileStreamとか使ってるわけでもないし ファイル一覧をListBoxに表示して、その画像を 見ながらDELキーで削除したいんですが。 どうすればいいでしょうか?
176 :
デフォルトの名無しさん :03/05/03 11:38
×てな感じでファイル削除したのですが、 ○てな感じでファイル削除したいのですが、 削除の仕方がわかりません
>>175 勝手な予想だけど、ピクチャーボックス使用しているとして、
pictureBox.Image = new Bitmap("c:\test.jpg");
とかしていると、Imageのハンドルが開いたままだから削除できない。
178 :
デフォルトの名無しさん :03/05/03 12:01
>>177 そうです、ピクチャーボックスを使用していて
画像みながら削除したいのです。
>Imageのハンドルが開いたままだから削除できない。
ハンドルを閉じる方法ってあるのでしょうか?
もしくはソフト終了後でないと削除できないのでしょうか?
>>178 Image image = new Bitmap("c:\test.jpg");
Image clone = (Image)image.Clone();
image.Dispose();
pictureBox.Image = clone;
で平気と思う。
180 :
デフォルトの名無しさん :03/05/03 12:33
protected void PicView() { Image image = new Bitmap(fileListBox.SelectedItem.ToString()); Image clone = (Image)image.Clone(); image.Dispose(); pictureBox1.Image=clone; this.SetClientSizeCore(this.pictureBox1.Width, this.pictureBox1.Height); } protected void DelFile() { FileInfo fi=new FileInfo(fileListBox.SelectedItem.ToString()); fileListBox.Items.RemoveAt(fileListBox.SelectedIndex); pictureBox1.Image.Dispose(); fi.Delete(); } Image image = new Bitmap("c:\test.jpg"); Image clone = (Image)image.Clone(); image.Dispose(); pictureBox.Image = clone; これだけだとだめでDelFile()メソッドでpictureBox1.Image.Dispose();もやってやっと削除できました。 しかし、一番先頭のファイルを削除する場合やはり「他のプロセスで使用中」とでます。 すんなり行かないものっすねー。VBだと簡単だったのに
>>180 ゴメンImage.Cloneじゃ駄目みたいね
Image image = new Bitmap("C:\test.jpg");
Image clone = new Bitmap(image, new Size(100, 100));
image.Dispose();
こうして作成し直すと大丈夫。
182 :
デフォルトの名無しさん :03/05/03 16:24
WebRequestで質問です。 ヘッダを上手く設定出来ませぬ System.Net.WebRequest Req = System.Net.WebRequest.Create(URL); Req.Headers.Set("UserAgent","testes"); ↑じゃダメなのでしょうか
>>182 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
req.UserAgent = "aaa";
>>183 上手く逝けました
ありがとうございました。
185 :
デフォルトの名無しさん :03/05/04 03:56
>>181 それでもだめでした・・・
一回だけ表示したものなら削除できるのですが
何度か表示した画像を削除するとプロセス使用中になります
ん〜むずかしー
もうちょっと調べて見ます
いろいろありがとうございました
>>185 public Bitmap(Stream);
でいけるだろ。Streamは使い終わったら閉じろよ。
くだらないC#のスレッドってここですか?
いえいえ消化不良でくだしてしまったC#のスッドレでございます
どんなに礼儀正しいC#プログラミングに関する質問でもくだらないレスしかしてはいけないスレッド
190 :
デフォルトの名無しさん :03/05/04 10:26
数値123456789を文字列123,456,789としたいのですが ToStoringで"###,###,##"とやると数値0のとき表示されなかったり "n"とすると123,456,789.00と小数点が付いたりしてしまいます。 "c"にすると\123,456,789に・・・。 ToStoring("?")には何を入れればよいのでしょうか
>190 ###,###,#0 は?
192 :
デフォルトの名無しさん :03/05/04 10:56
>>191 できました。
でも"###,"を桁数分かいておかないと 123123,123,123 みたく
途中から","が付かなくなってしまいますね。
ちょっとスッキリしないですが仕方ないのかな。
ありがとうございました。
スッキリしたいなら自分で変換させればいいと思うよ
ToString("N0") ならスッキリ
195 :
デフォルトの名無しさん :03/05/04 12:42
196 :
デフォルトの名無しさん :03/05/05 15:03
DataGrid+DataSetを使ったスタンドアロンアプリ(非DB接続)を作っていますが、 DBに対する基礎知識が無くてうまく作れません。 テーブルが1つだけのときはなんとかうまくいくのですが テーブルが複数になるとさっぱりわかりません。 リレーションを繋いだときとか、DataGridが期待通りの動きをしてくれなくて…。 なんかツリービューみたいなのが出るし。 いいサンプルとか、解説してあるサイト、書籍などがありましたら教えてください。
197 :
デフォルトの名無しさん :03/05/05 19:28
本に書かれているのを参考にしているのですが、どうもうまくいかないので質問させてください。 絵を.resourcesファイルから読み込みたいのですが、 private void Form1_Load(object sender, System.EventArgs e) { ResourceManager rm = new ResourceManager("test",Assembly.GetExecutingAssembly()); Bitmap b = (Bitmap)rm.GetObject("testbitmap"); this.pictureBox1.Image = (Image)b; } のようにすると「指定されたカルチャ(またはニュートラルカルチャ)に必要なリソースがアセンブリに 見つかりません」とか言われて読み込めません。 コマンドラインで/res:を使ってやるときちんと絵が表示されることは確認できました。 test.resourcesはForm1.csと同じところに置いてあります。 ビルドアクションも「埋め込まれたリソース」になっているのに・・・ 何がおかしいのでしょうか?
>197 試してみたけど、よくわからん。 System.Resources.MissingManifestResourceException発生時のダイアログに locationInfo: <null> とあるのがポイントっぽいが… とりあえず、public ResourceManager(Type);を試してみてはいかがかと。
199 :
デフォルトの名無しさん :03/05/06 00:05
C#でoo4oでOracleに繋ごうと思ったのですが、 C#自体さっぱりわからないのでまったく進みませんでした。 検索しても、どうもC#関連のサイトが少ないみたいで 探せませんでした。 VC6とVB6ならわかるので C#での接続方法だけでもわかれば そこからなんとなくいけるかもしれないと思っています。 C#でのoo4oを用いたOracleへの接続方法解説している サイトとかあったら教えてもらえないでしょうか? 勘でC#いじくりたおしたのですがさっぱりわかりませんでした。 よろしくお願いします。
>>199 C#の文法を知りたいのか、
ライブラリ関係を知りたいのか、
ソースが欲しいのか。
>200 説明不足すみません。 文法はそのうちわかると思いますので結構です。 必要なライブラリ関係の簡単な解説、 またそれを使っているコードなどがあればベストと思っています。
202 :
デフォルトの名無しさん :03/05/06 14:52
タブブラウザを作っています。
タブの追加や削除を頻繁に繰り返すと閉じるボタンを押しても何も反応しなくなります。
その際、閉じるボタン以外は問題なく動作するのですが
閉じるボタンが利かなくなるタイミングが決まってなく例外も返しません。
対処方法をご存知の方がいましたらよろしくお願いします。
private void menuItem55_Click(object sender, System.EventArgs e) // タブを閉じる
{
int i = tabControl1.SelectedIndex;
// public System.Collections.ArrayList tabPageList = new System.Collections.ArrayList();
tabPageList.RemoveAt(i);
tabControl1.TabPages.RemoveAt(i);
}
このページを見てタブページを削除する前にタブページのフォーカスを移動させてみましたが効果がありませんでした。
http://www.users.gr.jp/ml/archive/cs/1543.asp
>>202 あ、あくまでも一時的な回避方だから。
.NET Framework 1.1で、直ってるらしいような書き込みは見たけど。
C# で HTML を表示するにはどれを使えばよいのでしょうか。 MSHTML を COM で取り込んで。ってのは分かるんですが、.NET Framwork の部品 として用意されていないのでしょうか。 なんか、ものすごく簡単なことを見落としているようなので。 参考になる URL でもかまいません。
206 :
デフォルトの名無しさん :03/05/06 18:14
リストビュー内のアイテムインデックス1と2をコードで選択状態にするには どないすれば良いんだべ?
あげてもた。すみましぇん。
>>206 ListViewItem item1 = listView.Items[1];
ListViewItem item2 = listView.Items[2];
item1.Selected = true;
item2.Selected = true;
209 :
デフォルトの名無しさん :03/05/06 18:52
ありがとう。やってみま〜す!
210 :
デフォルトの名無しさん :03/05/06 19:20
これからC#を勉強したいのですが、みなさんはどこで知識をつけたのですか? 今の仕事も辞めるつもりでいます。 1ヶ月でも1年でも確実にマスターしたいのですが、いい方法はありませんか? ちなみに、他の言語はできません。 C#から勉強しても大丈夫でしょうか。
仕事しながらでも1日1時間あれば1ヶ月でマスターできるよ。 教えてくれる人が身近にいれば。
>>211 >>212 レスサンクスです。
ちなみに身近でC#出来る人はいませんw
C#購入したのですが、他の言語も未経験でまったくさっぱりの状態ですw
専門校にでも行こうかと考えているのですが、C#を教えてくれるところって少ないですね(鬱。神戸なんですが。
JAVAとか、CとかVCはよく見かけますけどね。。。
>>212 弟子にしてください。
(マジレス)
215 :
デフォルトの名無しさん :03/05/06 20:17
>>214 本当にどうもです。
今の仕事の都合ですぐには無理なんですが、
7月頃から、学校にいくなり仕事をやめるなり本格的に始動する予定です。
それまでに色々と今調べてる真っ最中です。
サイトの紹介ありがとうございます。
参考にさせてもらいます。
えっと、 >199なのですが、 不可能なのしょうか。。 C#のことよくわかってないので。。 可能ならアドバイスいただけないでしょうか。 接続部分だけで結構ですのでよろしくお願いします。。
こちらも答えておくんなまし…。 フォームに貼り付けたDataSet1つでアプリのデータを管理するのは 難しいらしいということは解ってきました。 どこかにメインとなるDataSetをDB代わりに置き、 フォームには編集・表示用のDataSetを置いて、 メインのDataSetを編集するというのがよさそうです。 しかし書籍やネットではアダプタを使ってDBを読み書きする方法は書いてあっても、 DataSetだけで完結した(DBに接続しない)方法については書かれてません。 あと別件ですが、DataGridのセルをComboBoxにすることはできないのでしょうか? チェックボックスはあるようですが…。 たとえば、CDのアルバムのテーブルと、アーティストのテーブルがあって、 CDのアルバムテーブルをDataGridに表示して、アーティスト名をアーティストのテーブルから ComboBoxで選択したいのです。 やっぱりデータ入力用のフォームを別途作るしかないのでしょうか?
>>213 言っとくけど弟子って住み込みの弟子だよ?
伝統芸能の世界を想像してくれ。
師匠は弟子の最低限の衣食住の面倒は見るけど
給料なんか一銭もないよ。
極端な話、宗教に出家するようなもんだ。
寄付を要求しないのと逃げても追わないとこは違うが。(w
俺は学校出てそのまますぐ就職するような普通のやつには
さんざん期待して何の見返りもなくて失望し続けてきた。
プログラムの才能がないって自覚したんだったら、
嫁でも貸してくれたら帳消しにしてやるのに。
だから仕事辞めてC#に打ち込むって心意気は買った。
でも正直な話、一日中C#漬けヒッキー生活で、C#の達人になっても、
後が続かないと思うけど見通しはあるの?
C#プログラマーの求人は現状ゼロに等しいし、
今後も増えるかどうかは予想も付かない。
やるとすればC#本の執筆くらいかなあ。
でもそんなの出した出版社が赤字になるようなジャンル。
それだったらリアル土方の方がまだ安定してると思う。
本気でC#で仕事を探すくらいならリアル土方を勧める。
ガテンを買いにコンビニに急げ!
219 :
デフォルトの名無しさん :03/05/06 22:50
.NetのVisualC++で作ったdllのchar*型引数が C#ではsbyte*型になってしまい、unsafeだのfixだので大変。 string型で処理できる方法は無いもんかねー?やっぱ無理かねー?
>>219 LPCTSTR型じゃなかったの?bu5h-hmd(ham)君。
MLは2chじゃないんだから実名名乗れよ。
分かったらもう2度とマルチなんかすんなよ。
>>205 > MSHTML を COM で取り込んで。ってのは分かるんですが、
それで正解です。Frameworkコアには用意されてません。
VJ#を入れて、vjswfccw.dll を使うとかいった裏技(?)もありです。
>>221 ありがとう。
textBox のプロパティとかに隠れているのかなとも思ったんだけど。
223 :
デフォルトの名無しさん :03/05/07 05:02
jpgに自アプリを関連付けさせる方法おせえて
リストに800データくらい入れてるんですけど 入れるのに2分くらいかかります。 入れた後もドラッグしてスクロールさせると 表示がついてくるのが遅いです。 これではつかいものにならないので はやくなるプロパティとかおしえてください?
別に遅くないけどな。メモリ足りないとか。
226 :
デフォルトの名無しさん :03/05/07 08:50
遅いと言えば、C#で組んだHelloWorldは起動が激しく遅いです。 連続して起動すると2度目からは一瞬で起動するのですが。 CLRをロードする関係なんでしょうが、 初回起動時だけはJavaのSwing以上の重さと言うのは… こういうもんなんでしょうか?
そういうもんなんDEATH
>>226 スタートアップに常駐型hello,world入れとくとか(藁
>>228 Longhornからそれと似たような状態になるから心配するな
というか次世代Windowsでは起動時に勝手にロードされるような予感。
>>223 裏でassocコマンド呼び出すかレジストリ直書き。
ちゃんとしたAPIがあるのかもしれないけどよく知らない。
HSPから移行たくらんでるんですが、付属してるという話のドキュメントって 初心者にもわかりやすい? とりあえず矩形で切ったキャラ動かす程度のゲーム作りたいんですが。 Javaアプレットでオブジェクト指向無視した製作経験はあります(デザパタ勉強中……)。 SharpDevelop入れてネットで調べても要領を得なかったので、VC#のマイクロソフトのサポート 具合に期待してみたり。
HSPとC♯では方向性が違う。 ゲームつくるならあえてC♯を選ばなくてもよいかと。
ちょっとしたゲームならC#&DirectXで楽チンチンだよ。 DirectXのドキュメントはなってないが。
HSPの方が楽
>>203-204 貴重な情報を提供していただき有難うございます。
WindowsUpdateでFrameWork1.1に更新した後実行しましたが症状が変わりませんでした。
FrameWorkSDK1.1の日本語版はまだ出ていないようです。
はっきりした原因は分からないですがコンパイラのバグかもしれないので
今のところは待つしかないみたいです。
自分のソースがおかしいのかもしれないですが・・・・
とりあえず未実装の部分があるのでそちらに取り組みたいと思っています。
237 :
デフォルトの名無しさん :03/05/07 14:13
>>232 作るのは可能だけれど、実行速度重視の言語じゃないんで。
プログラミング自体を楽しむ学習目的ならOKでしょう。
239 :
デフォルトの名無しさん :03/05/07 14:28
>>226 あたり
けど、早くなるのは同じアプリを起動する場合だけだよね?
>>218 住み込みの弟子のつもりですよ。
あまりにもあつかましいと思いそこまで深くレスをつけなかったのですが。
ここ2、3日教えてくれそうな所を探したのですが、みつかりませんw
C#の講師募集とかならありますが・・・
まだそこまで浸透してないって事なのですね。
しかしこれからC#の需要が増えるのではと考えます。魂胆はありませんが。もし、需要が増えなかったとしても、C#を覚えた以上他の言語に移行するのは楽なのでは?と考えています。
今後の仕事によりけりですが。とりあえず最低限C#をマスターしてからその時代の状況に合わせて他の言語も勉強していこうと考えています。
あと、リアル土方って何でしょう?初耳ですw
質問する側が煽り返すってのは感心しないな。ネタスレ遺棄なよ。
244 :
デフォルトの名無しさん :03/05/07 20:14
>>242 どの言語でも基本は一緒なので、c#から覚えてもいいかも。
配列、繰り返し演算、分岐、構造体とか
Javaに構造体は無い!
>>242 弟子と言うのは半分脅しというか冗談ですけど、
会社帰りに週1時間とかだったら
絶対に使い物になるレベルにはならないです。
リアル土方というのは「本当」の「ドカチン」です。
2chではコンピュータ業界のことを「デジタル土方」と呼ぶので、
それに対して本来の「土方」のことを区別するためです。
ガテンというのは肉体労働専門の情報誌です。
何でそんな話をしたかというと、
C#を勉強して就職に役立てようなんてことは、
土木作業員と比較しても悪条件だってことです。
このスレでも業務の大半がC#って人は少ないのでは?
ま、いいや。気が向いたらメールでもください。
以後このスレではレスしませんので悪しからず。
>199なのですが、 Oracle関係の板へ移動すべきと思いましたので、 移動させていただきます。 書くとき迷ったんですが残念。 板汚しすみません。
>>236 202で書いてる
>このページを見てタブページを削除する前に
>タブページのフォーカスを移動させてみましたが
の方法でOKだったよ。
漏れはこの解決策をMSのニュースグループで見かけたけどうまくいってる。
tabControl1.Select();
tabControl1.TabPages.RemoveAt(i);
でどうだい?
TabPage削除でアプリが終了しない話なんだけど、以前経験あります。 だいぶ前の話で、今は標準のTabControl使ってないので嘘かもしれませんが。 Remove()とかRemoveAt()って、TabControlとTabPageの親子関係を切るだけで、 削除ではないのが原因だと思ってました。 不要になったTabPageをちゃんとdispose()してやれば直ったような憶えがあります。 宙ぶらりんのTabPageがあると、終了できなかったような。 もちろんそんな仕様は意味不明なんですが、もしかしたら直るかもしれませんし、 恥さらし覚悟で書きます。ム版初カキコ。
>>220 やっぱり、C#側ではsbyte*型になっちまうぞ。
どうすりゃいいの〜これでやるしかないの、/unsafeでfixedで
これじゃC#でやる意味無いよ〜
>>242 おいおい、ネタじゃないのかよ!
> これからC#を勉強したいのですが、
これのために、
> 今の仕事も辞めるつもりでいます。
こうする必要性がまったく見えない。
24時間働きっぱなしに近いような仕事で勉強する時間が
まったく取れないってのなら話は別だが、そうでないなら、
仕事は続けながら、空き時間を捻り出して勉強すれ。
C#を覚えること自体は悪くないが、
すぐに転職に役立てたいなら、まずはJavaだろ。
C#にしてもJavaにしてもWeb開発が中心だから、
言語以上に最低限必要なのはWeb開発の知識(HTTP、HTML、JavaScriptなどなど)。
Web開発に限らずSQL、DBの知識も必須だぞ。
後、業務知識もあればなおよしだが、
これは実際に開発の上流工程に参加しないとどうしようもないしな。
書いてて思いっきりすれ違いだな。 ちゅうわけで、スレに関係ある部分に戻そう。 >これからC#を勉強したいのですが、みなさんはどこで知識をつけたのですか? ドキュメント(ヘルプ)をざーっと読む、実験する、 ドキュメントで確認する、実験する。 その繰り返し。 まったくの初心者にこれは辛いだろうから、最初は入門書1冊読みながら、 そこに書いてあることを試したり、こうしたらどうなるだろう?とか ここに書いてあることは本当かな?とかいろんな疑問を持ちながら取り組むことだ。 入門書を1冊終えたら、後は、上に書いたように実験、ヘルプで確認の繰り返し。 国内/海外のWebサイト、掲示板、ML、ニュース、Google、 書籍、雑誌での情報収集も怠らない。そんなとこだ。
まあ何も考えずに1個アプリを決めて作ってみるといいよ。 その際ドキュメントをメインの資料にすること。 2ちゃんで聞いてばっかいるとあんまり意味ないよ。
親フォームにあるリストビューのチェックされたアイテムを 子フォームで編集して結果を親フォームのリストビューに戻したいです。 親子間でのやり取りにはどのような方法がありますか?
>>254 この手の質問がむちゃむちゃ多いな。
OOをちゃんと勉強せずに取り敢えず使ってみると
そういう壁にぶち当たるってのは分かるが、
OOをちゃんと勉強するってのも絵に描いた餅だしね。
何か良い方法ってないのかな。
で、一番簡単な方法を答えとくと、
子フォームで編集するコントロールをpublicにしといて、
親フォームからそれを直接覗けば良い。
if (form2.ShowDialog() != DialogResult.Cancel)
{
form2.listView1.……
}
とかそんな感じ。
>>248 C ◆oKZIqdAwEk さんにご指導していただいた通りにコードを変更したところ
正常に動作するようになりました。本当に有難うございます。
private void menuItem55_Click(object sender, System.EventArgs e) // タブを閉じる
{
int i = tabControl1.SelectedIndex;
tabControl1.Select();
// public System.Collections.ArrayList tabPageList = new System.Collections.ArrayList();
tabPageList.RemoveAt(i);
tabControl1.TabPages.RemoveAt(i);
}
TabPageを削除する前にSelectedIndexの値を-1にした場合、正常に動作しません。
TabControlそのものにフォーカスを当てないと駄目のようです。
private void menuItem55_Click(object sender, System.EventArgs e) // タブを閉じる
{
int i = tabControl1.SelectedIndex;
// これは正常に動作しない
tabControl1.SelectedIndex = i - 1;
// public System.Collections.ArrayList tabPageList = new System.Collections.ArrayList();
tabPageList.RemoveAt(i);
tabControl1.TabPages.RemoveAt(i);
}
>>256 ありがとうございます。早速試してみましたがうまいこと出来ませんでした。
Form1にtextBox1を置き
textBox1.Text = Form2.textBox2.Text;
Form2にtextBox2を置きtextBox2のModifiersをPublicに。
ビルドしてみると
Form1.cs : 静的でないフィールド、メソッド、またはプロパティ 'WindowsApplication.Form2.textBox2' で、オブジェクト参照が必要です。
となってしまいます。子のコントロールをpublicにする以外にも何か必要になるでしょうか。
>>258 当たり前
Form2 form2 = new Form2();
if (form2.ShowDialog() != DialogResult.Cancel)
{
this.textBox1.Text = form2.textBox2.Text;
}
form2.Dispose();
>>255 どこですか、教えてくださいよ〜
このままだと全部VC++で実装になっちゃうよ〜
そもそもMLってメーリングリストなのかどうなのかわからん・・・ MSDNとAtmarkITくらいしか見ないし・・・
C# MLでググればすぐ分かるだろ?
DllImportやらgetByteASCIIStringやら使えばいいみたいだね どうも失礼しました
フォームで<asp:TextBox>をたくさん使うと、 TextBox1,TextBox2,TextBox3...といった感じにバラバラのフィールドになって使いづらいのですが、 最初からコレクションや配列にまとまってforeachなどですぐ順次処理をできるようにならないでしょうか?
フォーム上のコントロールをドラッグで移動させようかと private void button1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { button1.DoDragDrop(button1.Location, DragDropEffects.Move); } private void button1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { } こんなしてるんですが、何を書いたらよいのか分かりません。 検索していますが中々サンプルが見つからず困っています。 どなたかご教授願えませんか?
>>267 フォーム内で動かすだけならDoDragDrop()は使う必要がない。
というかDoDragDop()を使うとシリアライズとか出てきて
極端に難しくなるので悪いが君には無理。
MouseDownで押した場所を覚えておいて、
MouseMoveでコントロールを単純に動かせば良い。
>>268 たしかに無理そうです。
MouseDownとMouseMoveで再度挑戦してみます。
ありがとうございました。
先日はお世話になりました。 別件で詰まってしまったので質問させてください。 1.リストビューへのアイテムの高速追加方法はありますか? APIを使うサンプルを見かけてC#で書き直して見ましたが挫折しました ><。 2.リストビュースクロール時の「ちらつき」を無くす方法はないでしょうか? こちらは目下検索中。 さすがVBやVC++には歴史があり検索でヒットするAPIのサンプルも豊富ですね。 ファイラー作るのにC#を選択した時点で間違いなのでしょうか。。。 手をつけちゃったので納得するとこまでは、と思っているのですが。 参考情報などありましたら教えていただけると嬉しいです。
>>270 > 1.リストビューへのアイテムの高速追加方法はありますか?
listView1.BeginUpdate();
// 追加処理
listView1.EndUpdate();
> 2.リストビュースクロール時の「ちらつき」を無くす方法はないでしょうか?
意味不明。
どっかにプロジェクト丸ごとうpしてもらわないと伝えるのは無理。
> ファイラー作るのにC#を選択した時点で間違いなのでしょうか。。。
そんなことはない。
LonghornのExplorer.exeはManagedだ。
これからMSは自分自身でもC#に移行していく気だってこと。
> これからMSは自分自身でもC#に移行していく気だってこと。 とみせかけて、VB廉価プログラマにC#させて、 自社内ではコアにC#禁止なMS
>>272 CLRより下層の部分にC#を使えないのは当たり前
というより、CLRはGUIやファイルアクセス等、 クリティカルでない部分しか使わないMS
>>275 それくらい自分で作ったら…。
数行で書けそうだし。
277 :
デフォルトの名無しさん :03/05/11 11:09
ListViewの行間隔は簡単に詰めたり広げたりできますか?
参考書とにらめっこしながらC#勉強してるんだが、インターフェイスの利点が理解できない・・・。 クラス間で共通で使えるメソッド類なのかなと思ったら、メソッドの定義してあるだけで、 中身はそれぞれのクラスで書くなら、意味がないような・・・。 単に「こういう役割をするクラスには、これらのメソッドを入れておいてね」 というのを構造的に分かりやすくするためだけのもの何でしょうか。
>>278 Javaの方でも同じような質問がありましたね。
私はIteratorパターンを読んで、初めてインターフェースの利点が理解できました。
要は、「インターフェース」と言うだけあって、
実装については関係ないのです。
「クラスの制作者のためのもの」と言うよりは、
「クラスの使用者のためのもの」と言った方が良いと思います。
例えば、メソッドなどから返されたインスタンスについて、
詳しい中身については知らないけど、
この人はIteratorさんとしての扱いをしておけば間違いないね、
ということを保障するものなのです。
さまざまなクラスからいろんなインスタンスを返されても、
使用者はそれらを一律にIteratorとしての仕事をさせればよいわけですね。
....だめだ、どんどんつっこんでください。
Iterator"パターン"だろ。デザインパターンの方の。あと、ごちゃごちゃいらないこと書きすぎ。↑
参考になったけど↑
>>282 でもインターフェイスの使い方、という意味では何の参考にもならなかっただろ?
まあそれでも、いいといえばいいんだけどね。
>>278 基本的にはそんな感じ。分かりやすくするというよりは、確約するという感じかな。
あと、インターフェイスを使えば、クラス間の結合をそのインターフェイスに限る
ことができる、ということもある。
286 :
デフォルトの名無しさん :03/05/12 22:23
c#でソースを公開しているアーカイバソフト、ご存知な方いますか? 教えて下さい。
そんなものない
javaやC/C++で公開してるやつを移植
>>288 移植するより、Managed C++ でコンパイル→DLL化する方が。
>>289 の最初のリンク
いつも思うんだけど、この人のサンプルソースは改行していないから激しく読みにくい・・・
Kittyが好きらしいから基地外なのかしら。
でもソースではPREしている・・・どうなってんだろ。ネスケのせい?
>>292 スタイルシート使ってるせいかな。
寝輔のバージョンは?
4以前のものはスタイルシートへの対応が駄目駄目。
5もかなり悪い。
lzh使うやつは犯罪者
rarは?
>>294 > 5もかなり悪い。
ネスケ5ってオプソになったばかりでGeckoになる前の
捨てられる寸前のMozillaのこと?
>>298 unlha32.dllをP/Invokeしろ
>>296 どうもです。
とりあえず、ダウソしてみます。
>>291 そんなことよりさ、.NETのドキュメントのサンプルってよく一行になってるやつない?
>>307 C言語をある程度使いこなしている人なら簡単
そうじゃなかったら難しいとかいう次元じゃなくて不可能
>>307 こんな感じですれ
public int Compress(string archive, string fileName)
{
string cmdline = String.Format("a \"{0}\" \"{1}\"", archive, fileName);
return Unlha(IntPtr.Zero, cmdline, null, 0);
}
[DllImport("Unlha32.dll")]
private static extern int Unlha(IntPtr hwnd, string szCmdLine, string buffer, int buffSize);
// ふと思いついたんですが、こんな亊できるんですか? // ただいまVS.NETインスコ中でまだ試せないっす。 class a { unsafe static void a() { asm { hlt; } } }
>>312 そろそろインスコ終わってるだろ
で、結果は?
残念ながら無理だった。 __asmとかやってみたけど認識しないのね。
DonutRブラウザのようにドラッグして移動できるメニューバーや ツールバーは簡単につくれますか?> フォームデザイナ
C#.NETはじめましたー。まずは ・フォームにボタンを設置 ・フォームにタブコントロールを設置 ・タブページにリストビューを設置 ・ボタンをクリックでリストビューにアイテム追加 こんなの作ってみましたがボタンを押してもアイテムが表示されないです。 ボタンを連打するとリストビューにスクロールバーが表示されて スクロールしているようですが、アイテムが全く表示されないですの。 どぼちて?
>>316 それだけじゃ解らないよ。
せめてボタンのクリックイベント部分のソースがないと。
リストビューの詳細表示でカラム追加してなかったー! 無事に動きました〜。ごめんなそい。
319 :
デフォルトの名無しさん :03/05/16 23:03
Form1 上に Label1 があるとします。 Label1 をクリックしたときに、Form1のクリックイベントを発生させるには どうすれば良いのですか?
>>319 Label1.ClickのイベントハンドラをForm1内に作る。
で、そのハンドラから this.OnClick() を呼ぶ。
>>320 おーすばやい回答ありがとうございます。
とっても助かりました!!
322 :
デフォルトの名無しさん :03/05/17 01:45
C#で作ったアプリケーションってどのぐらい重いですか?
>>322 C++かなんかとC#で同じアプリ作ってみれば?
324 :
デフォルトの名無しさん :03/05/17 21:55
リストビューのKeyDown (Key num1)にコードを書いたのですが 実行するとそのコードとリストビューの本来もっている 「先頭が1で始まるアイテムへ移動」も実行されてしまいます。 num1に限らず色々キー動作を変更したいのですが 標準の動作を実行させない方法はありますか?
↑おれもやってみたがわかんね
>>324 ListViewを継承してOnKeyDownなどをオーバーライドしても駄目?
327 :
デフォルトの名無しさん :03/05/18 21:07
C#でVCみたいにdefineマクロやストリングテーブルで 固定した文字列を扱いたかったので探してみたところ、 どうやら アセンブリ リソースファイル というのがそれっぽい、と気付いたのは良かったのですが、 コード中に登録した文字を取得することができません。。 いったいどうしたらいいのでしょうか? もしかして根本的にアセンブリ リソース ファイル というのは 用途が別なんでしょうか? 「type」というのがどうも関係なさげなので。。 VCのストリングテーブルみたく文字列を扱うには どうすればいいですか? グローバルで定数を宣言することもできないようなので 困っております。 アドバイスいただけませんか? よろしくお願いします。
System.Resources.ResXResourceReader reader=new System.Resources.ResXResourceReader("C:\\Resource1.resx"); IDictionaryEnumerator en = reader.GetEnumerator(); while(en.MoveNext()) { if (en.Key.ToString()=="TEST_KEY") MessageBox.Show(this,en.Value.ToString()); } 一応読み出せましたが、絶対なんか勘違いしてるような気がする。。
>>327 ms-help://MS.VSCC/MS.MSDNVS.1041/cptutorials/html/string_resources.htm
この辺にのってたサンプル
IResourceWriter w = new ResourceWriter("foo.resources");
w.AddResource("test1", "one");
w.AddResource("test2", "two");
w.AddResource("test3", "three");
w.Close();
ResourceManager m = ResourceManager.CreateFileBasedResourceManager("foo", ".", null);
Console.WriteLine(m.GetString("test1"));
Console.WriteLine(m.GetString("test2"));
Console.WriteLine(m.GetString("test3"));
こんな感じでしょか?
public class UserListView : System.Windows.Forms.ListView { protected override void OnKeyDown(KeyEventArgs e) { if(e.KeyCode==Keys.NumPad1) { e.Handled=true; }}} 継承やメソッドがまだよくわかりませんが検索しつつ上記でやってみました。 「123」と「ABC」というアイテムをUserListViewにいれて見ましたが まだ「123」に移動してしまいます。知識不足ですいません。ご助言をお願いします。
出来そうで出来ない。
>>331 class UserListView : ListView
{
public override bool PreProcessMessage(ref Message m)
{
if (m.Msg == (int)0x0100/*WM_KEYDOWN*/)
{
Keys key = (Keys)(int)m.WParam & Keys.KeyCode;
if (key == Keys.NumPad2)
{
return true;
}
}
return base.PreProcessMessage(ref m);
}
}
どう?
>>333 あ、key == Keys.NumPad2はテスト用
これを自由に変えてみて
>>334 すごーい、希望の動作になってます。早速使ってみます!
PreProcessMessage
なにやら夢の詰まってそうなキーワードですね。
これから一杯調べてみます。
解答と希望をありがとうございます
336 :
デフォルトの名無しさん :03/05/19 01:42
ワイプで画面が切り替わるような効果を作りたいのですが・・・ TimerのTickの度にPaintEventArgs eをどこかから持ってきてe.Graphicsとかやることは できないのでしょうか。 また、ブラインドのような形の多数の領域を一気に書き換えるにはどうすれば いいのでしょうか?
337 :
デフォルトの名無しさん :03/05/19 21:34
VS.NET EA でコンソールアプリ作って練習してるんだけど・・・ ボタンにある「開始」ってのを押すとプログラムが終了すると同時にコンソール閉じちゃうんだけど・・・ ツールバーの「デバック」→「デバックなしで開始」を選択すると閉じずに残る・・・ この「デバックなしで開始」をボタンにする方法はないんでうか? 教えてくれたらイイものうpしちゃげる♥
ごめん・・・普通にヘルプ見たらできた・・・ おわびにうpローダ教えてくれたら・・・&hearts
>>337 メニューのツールのカスタマイズのコマンドの
左側分類で「デバック」を選んで、右側「デバッグなしで開始」を
ツールバーにドラッグ&ドロップ
と書いたら
>>338 がっ (泣
>>333 331では無いけど便乗質問
if (key == Keys.NumPad2)
{
return true;
}
このreturnの後にUserListViewのKeyDownに
行きたいのだけれど何て書いたら良いのかな。
331と同じく手探り状態でつ。
>329 >330 ありがとうございます。 無事できました。 ですが、VCのストリングテーブルとは 用途が違うように思えます。 .resourcesファイルにしたリソースは 配布する際はいいと思いますが、 ソリューションエクスプローラにある(私が作成した) Resource1.resxというファイルから直接読み込んだりはできないのでしょうか? >330さんの方法や、ヘルプにあるサンプルの方法だと、 Resource1.resxの意味すらわからないくなります。 また、プロパティのビルドアクション項目に「埋め込まれたリソース」 とあるので、.resourcesファイルに出力せず、VCのように exeに埋め込むことができるようにも思えます。 お恥ずかしい話し、ヘルプから出来るのか、そうでないのか、 すら読み取ることができませんでした。 もう少しだけ、アドバイスいただけませんか? よろしくお願いします。
>>341 リソースファイル名が Resource1.resx とした場合、
Assembly assembly = this.GetType().Assembly;
ResourceManager m = new ResourceManager("WindowsApplication1.Resource1", assembly);
string value1 = m.GetString("test1");
string value2 = m.GetString("test2");
こんな感じで出来た。
>>340 returnの後にできるかどうか解らないですが、
if (key == Keys.NumPad2)
{
OnKeyDown(new KeyEventArgs(Keys.NumPad2);
return true;
}
こんな感じじゃだめかしら。
>>343 × OnKeyDown(new KeyEventArgs(Keys.NumPad2);
○ OnKeyDown(new KeyEventArgs(Keys.NumPad2));
345 :
デフォルトの名無しさん :03/05/20 02:04
Bitmapから"Getpixel","SetPixel"で色を取得し編集し表示する画像処理をしたいです。 しかし、 gray[XCou , YCou] = this.myBitmap.GetPixel(XCou,YCou); とコードを記述すると、ビルドは出来るのですが、実行すると ”System.NullReferenceException' のハンドルされていない例外が system.windows.forms.dll で発生しました。 追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。” というエラーが出ます。"Getpixel","SetPixel"の使い方が悪いからこのようなエラーがでるのでしょうか?
>>345 初期化していない変数がないかどうかを調べてみるとよろし。
>>343 あぁなるほど。ありがとう。もやもやが取れた感じ。
渡しっぱなしにすることしか考えてなかった。
348 :
デフォルトの名無しさん :03/05/20 12:50
asdfasdfasdfこのレスを見た人間は十三日以内に死にます。 ※あなたに訪れる死を回避する方法が一つだけあります。 それはこのコピペを一時間以内に7つ、別のスレに貼り付ける事です /\___/ヽ ヽ / ::::::::::::::::\ つ . | ,,-‐‐ ‐‐-、 .:::| わ | 、_(゜)_,: _(゜)_, :::|ぁぁ . | ::< .::|あぁ \ /( [三] )ヽ ::/ああ /`ー‐--‐‐―´\ぁあ
サンプルコードがいっぱいあるサイトきぼんぬ
>342 大感謝です。 無事読み出せました。 どうもヘルプの読み方がいまいち下手ですが、 このコードからF1で理解を深めていきたいと思います。 ありがとうございました。
353 :
デフォルトの名無しさん :03/05/21 09:30
C#からプログラミングを始めて半年ほどになりますが壁にぶち当たりました。 COMコンポーネント(=Win32API?COM+?)の使い方がサッパリわかりません。 MSDNオンラインを見ても何じゃコリャ?という感じです。 できればC#で解説した書籍があればいいのですがオススメの書籍があればぜひ教えて下さいませ。 お願いします。たのんます。
レス来ずか…そうさ…わかってたさ…。 C#の書籍は入門書ばかりってことぐらいはさ。 でも高望みだなんて思いたくなかったんだ。 最初に選ぶ言語を間違えたんだな俺は… あぁ…CかC++でも始めるか…
>>354 掲示板なので、すぐにレスが返ってくるとは限りません。
┌──────────────────────―─┐
│ |
│ |
│ |
│ |
│ /■\ |
│ (´∀`∩) |
│ (つ 丿 |
│ ( ヽノ |
│ し(_) |
│ |
│ Now Onigiring. ... |
│ |
│ |
│ そのままおにぎりでお待ちください。. |
│ |
│ |
└───────────────────────―┘
356 :
デフォルトの名無しさん :03/05/21 14:59
>>354 俺もC#からプログラムに入ったわけだが・・・
C#で学ぶことはC++でも生かせる物なのかなぁ
357 :
bloom :03/05/21 15:11
358 :
デフォルトの名無しさん :03/05/21 15:14
ナルポ
>>353 こんな所で、他人のオススメを聞くより、でかい本屋に行って立ち読みするべし!
C#の実用本なんて山ほどでとるぞ!
ヌルポ
362 :
デフォルトの名無しさん :03/05/21 16:43
ノースウッドセレってどうなんでしょう。 タラから乗り換えたんですけどインストールの時間が全然違うんです。 コンパイルのスピードとか普段の使用感とかどんな感じになるんでしょう。 スペックはタラが1.4Gでメモリ384MB、ノースが2.0Gを2.66にOC、メモリ512MBです。
OSも関係あるのかな。 タラが2000でノースがXPです。
364 :
デフォルトの名無しさん :03/05/21 20:28
>>356 C#からプログラミングに入った人なんつーのはすんなり理解できてるの
かなあ?オレの場合おおざっぱに言うと、昔ながらのBASIC〜C〜
VisualBASICと経験してきたからそれとの対比でなんとなく
理解できたけど、最初からC#だったらオブジェクト指向的な考え方とか
すんなり理解できたかどうか、あんまり自信ない。
365 :
デフォルトの名無しさん :03/05/21 23:45
ウィンドゥズうpデートに.NET Framework 1.1とかいうのがあったから インストールしました。 インストールされたディレクトリを見ると、csc.exeとかいうのがあって コマンドプロンプトからなにげなくcscを実行してみると、 Visual C# .NET Compilerとか表示されました。 Visual Studio買わなくてもC#プログラミングが出来ちゃうのでしょうか? updateで入れたやつにはエディタやデバッグなどの環境が無いとい うことなのかな?
366 :
デフォルトの名無しさん :03/05/22 00:18
C#でグローバルで変数を宣言したいのですが、 できないようなので困っています。 C#のプログラミングスタイルとしては どこに宣言するのが定石でしょうか? 常に存在すると保証されるクラスですか? 私の作ろうとしてるソフトには 起動と同時にメニュー画面が表示されるのですが、 メニューのクラスのメンバとして DBとの交信に必要で 他の全てのクラスから扱われる変数を格納するのは 凄く違和感があります。。 こういうものなのでしょうか?
>>365 VisualStadioは、只のグラフィカル開発環境!
だから、ノートパッドでC#のコードをかいてCSC.EXEでコンパイルすればできる!
ちなみに、EclipseのC#プラグインも出とるぞ!
VS.NETは、Windowsアプリが作りやすいってだけ!
C#の勉強をしたければ、NET Framework 1.1SP2で十分であ〜る!
C#とD言語、どっちがいいですか
369 :
デフォルトの名無しさん :03/05/22 00:24
>>361 うん!山ほどは無いな!
砂山ほどに訂正しま〜す!
>>366 public class Globals
{
public static int Sage = 123;
}
int sage = Globals.Sage;
とか。
>>366 感じ的にはAccessのような、データベースとフォーム・レポートが連携したようなアプリだと察します。
さまざまなフォームから同じDBにアクセスするという点では、DBをグローバルにとるのも手だとは思います。
沢山あるだろうフォームのコンストラクタ・初期化メソッドでいちいち同じ初期化を定義したり実行したりするのは手間であろう事も想像できます。
DBをグローバルに設けるのも手段ですが、主にフォームからDBを扱うなら「継承フォーム」を使ってみてはいかがでしょう。
具体的には、DBを渡さないと表示できないフォームを作ります。例えばShowメソッドを改造したり、コンストラクタにDB用の引数をつけるなどです。
DBが必要なフォームでは、上記のフォームを継承して作成・デザインします。
この方法だと、次々表示するフォームのコンストラクタやShowメソッド呼び出しなどを工夫するだけで済むので、設計的にも楽になると思うのですがいかがでしょう。。。
372 :
デフォルトの名無しさん :03/05/22 01:05
>367 なるほど。ありがとうございます。 Eclipseもなんとか使いこなしたいところです(インストールだけはしてある)。
>370 でもそうやると Globalsの内部に別のクラスを持つ場合、 そのクラスはグローバル(仮)で宣言する為だけに 設計しなければならないですよね? 少なくとも用途別に二つそのクラスを確保することは できないと思います。 すこし不便に思えるのですがC#ってそういうものなのでしょうか? 無理してでも常に実態を持つクラスのメンバとして 宣言した方がいいでしょうか? 勘違いしてたらすみません。 細かいようですが、もう一言お願いします。 このままじゃなんか不安ですので。。
>>373 根本的な勘違いがありそうだから、もう一度基礎を
おさらいした方が良い。
考えていたので時間差で先に書き込んでしまいました。 >371 なるほど。 すこぶる納得できました。 >Accessのような〜 う。見抜かれてますw ずばりその通りです。 納得いきました、ありがとうございます。 >374 あれれ、、やはり勘違いしてますか。。 えっとstaticで内部に別のクラスを宣言するので 内部のクラスのメンバが共有されて。。と思ったのですが、 よく考えてみると、内部に二つクラスを持てば、 二つ限定で、そのクラスを使える、ということですね。 用途別に二つ用意することは不可、と書きましたが、 訂正させていただきます。ごめんなさい。 まだ勘違いしてないか心配。。
376 :
デフォルトの名無しさん :03/05/22 08:55
プログラム終了後にこのようなエラーが表示されます。 ASSERT Failed foo.exe -アプリケーションエラー 例外 unknown software exception(0xc0020001)がアプリケーションの0x77e7b2f0で発生しました main関数を全部tryで囲んでもキャッチできないので一体どこで例外が発生しているのやら、という状況です。 ASSERT Failedと出てますしリリースビルドでは発生しないようなのでデバッグビルド特有のもののようですが….… どなたかお知恵を貸していただけないでしょうか
377 :
デフォルトの名無しさん :03/05/22 10:06
c#ではテンプレート使えますか
>>377 使えない。
VS.NET for Yukon(C# 2.0)で使えるようになる。
380 :
デフォルトの名無しさん :03/05/23 19:25
渡された引数に従ってコントロールをフォームに追加するような プログラムを書いています。で、情けない事に変数のスコープにどう対応していいのか 迷うのでアドバイス欲しいのですが、 private void AddControl(uint ctrltype) { if(ctrltype == 0 ) { TextBox ctrl = new TextBox(); ←ココ // TextBox の プロパティ設定 省略 } else { ComboBox ctrl new ComboBox(); ← ココ // ComboBox の プロパティ 設定 省略 } // TextBox, ComboBox 共通のプロパティ設定 Controls.Add(ctrl); } if の ブロックの中で作成したオブジェクト(ctrl) が ブロックの外で有効ではないので、if ブロックの外の行が うまく動かせません。 if の前で オブジェクトを定義し、if のブロックで実際のオブジェクトを決定し、 if の外でもそれを使う、みたいな感じにしたいのですが、 どのようにすればよいでしょう?
382 :
デフォルトの名無しさん :03/05/23 19:37
Control ctrl = new Control(); を if の外において if の中では ctrl は TextBox だよ、 ComboBox だよ、っていうのはどのように書けばよいのでしょう?
>>382 new TextBox() も new ComboBox() もControl型の変数に入れられる。
>>380 Control c = null;
if (...) {
c = new TextBox();
}
else {
c = new ComboBox();
}
Controls.Add(c);
385 :
デフォルトの名無しさん :03/05/23 19:44
何度もすみません。 Control c = null; if (...) { c = new TextBox(); c.MultiLine = true; ← エラー } else { c = new ComboBox(); } Controls.Add(c); とすると ctrl に TextBox 独自のプロパティが設定できないのですが、 どのようにすべきでしょうか?
少しは頭を使え
>>366 一応いろいろ試しているんですが、その時間が短いですかね。
ごめんなさい。
で、いろいろ試行錯誤しまして
((TextBox)ctrl).MultiLine = true;
と明示的にキャストしてやったらできました。
と喜んだのもつかのま、
ctrl.KeyPress += new System.EventHandler(this.CtrlKeyPress);
で System.EventHandler 型を 'System.Windows.Forms.KeyPressEventHandler' に
暗黙的に変換できません。
と(;_; プロパティを明示的にひたすらキャストするのも綺麗じゃないし、
もうわかんないんで、TextBoxと ComboBox は 別の関数にわけて
ちまちまやります。
ありがとうございました。
>>387 >>ひたすらキャストするのも綺麗じゃないし
Control c;
if (...) {
TextBox tb = new TextBox();
tb.Multiline = true;
c = tb;
} else {
ComboBox cb = new ComboBox();
...
c = cb;
}
Controls.Add(c);
こんな風にやればいいじゃん。
.NET Compact Framework の TextBox で、 OnLostFocus が オーバーライドできない理由を 御存知の方はいらっしゃいませんか?
>>388 オブジェクトを1つ作成するコストと、関数をわけるコストを比較して
考えてみます。ありがとう。
しかし、その方法でも
ctrl.KeyPress += new System.EventHandler(this.CtrlKeyPress);
をうまく処理できない気がするので、やっぱりこまごまやるんじゃなくて
関数わけたほうが、よさそうな気がしてきました。
どうなんでしょう? アドバイスあればよろしくおねがいします。
>>390 ???
>>System.EventHandler 型を 'System.Windows.Forms.KeyPressEventHandler' に
>>暗黙的に変換できません。
392 :
デフォルトの名無しさん :03/05/24 00:21
C#はエクセルとかXMLにアクセスする必要のあるちょっとしたツールの 作成によく使います。別にスクリプトでやってもよいのだけど、なんとなく コンパイルしといた方が実行速度速いかなという気分で。
>>390 KeyPressEventHandler
>>390 TextBoxだとかComboBoxだとか、分ける分けない以前の
根本的な間違いに気づけ。393が答えだしてくれてるけどな。
MFCではMessageBeep()だがC#で警告音を鳴らす方法がわからない。 googleでも調べたんだけど・・・
>>395 [DllImport("kernel32.dll")]
extern static bool Beep(uint dwFreq, uint dwDuration);
又は
using Microsft.VisualBasic;
Microsoft.VisualBasic.Interaction.Beep();
漏れはこの質問、4,5回は見た。FAQだな。
ところで、何でMSは、.NETに音関係のAPIを全く作らなかったんだろうね?
>>397 DirectXを使えってことじゃない?
結局、ライブラリとしてはないってことか・・・ Beep音ダセー。
ListViewのフォーカス表示を枠ではなく線にして フォーカスのあるアイテムの背景色も表示したいのですが どのようにしたら良いでしょうか?
401 :
デフォルトの名無しさん :03/05/26 10:30
CSVをパースしてくれるようなクラスは標準でありますか?
>>402 String.Split だと ["hoge,muge"] を ["hoge] [muge"] に分割してしまうので
できれば "(ダブルクォーテーション) を考慮して分割してくれるとうれしい。
上記の例だと [hoge,muge] となって欲しいのですが。
自作するしかない?
>>403 Regex.Splitで正規表現を使っては?
>>403 Microsoft.VisualBasic.FileSystem.Input
406 :
デフォルトの名無しさん :03/05/26 13:38
struct Point { public int x; public int y; } と定義した構造体を配列で利用したいのですが(構造体配列) 定義のしかたがわかりません。 Point[] pnt = new Point(); みたいな事がやりたいのですが。
>>406 Point[] pnt = new Point[1000];
409 :
デフォルトの名無しさん :03/05/26 21:13
VC#のMDIアプリの良いサンプル無いですか
412 :
デフォルトの名無しさん :03/05/27 04:15
こっちのスレのほうがよさそうなので やっぱりこっちに質問します。 visual c#.net と visual staudio.net professional って中身はどれくらい違うもんなんですかね? 前者だと、全然早いソフトは作れなかったりするんですかね? 後、c#はただのcやc++とは全然違う言語なのですか? すいません、教えてください。
415 :
デフォルトの名無しさん :03/05/27 17:44
タスクバーの位置(上下左右)を取得したいのですが、 レジストリのどこかの値から取得する方法はないものでしょうか?
>>415 それをわざわざこのスレで聞くとはいい度胸だ
417 :
デフォルトの名無しさん :03/05/27 19:01
>>413 ありがとうございます。
検索すればすぐにわかる話しだったのですね。
お手数かけてすいませんでした。
>>416 あぁ、スレ違いでしたか。すません。(´Д`)
419 :
デフォルトの名無しさん :03/05/27 21:14
c#の用語のメソッドってなんでしょうか? つまり関数のことだと思ってよろしいのでしょうか?
421 :
デフォルトの名無しさん :03/05/27 21:56
422 :
デフォルトの名無しさん :03/05/27 23:23
えー現在C++を使っているんですが、そろそろC#を勉強しようかなと思ってます。 CSのバイブル的存在の書籍ってあるんでしょうか? 文法とかはネットで調べればなんとかなりそうですけど、 .NETでの開発作法とかセオリーみたいなのを解説している書籍なんかも欲しいです。 お勧め本教えてください! 英語だめなので洋書は却下です(;´Д`)
423 :
デフォルトの名無しさん :03/05/27 23:30
Setup.msiを作るときに.NETFrameworkもインストールパッケージに 含めるにはどうすればいいんでしょうか?
光 そ し! _ -── ‐--── ‐- 、 , -─-、 -‐─_ノ
フ う // ̄> ´  ̄  ̄ `ヽ ̄ `ヽ Y , ´ ) ラ え
ァ か L_ / / ヽ ン |
イ / ' ' i 同 タ マ
バ
>>423 / / く 梱 イ ジ
│ は l ,ィ/! / /l/!,l /厶, !? ム
の i_ ___ _,. ‐'´//-─=====-、ヾ l /-!'|/l /`'メ、_iヽ
普 l,.‐'´ `''‐- 、._ヽ /.i ∠,. -─;==:- 、ゝi i/-- 、 レ!/ / ,-- レ、⌒Y⌒ヽ
及 _ゝ|、! /' ̄r'bゝ}二. {`´ '´__ (_Y_),. |.rト、N'/⌒ヾ ,イ ̄`ヾ,ノ!
を 「゙l |`} ..:ヽ--゙‐´リ ̄ヽd、 ''''  ̄ ̄ |l| | | 「L! ' i'ひ} リ
ヽ i.! l .::::: ソ;;:.. ヽ、._ _,ノ'! ! |ヽ_、ソ, ヾシ _ノ _ノ
-┐ ,√ ` ー==--‐'´(__,. ..、  ̄ ̄ ̄ リ l !  ̄  ̄ 7/
レ'⌒ヽ/ ! | .:::ト、  ̄ ´ _人__人ノ_ i く //!
人_,、ノL_,iノ! /! ヽ 「 L_ヽ r─‐- 、 u ノ/
つ 加 / / lト、 \ ー‐==:ニニニ⊃ノ デ 了\ ヽ, -‐┤ //
も 速 { / ヽ,ト、ヽ/!`hノ ) カ |/! 「ヽ, `ー /) _ ‐'
り さ ヽ/ r-、‐' // / |----------く | > / / `'//-‐、 /
な せ > /\\// / /ヽ_ ! イ ( / / // / `ァ-‐ '
ん る / /! ヽ レ'/ ノ > ' ∠ -‐  ̄ノヽ /
だ { i l ! / フ / -‐ / ̄/〉 〈 \ /!
EXCELのようなセルを範囲指定して編集できるようなコントロールを 作りたい&探しています。 参考になるサイトがありましたら教えていただけないでしょうか。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
428 :
デフォルトの名無しさん :03/05/28 13:27
BOOL namae ( HWND hwnd, UINT Vkey, UINT *pStartBuffer) と宣言されている関数を C# から使いたいのですが [DllImport.....略] private static extern bool namae (IntPtr hWnd, uint Vkey, ref uint pStartBuffer); と宣言し、 bool bRet = namae(hWnd, 0, ref strBuf); と書いたいのですが、ref または out 引数は左辺値でなければなりません。 とコンパイルできません。 どこが間違っているのか教えてもらえませんか?
>>428 もしかしてstrBufはconstとかに指定してない?
>>429 const にしてました(~_~;;;
ありがとうございました。
えーと、コンストラクタ呼び出しでお尻の () を忘れたとき Item = new Items; なんてやったときのコンパイラのエラーメッセージが "新しい式は型の後ろに丸かっこまたは角かっこを必要とします" ってでるんだけど「新しい式」ってなんだよ。 なんか、日本語訳の質が低下しまくりなんですが。これでほんとに良いのか?
普通忘れない。 なんか、プログラマの質が低下しまくりなんですが。これでほんとに良いのか?
たとえだよ。ばかやろ。
EXCELのSpreadSheetActiveXコントロール貼り付けて作っても やっぱりEXCELインストールしていないPCじゃ使えないのでしょうか。 そんな時SpreadSheetActiveXコントロールも同梱しちゃったら おこられるですか?
>>431 newステートメントなんて言葉プログラマにしか通用しません
翻訳屋さんが新しい式と訳すのはまったく完全に正しいです
なんでnewを訳したかな
>>435 プログラマな知識がある人が訳すもんなんじゃないの?こういうのって。
昔、開発系の上司が技術ドキュメントの翻訳やってるの見たことあるけど。
newを訳したやつにプログラムの知識が微塵も無かったことだけは確かだな。
439 :
デフォルトの名無しさん :03/05/29 01:17
C#にC++でいうtemplateってありますか?
次のバージョンで出来る予定です
441 :
デフォルトの名無しさん :03/05/29 11:10
object型は何でも入れられる変数型という訳ではないんでしょうか?
442 :
bloom :03/05/29 11:13
元VB厨
445 :
デフォルトの名無しさん :03/05/29 15:22
vb でいうところの mid 関数は C# ではどうやるのでしょう? やりたい事は TextBox にて .SelectionStart から .SelectionLength 分の文字列を置換したいのですが。
>>445 VBはよく知らないが、mid関数という感じからすると、
string result = textBox.Text.Substring(textBox.SelectionStart, textBox.SelectionLength);
>>446 Substring と Replace を組み合わせてできました。
もうひとつ質問ですが、 vb では
Me.TextBox1.Text = "aiueo"
Me.TextBox2.Text = "12345"
を
With Me
.TextBox1.Text = "aiueo"
.TextBox2.Text = "12345"
End With
と書く事により With ブロックで Me の記述を 省略させる事ができるのですが
このような事を C# で書ける方法はありますか?
>>447 その、省略したいインスタンスの所属するクラスに、
そのブロックで実行したいことを、関数として書け。
つまり
class A {
f1() {}
f2() {}
var() {
f1();
f2();
}
}
とかかけば、
class A a;
a.f1();
a.f2();
と書く代わりに
class A a;
a.var();
と書ける。
派生クラスのメンバを、派生元のクラスから利用する方法なんてないよね? 可能なら、呼び出し元のコレクションクラスの参照をobjectで受ける、 共用の列挙子クラスを作れないかなと思ったんだが。
>>450 派生元のクラスで、interfaceを継承してみては?
interfaceで作ったメソッドを派生先のクラスで実装させればいいのではないでしょうか。
452 :
デフォルトの名無しさん :03/05/30 09:50
c#で作成したプログラムは、 そのプログラムだけをcdに焼いて他の人に渡して、 その人のマシンにインストールしてもらえば、 他人のウインドウズマシンでも普通に動きますよね。 それとも、他の何とかコンポーネントとかランタイムルーチンとかって なんか関係あったりしますか? 凄く簡単なプログラムとかなんですけど。 (例えばダイレクトXなんかは全然関係ない)
453 :
デフォルトの名無しさん :03/05/30 09:53
ところで、みなさんは visual c#.net Stanndard って幾らくらいで買いましたか? 私は1万2000円ちょっと位で買ったのですが、 そんなもんですかね? 昔に比べたらかなり安いなって印象ですが、、、。 昔95の頃、visual Cとか買った時は 8万くらいした気が、、、。
>>452 >そのプログラムだけをcdに焼いて他の人に渡して
これじゃダメ。C#はJavaみたいなもん。
>>453 最安は価格.comで調べてみれば?
456 :
デフォルトの名無しさん :03/05/30 11:17
>>454 >>455 ありがとうございます。
悪い予感が当たってたのか、、、。
と言うことはやはりコンポーネントと言うものが他の人のパソコンにも
インストールされて無いと駄目なのですね。
VS.NET重くて使えねー
458 :
デフォルトの名無しさん :03/05/30 18:22
C# のコーディングスタイルがまとまっている所はありますか? 命名規則など。
>>456 C#で作られる実行形式のファイルは、実はネイティブコードではなく、
.NET共通言語ランタイム上で動作する中間言語と呼ばれるものでつ。
よって、実行するマシンにも.NET Frameworkが導入されているか、
ランタイムがインストールされていないといけないのでつ。
>>459 .NET Frameworkはランタイムのことですよん
462 :
デフォルトの名無しさん :03/05/30 19:15
ははあ、なるほど。 そしてNET Frameworkと言うものは、 ダイレクトXとかみたいに誰でも簡単にネットから落とせたり、 パソコン雑誌の付録のcdについてきたりするものなのですか? そうでないと、幾ら自分が一生懸命プログラムしても、 意味ないっすよね。 だって、visualc#を買った人しか使えないことになってしまいますからね。
>>462 NET Frameworkと言うものは、WindowsUpdateにあって
ダイレクトXとかみたいに誰でも簡単にネットから落とせるものですし、
次期Windowsには最初から組み込まれているものです。
.NETバンドルするなと訴える会社があるので今はXPなどにバンドルできないだけ。
>>462 再配布可能なバージョンがあるから.NET Framework自体もCDに焼いて他の人に渡せるよ。
そんなのダウンロードすることを強要できるわけないじゃないですか。
作ったソフトにその価値があればDLするとおもうよ 普及させるのはなかなか難しいと思うけどね
467 :
デフォルトの名無しさん :03/05/30 20:23
自分462ですが、 どうも色々とありがとうございました。 参考になったっす!!
468 :
デフォルトの名無しさん :03/05/30 21:01
>>467 >参考になったっす!!
いいなあ、あんた。
>>465 MS OfficeはWindowsを購入することを強要していますが、何か?
ごめん。嘘ついた。Linuxでも動くね。スマソ
DataGridのテーブル表示切替で困っています。 現在dataGrid1でマッチングをしているDataSet1.Table[A]を表示しています。 この表示をDataSet1.Table[B]に変更するために dataGrid1.DataMember = "tableB"; dataGridTableStyle1.MappingName = "tableB" として実行しているのですが "フィールド tableB の子リストを作成できません。" となってしまいます。 アプリ実行中にマッチング先を変更することは出来ないのでしょうか。
プロパテってなんか可愛くない?
感じるジャッカルネタ?
クロマテ
はねるのトびらネタと間違えた。。 ツッコまれてもないしスレ違いも甚だしいが訂正。
ブビ厨はなんで変なスレばかり立てるのですか?
プロパティ関連のエラーで出るよ>プロパテ
ファイルストリーム filestreamA の xPosition から xLength 分を ファイルストリーム filestreamB として作りたいのだけど 一旦byte[]にする以外に方法はありますか?
>>480 簡単でいいから解決法を書いとけ。ただの無駄レスで終わらすな。
482 :
名無しさん@Vim%Chalice :03/06/02 09:17
public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.TextBox textBox1; 〜略〜 } class test { } フォーム(Form1)のテキストボックス(textBox1)を外部のクラス(test)から、操作するにはどうすればいいのでしょうか?
>>482 public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
〜略〜
public TextBox TextBox {
get {
return textBox1;
}
}
}
Form1 form = new Form1();
form.TextBox.Text = "hoge";
484 :
名無しさん@Vim%Chalice :03/06/02 10:06
>>483 ありがとうございます。
しかしデバッグ画面では変更されるのですが、テキストボックスの内容は変更されません。
どうしてでしょうか?
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
〜略〜
public TextBox TextBox {
get {
return textBox1;
}
}
private void button1_Click(object sender, System.EventArgs e)
{
test.text_change();
}
}
public class test
{
public static void text_change()
{
Form1 form=new Form1();
form.TextBox.Text="hoge";
Debug.WriteLine(form.TextBox.Text);
}
}
>>484 サンプルをそのままコピペされても・・・。
Form1 form = new Form1()は別のインスタンスだから。
そうやりたいなら
test.text_change(this);
public static void text_change(Form1 form)
{
form.TextBox.Text = "hoge";
}
486 :
デフォルトの名無しさん :03/06/02 20:30
よろしくお願いします。 System.Diagnostics.Process.Start()でファイルを起動する際に ファイルを起動するアプリケーションが関連付けされていない場合、 System.ComponentModel.Win32Exceptionの例外が発生しますが、例のごとくWindowsの 「このファイルは開けません。このファイルを開くには作成元のプログラム名が必要です。 インターネットで自動的にプログラムを検索するか、または……」ダイアログを表示するには 例外を受けた後、どのように処理すればいいのでしょうか。
ProcessStartInfo.ErrorDialog = true; で出来ました。申し訳ありませんでした。
ファイル・ディレクトリ情報を 区別せずに読み込む方法はないでしょうか。 fileC.txt fileA.txt dirB (DIR) fileB.txt dirD (DIR) ファイラーでいう所の「ソートなし・ディレクトリを先頭に集めない」 なリストを作りたいのです。
>>488 自作するんだから、区別せずに・・・もなにも、自由自在じゃないか。
まだGetDirectoryとGetFileしか知らないんです。
これだとディレクトリの一覧とファイルの一覧を作るので困ってます。
自由自在とはどんなやり方ですか?
>>490
Directory.GetFileSystemEntries。 まだ試してませんがファイルシステムをそのまま読めそうです。 とても助かりました。色々やってみます。
495 :
デフォルトの名無しさん :03/06/04 06:35
496 :
デフォルトの名無しさん :03/06/05 09:50
WIN32APIとは、なんですか?
498 :
デフォルトの名無しさん :03/06/05 11:49
コンストラクタとは、なんですか?
499 :
デフォルトの名無しさん :03/06/05 12:22
501 :
デフォルトの名無しさん :03/06/05 12:37
>>500 おお、ありがとうございます!!
あれ?中身変わってないですか?
前は確か、こんなんじゃなかったっけ?
>C#入門
>第1回 はじめて触れるC#
>(株)ピーデー
>川俣 晶
503 :
デフォルトの名無しさん :03/06/05 13:20
>>502 いやー本当にすいません。
私にとってあんたは神です。
大変に助かりましたです。
上記のリンク先、非常に気に入ってまして何回か読んでたのですが、
今回幾ら探しても見つからなくて、あれ、どうしたのかな?って感じだったのですが。
どうやら、内容もほんのちょっと変わってた感じなので、
アドレスとかも変わったのかな?
それにしても、
gooやその他の検索サイトとかで幾ら検索しても見つからなかったのは不思議だ、、、。
Regex http = new Regex(@"
http:// ([\w-]+\.)+[\w-]+(/[\w-\./%=\\x3f]*)?", RegexOptions.Compiled);
自分なりにつくってみたんだけど,
URL の ? 以降が置換されなかったりして不完全です.
どなたか正解のご教授を!!
>>505 自分でディレクトリ・ファイル込みでソート
>>506 ソートしたくないんです。
ファイルシステムのままリスト化したいんですが。
FAT情報のリスト化と言えば伝わるでしょうか?
>>507 そういうあまりにも処理系依存な部分は .NET Framework 標準ライブラリから極力排除されてる気がする。
素直に Win32 API 呼び出ししたら?
>>489 https?:\/\/[-\w.!~*'();\/?:@&=+\$,%\#]+
どこぞにこんなのあったけど。
Perl用らしいからエスケープ文字の異同があるかも。
>>508 そうでしたか残念です。
ありがとうございました。
511 :
デフォルトの名無しさん :03/06/06 20:20
DataSetの勉強中なんだけど、 型指定ありのDataSetを自動作成すると、 Nullだとフィールドプロパティで 「値は DBNull であるため取得できません」とか例外出ちゃいます。 文字列なら""で、数値なら0で返してくれるように、 どこかの設定で変更できるのでしょうか? 全部手で直さなきゃダメ?
513 :
デフォルトの名無しさん :03/06/07 01:38
散々既出だと思いますが、
VisualStudio.NETにある
出たり隠れたりするタブみたいなコントロールを
実装したいと思って調べてみました。
どうやら、MSによって提供されていないみたいです。
ですが、これを自作した方がdllとして
公開されているのですが、
参考→
ttp://www.codeproject.com/cs/miscctrl/ToolBox.asp はっきり言ってライブラリを使うのは
ライブラリ厨みたいですごく気が引けてしまい、どうしたらいいか
迷っています。
どうしてもVSのタブみたいなコントロールを使いたいのですが、
どうすればいいでしょうか。
ソースを覗いて見ましたが、正直、自作するには
かなりの手間と時間が必要だと感じました。
かつ、明らかに自分より高いレベルの人が書いたサンプルがある状態で、
書き直そうともなかなか思えません。
変な質問ですが、どうすればいいでしょうか。
アドバイスお願いします。。
なんでだろ〜 public class WindowMenu : MenuItem { public WindowMenu() { this.MdiList = true; this.Text = "ウィンドウ(&W)"; this.MenuItems.Add("上下に並べて表示(&H)"); this.MenuItems.Add("左右に並べて表示(&V)"); this.MenuItems.Add("重ねて表示(&C)"); this.MenuItems.Add("アイコンの整列(&A)"); this.MdiList = true; } public static void Main() { Form form = new Form(); MainMenu m = form.Menu = new MainMenu(); m.MenuItems.Add("ファイル(&F)").MenuItems.Add("終了(&X)"); m.MenuItems.Add(new WindowMenu()); //m.MenuItems.Add(new WindowMenu().CloneMenu()); form.IsMdiContainer = true; Form child = new Form(); child.Text = "child"; child.MdiParent = form; child.Show(); Application.Run(form); } }
>512 うーむ、近いけどちょっと違うみたい。 DBにNullのフィールドがあっても、プログラム側では""か0として 扱いたいだけなんだけど、、、 今まで、DBのテーブルと行に対応するクラスを書いて、 ビジネスロジックもそこに埋め込んでたから、 (行の数量を全部足して総数量とか) ADO.NETではどうやろうかなあ。 型指定ありのDataSetが近いんだけど、 別ファイルのクラスにして欲しいんだよ。 TableとDataRowを継承してDataSetに放り込めるかな? DBスキーマからクラスの自動作成は自作するかな。 ADOからADO.NETはかなーり変わってしまいましたが、 みなさんどうしてます?
ライブラリ厨ってなんだよプログラムなんて過程じゃなくて結果だよ人に厨って呼ばれるのなんて屁でもないねそうおもわなゐ
517 :
デフォルトの名無しさん :03/06/08 17:56
>>517 Splitterクラスがあるからそれ貼り付ければいい
520 :
デフォルトの名無しさん :03/06/08 20:48
iniファイルを使うにはどうすればいいですか?
Iniファイルもろくに扱えないのかよ…
523 :
デフォルトの名無しさん :03/06/09 08:20
javaはインタプリタで c#はコンパイラ なのですかね?
VS.NETでC#を使ってWebサービスなんかのクライアントを作るときに、 WSDLを読み込みますよね. 実際にやり取りされているXMLをモニタするために、接続先のポート番号を クライアント側で指定したいんですが、どこで指定すれば良いのでしょうか? ソリューションエクスプローラーのWeb Referenceや*.wsdl書き換えても 上手くいかないんですけれど・・・
>>524 あぁ〜、自己レスです〜。
申し訳ありませんでした。ブラウザのインターネットオプションで、
localhostとポートを指定したら出来ました。
ただのHTTPだからですね、きっと。
>>523 .java → .class はコンパイラ
.class の実行はインタープリタ(JIT 方式のものもあり)。
.cs → .exe もコンパイラ
.exe の実行は JIT コンパイラ方式。
結局C#の推奨するデータ保存場所はどこなの? exeについになったものとユーザーごとのデータそれぞれで。
>>528 保存する形式と読み書きに使うクラスは?
530 :
デフォルトの名無しさん :03/06/09 22:18
532 :
デフォルトの名無しさん :03/06/09 23:41
C#のダイアログの作成画面で 画面を作成したいと思います。 ひとつのダイアログ内にモード切替ボタンを設置し、 モードが切り替えられたら、画面上に置かれている コントロールをがらっと換える、というようなことをしたいのですが、 コードの実装面では切り替えボタンが押されたら 各コントロールのVisibleをtrue、またはfalseにすることで 実装できると思うのですが、 これだとダイアログエディタ上では 全てのコントロールが表示されたままで ぐちゃぐちゃで一見してわかりにくいです。 これをなんとかする方法ってありませんか? 説明しにくいのですが、つまり、 ひとつのダイアログ上で例えば四つのコントロールの表示パターンが あるとして、ダイアログ上でこれを綺麗に扱いたい、 ということです。 どうかよろしくお願いします。
ダイアログを複数作っておけばいいんじゃなかろうか。
パネル使えばいいんとちゃうかい?
>534 パネル。。 こんなコントロールあったんですね。 是非使わせてもらいます。 ありがとうございました。
536 :
デフォルトの名無しさん :03/06/10 09:17
ついません。 C#でvs.netのツールボックスのようなコントロールはありませんか? 見つかりませぬ。
537 :
デフォルトの名無しさん :03/06/11 03:06
>>536 ツールバーの右の方に確か、並んでたよ。
マウスポインタを置いてみて吹き出しで文字が出てくるから
それで幾つか確認してミソ。
>513 >537 ないでしょ?
おかげさまでパネルコントロールを使うことで ダイアログエディタ上で上手く多数のコントロールを 配置できそうです。 と、思ったのですが、 当方10枚以上のパネルを配備したのですが、 ダイアログエディタ上でぴったり重なったパネルコントロールを 上手く切り替えることができません。 クリックすると一番前面のパネルが選択されるので 最背面へ移動->一旦パネルの選択を解除 ->再度一番前面のパネルをクリック 〜〜 を繰り返して、目的のパネルを探しています。 重なったパネルの数が多いのでこれもなかなか手間です。 なんとかいい方法ないでしょうか? 一枚一枚を微妙にずらして配備したのですが、 枚数が多いので、塵も積もればなんとやら、で同じ場所で コントロールを配備して切り替える、というのから遠ざかってしまいました。 なんとかいい方法ないでしょうか?
>>539 パネルじゃなくて、UserControlを使用して別々の子フォームを作るとか
それならごちゃごちゃしなくていい
>>539 PropertyGridのところにコントロールを選べるコンボがあるよ。
C#のXML処理遅いなあ(´Д`;) 何とか高速化できないものか…
>532です。 >540 UserControl。。 初めてききます。 話しから察するにダイアログの中に別のダイアログを 埋め込むことのできるようなコントロールなのでしょうか? もしそうだとすれば理想的です。 、と思って検索等で調べてみたのですが、 具体的な設定方法がわかりませんでした。 もしかして大きな勘違いをしているのでしょうか? そうでなければ、是非使用方法を簡単にでいいので 教えていただきたいのですが。。 >541 ありがとうございます、これでパネルを使用する際のの切り替えの手間が 大分減らせれそうです。 感謝します。
>>543 C#.NETなら、「プロジェクト」→「ユーザーコントロールの追加」
で、フォームデザイナが出るから、そこに各コントロールを配置。
後は親フォームにControls.Add()すればいい。
>> ダイアログの中に別のダイアログ
簡単に言えばそんな感じかと。
>544 ありがとうございます。 言われた通りにフォームデザイナが起動した瞬間 「なるほど〜〜!!」と叫んでしまいました。 >> ダイアログの中に別のダイアログ と私が表現していたものとは違い、 UserControlというのはひとつのコントロールの中に いくつものコントロールを配備し、 それを全部あわせてひとつのコントロールとして扱うことの出来る コントロール、というわけですね。 長々引っ張ってしまいましたが、非常に感謝しております。 ありがとうございましたー。
探してみたのですがやっぱりありません。 非常に残念です。 とりあえず他の方法を探してみます。
>>532 タブコントロール使えば良いのでは・・・?
なぁ、やっぱりVisual Studio .NETを使わないとダメか?
携帯ゲーム機"プレイステーションポータブル(PSP) このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。 画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。 この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。 任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。
>>548 便利さと時間を金で買うって発想がないならWindows使うメリットはないな。
551 :
デフォルトの名無しさん :03/06/13 06:07
>>538 ないならば、
ウインドウの上の方にはツールバーとメニューバーの二つが並んでて、
ツールバーにないのならば、メニューバーの
表示→ツールボックスと言う順にクリックすれば出てくるはずだと思う。
552 :
デフォルトの名無しさん :03/06/13 06:08
ヒープってなんですか? プログラムから使える、 メモリ領域のことですか?
>>536 はOutlookのようなコントロールのこと?
>>551 VS.NET内のツールボックスを表示させたいのではなく
自分のプログラムに使いたいんだと主wれ
555 :
デフォルトの名無しさん :03/06/14 00:06
C#.NETで、関数の呼び出し履歴を表示する方法がわかりません。 たまに表示されることもあるんですが。 あと長時間するとプロパティウインドウが隠れっぱなしになったりするんですが、 これは環境がプアだからでしょうか?
>>555 [デバッグ]→[ウインドウ]→[呼び出し履歴]
これの事かな
>>556 はいそれです。
表示メニューのところばっか探してました。
ありがとうございました。
558 :
デフォルトの名無しさん :03/06/14 20:46
縦長のリストボックスが 左右に二つ並んでいてその中央に <- <<- -> ->> というボタンのあるダイアログをよく見かけるのですが、 (決められた項目の中から複数選択する為の画面) これを実装するにはリストボックスとボタンを使って 手動で作成するしかないのでしょうか? よく見かけるのでそういうコントロールないのかな、と思ってます。 どうかよろしくです。
559 :
デフォルトの名無しさん :03/06/14 21:41
C#Builder日本語版の計画を知ってる人いる? 出ないはずは無いと思うんだけど,日本法人のニュースリリース見ると 日本語版出すと一言も書いてなくて不安・・・。
>>558 ああ、よく見かけますね、それ。
「決められた項目の中から複数選択する」だけではなく、
選択された結果のリスト中の項目の順番を指定することが
できるようにしたい場合に、使われているような気がします。
このコントロールがライブラリの中にあるかどうかは知りませんが、
このようなコントロールをなんと呼ぶのか、名前を知りたいと思う。
562 :
デフォルトの名無しさん :03/06/16 00:00
複数のフォームがありまして、 それぞれのフォームでDatabaseから検索を行う際、 ひとつのConnectionオブジェクトを使いまわしたいと思います。 具体的な使用方法としては、コンストラクタの引数で渡したいと思います。 Adapter、Commandオブジェクトはそれぞれ受け側のダイアログで作成しますので、 当然デザイナ画面ではAdapterオブジェクトのそれぞれのCommandオブジェクトの Connectionプロパティには引数で渡されてきたConnectionオブジェクトを 設定することはできません。 この状態でデータセットを作成しようとすると、Connectionオブジェクトが この段階では設定されていない(デザイナからは見えない)ので スキーマの取得に失敗してしまいます。 単一のConnectionをうまく使いまわしつつ、 デザイン画面でうまくCommandオブジェクトやDatasetを操作するには どうすればいいのでしょうか? SelectのCommandオブジェクトにしても動的にTextをいじるので うまく扱えません。 よろしくお願いします。
>>560 よかった,安心した。
漏れみたいな個人ユーザ相手にしても大して儲からないとは言え,
VisualStudio2003のことを考えると,ボーランドは商売が上手いのか下手なのか・・・。
564 :
デフォルトの名無しさん :03/06/16 05:39
あー、c#覚えるのめんどくさい、、、。 どうせ、こんな機能つかわねえだろうってのも多いしな、、、。 クラスの色々な機能とか面どくさいっす。 はっきり言って覚える必要ないですよね?
>>564 そういう人は、Cに戻ってください。
C#は、重厚なクラスライブラリ、強力な構文にどっぷり漬かるための言語ですから。
566 :
デフォルトの名無しさん :03/06/16 08:56
>565 ハァ? >564 覚える必要ないですよ。 ヘルプの出来もいいですし、コード補完も便利ですし、そういう方向性かと。
>>568-569 そんなにかまって欲しいのか?
面倒臭いとほざく奴は一生かかっても出来ないから安心しろ。
その程度の自演しか出来ない低脳ぶりじゃ何をやっても駄目だと思うがな。
>>564-566 が自演なのは文体や読点の使い方を見れば判る。
自分で出来ないからといって質問スレを荒らすな。
>>570 必死ですね。別に悪いことじゃないですけど。
「必死過ぎ」にならないように気をつけてね。
こっちは煽りスレとは違うんであんま荒れないようによろしくどうぞ。
573 :
デフォルトの名無しさん :03/06/17 00:32
C#だけじゃないと思うんですけど、ツールバーのボタンを グループボタンにできなくなったんですね。 どうするのですか(T_T)
575 :
デフォルトの名無しさん :03/06/17 00:56
俺、564だけど、566じゃないっすよ。 マジで。
576 :
デフォルトの名無しさん :03/06/17 00:56
>>574 グループ化されたトグルボタンのことでは
577 :
デフォルトの名無しさん :03/06/17 00:58
まあ、結果として俺のせいで荒れてしまったようなのですいませんでした。 正直クラス関係の高度な機能、 ISとかそんなのとかやってらんねーとか感じちゃったもので、、、。 まあ、忘れてください。
必要な機能を探すのが面倒くさいから、MC++で勝手に作って使っている
579 :
JGreener :03/06/17 14:38
C#でディレクトリピッカーみたいなダイアログって、実は標準でないんですか? 宇宙仮面さんのところにそんな記述が・・・。 みなさん、そんなダイアログがほしいときはどうしてますか? なんかフリーのライブラリにあったりするんでしょうか。
580 :
デフォルトの名無しさん :03/06/17 14:40
581 :
デフォルトの名無しさん :03/06/17 14:42
共有アセンブリを利用したコンパイルについて教えて下さい。 仮にLibrary.dllというdllがGACに存在するとして それを利用するClient.csをコンパイルするにはどうすればよいのでしょうか? csc /t:exe /r:Library.dll Client.cs で、自動的にGACを参照してくれるかなと期待したのですが、これは駄目でした。 /libパラメータも違うようですし・・。 分かる方が居ましたら教えて下さいませ。
>>579 その宇宙仮面の所にFolderNameEditor使うやり方があるはず。
自分はそれ使ってる。
.NET Framework1.1では標準であるらしい。
VS.NET2003には標準装備 でもあのインタフェイスは使いにくいから自分で作るけど
なるほどー。 .NET Framework1.1ってSDK配布してないんですね。 さ、さすがM$。 ありがとうでした。
>>581 GACは実行時に参照するけど、コンパイル時には見てくれない。
ので、アセンブリの実際にある場所を参照するしかない。
>>585 なるほどそうだったんですか。
参照するGACのDLLが、例えばSystem.Windows.Forms.dll
のような.NET Frameworkで用意されているようなDLLならば、
/r:System.Windows.Forms.dll
で参照されるようですが、これは特別ということなのでしょうか。
587 :
デフォルトの名無しさん :03/06/17 16:49
厳密名に関する質問です。 アセンブリをsnkファイルで署名すると、マニフェストファイルの .assemblyタグ内に.publickeyディレクティブが生成されますよね。 これで指定されている値は、署名に使用したsnkファイルさえ一緒ならば、 どのアセンブリでも一意な値になるかと思いますが、 この値の正体は何者なんでしょうか?? 署名に使用したsnkファイルをsn -tp xxx.snkコマンドで開き 公開キーを見ても、.publickeyディレクティブで指定されている値 とは全く別なものです。
>>586 理由は2つ
・デフォルトで csc.exe と同じディレクトリに /lib が通ってるから
・csc.rsp でデフォルト参照されるアセンブリが定義されているから
↑ ごめん、2つ目のは関係なかった。
>>588 なるほど、大変よく分かりました。
ありがとう御座いました。
SELECT to_char(log_date,'hh24:mi:ss') cでプリントしたいのですがおねがいします
puts("SELECT to_char(log_date,'hh24:mi:ss') ");
594 :
デフォルトの名無しさん :03/06/17 23:41
dllのversionについてですが 実験的に、あるdllの1.0.0.1を参照するexeを生成して そのdllの1.0.0.0と1.0.0.2をGACに入れたんですが どちらもexeから参照されずに例外が出てしまいます。 無論どのバージョンでもpublickeytokenは同一であり コード自体も全く同一です。 下二桁は互換性ありと.NETランタイムはみなしてくれるかと 思ったのですが、これはなぜでしょう??
595 :
デフォルトの名無しさん :03/06/18 16:42
vb の DoEvent に相当するメソッドはありますか? というのは private bool loopflg = true; private void do_loop() { while (loopflg) { // なんらかの処理を // やり続ける } } private void button_Click(object sender, System.EventArgs e) { loopflg = false; } のように、ボタンが押された時に、ループを止める、という事が やりたいのですが。おねがいします。
Application.DoEvents
VBはスレッドが使えないから苦肉の策でそうなっているだけであって、 C#でやるなら素直にスレッドを使うべき
598 :
デフォルトの名無しさん :03/06/19 04:52
SharpDevelopで最近C#を始めたばかりの者です。 プロジェクトの設定、で実行ファイルのアイコンを設定したのですが、そのアイコンをフォームのアイコンに設定するにはどうしたらよいでしょうか? C#というより、.NET側に関することだと思いますが、お願いします。
ListView(Details)の列サイズを、 Headerを表示させたまま変更不可にするにはどうすれば良いでしょうか?
>>601 (in C#)ResourceManager resources = new ResourceManager("MainForm", this.GetType().Assembly);
これでよいのでしょうか?今から試してみます。
実行ファイルのアイコンに設定したものとは別に、アイコンを埋め込むのじゃなく、参照だか何かで(this.Icon = Application.Iconみたいのがあればよいのだけれど)やりたいのです。
>>609 EXEのアイコンは環境依存だから無理じゃないかな?
WinではデフォでEXE内の最初のアイコンリソースを表示するけど、設定で変えられるはずだし。
他のプラットフォームでどうなるかわからないよ。
612 :
デフォルトの名無しさん :03/06/20 23:06
C#で作られたソフトって結構メモリ食うのですが、なんとかなりませんか?
Javaよりすくないからいーんじゃない?
//this.Icon = new System.Drawing.Icon("sample.exe");
だとエラーになるんすよね。
Application.ExcutablePath とかも駄目だったし。
>>610 >WinではデフォでEXE内の最初のアイコンリソースを表示するけど
じゃぁ、とりあえず最初のアイコンリソースを参照する法宝ってありますか?
>他のプラットフォームでどうなるかわからないよ。
まぁ、とりあえず最近マックもBSDも使ってないし、当面Microsoft .NET/Microsoft WindowsMeでやるし、
他のプラットフォームに移すときには、そこだけ別のコードにするかコメントアウトすればよいだろうし。
>>614 this.Icon = new System.Drawing.Icon("icon.ico");
これで出来たけど
616 :
598, 609, 614 :03/06/21 02:29
>>615 >this.Icon = new System.Drawing.Icon("icon.ico");
>これで出来たけど
いや、それはアイコンを別ファイルから読み込んでるんだし、出来るのは知ってる。
俺が言ってるのは
this.Icon = new System.Drawing.Icon("sample.exe");
って感じで、EXE自身から読み込みたいってこと。
>>612 ウインドウをいったん最小化して元に戻す
ポップアップメニューに水平線を追加するにはどうすれば?
水平線を示す記号を一文字入れるだけ
1970年1月1日からの秒数ってどこからわかりますか?
>>621 DateTime now = DateTime.Now;
TimeSpan t = now.Subtract(new DateTime(1970, 1, 1));
t.TotalSeconds;
でいいんかな
引数で受けたHWNDをC#で使うにはどうしたらいいですか?
パケット通信中にボタンを表示させようとすると、なぜか無限ループに陥ってしまいます。 通信先のサーバーをシャットダウンすると直るのですが、この症状は何が原因でしょうか?
ループの脱出条件は?
626 :
デフォルトの名無しさん :03/06/23 06:25
C# でリモートのマシンに Node Status Request を送って NetBIOS 名を取る方法をご教授くださいゴルア
627 :
デフォルトの名無しさん :03/06/24 19:34
C#で文字列操作したいのだが、Stringクラスは扱いにくいです たとえば日付変換で20040212を2002 11 3のフォーマットにするとき Stringクラスでできますか?いろいろためしました なんかヒントください
>>627 Stringのリファレンスを読んでください
>>627 DateTimeクラスやRegexクラスとか。
>>628 StringクラスにCharsというプロパティがあって
Stringクラスを添え字で入れ替えできるとありました
しかし、コーディングしてみるとCharsプロパティがありません
これはバグですか?
C言語のChar[]のように自由に入れ替えたいのですが
StringクラスもSystem.Text.StringBuilderも書き換え禁止みたいですよ
クラス=”文字列”もできないし
>>627 DateTimeクラスは別で使えそうですが、
特殊なフォーマットには対応してないみたいです
9999△△9△2みたいに半角スペースがはいったやつは手作業で
やったほうがいいみたいです
こまったことにTextBox.Textに入力して扱いたいので
どうしたらよいでしょうか?
>>630 本当にドキュメント読んでるのかはなはだ疑問だな・・・。
入れ替えできるなどとは一言も書いてないし、
文字列のフォーマットもCharsのこともちゃんと書いてあるぞ。
string org = "20040212";
string str = string.Format( "{0} {1} {2}", org.Substring( 0, 4 ),
int.Parse( org.Substring( 4, 2 ) ), int.Parse( org.Substring( 6, 2 ) ) );
クラス=”文字列”ってなんだろう・・・・。
>>632 意味がわかんないけど、stringクラスの話なの?
operatorが無かったら使い物にならないよ。
630は > クラス=”文字列”もできないし について説明すべきだ
630か、スマソ。 あきらかに馬鹿っぽいから読んでなかった。
テキストボックスに指定したテキストを指定した色で追加するというようなメソッドはありますか?
>>630 >9999△△9△2みたいに半角スペースがはいったやつ
DateTime date = DateTime.Parse("9999 9 1");
できるよ。
というか日付弄るなら、
DateTimePickerとかもっと他の扱いやすい方法があるはず。
今、環境がないので、試せないのですが、 配列のコピーで、 int[] dst = new int[size]; for(int i = 0; i < size; i++) { dst[i] = src[i]; } と int[] dst = new int[size]; Array.Copy(src, dst, size); は、どちらが速いでしょう?
上げてみよう。
チャット等で、TextBoxにテキストを追加しても自動的にスクロールしてくれないのですが、 自動的にスクロールさせるにはどうすれば。
訂正前 クラス = ”fdfsdf”; 訂正後 インスタンス = ”sdfd”; なかなかMSDNが読めなくて(汗 日付の件ですが日付のようで文字列なんです 入力するときもデータベースに格納するのき も文字列形式なんで日付クラスを使うか悩んでます でも、原始的な方法でできました。 StringClass.insertでやりました いちおう報告です
おれは630は別の言語の話をしているようでならない・・・ stringは代入も出来るしフォーマットも出来るし ってゆーかStringClass.insertってなんだ??
すまん、、、、C#なんですが string str; str = "aBC"; aa[0] = 'A';こうゆうのができない しかたなく str.substring(0,'A'); str.insert()のようなメソッドでやってます という使い方を間違っていたかもしれません
日付に関しては "20030627" ^-> "2003 627"というフォーマットに変換 するにもDateTimeクラスの扱いは俺には理解に苦しい、、 だからこうするしかない str = str.substring(); ← これのくりかえし
日付のフォーマットは631に答えが出てるだろうが
648 :
デフォルトの名無しさん :03/06/26 19:49
649 :
デフォルトの名無しさん :03/06/26 21:42
BinaryReaderにはReadBytesなんてありますが、 ビット単位で操作できるReadBitsなんていうのを 持っているクラスはないですか?
それはつまり単純に演算をかませば済むことを 5+6 とか自分で書かずに、専用クラスは無いかと聞いているのか? 凄まじく無駄だと思うのだが
検索とかかなり面倒な気がして。
ReadBitsが上から読むか下から読むかあいまいで宗教戦争の元になる ほしいなら自分で作れ
下から読むことあんの?
インディアン嘘つかない。
>>645 うまい。でも、BinaryReaderを例に挙げてるから・・・
.NETってエンディアンについてなにか規定されてたっけ
すいません、 リストボックスの選択項目によって スイッチ文で分岐処理をさせたい場合のプログラムなのですが、 そのときの変数はtypeで良いのでしょうか? でも、typeで分岐させてもそう言う識別子は存在しないと言うエラーが発生してしまうのです。 どうしたら良いかわかりません。 お願いします。
c:\visual c#.net\chap02\データ型\Form1.cs(151): 'System.Windows.Forms.Control.text' はアクセスできない保護レベルになっています。 このエラーメッセージにはどう対応したらよいのでしょうか?
アクセスできる保護レベルにしてください
リストボックスのプログラムからの利用の仕方とかってどう勉強したら良いんですかね? どこかに 詳しく紹介してあるサイトとかないですかね? かなり行き詰ってます。 助けてー。
ぎゃあ、英語だー!! うえーん。 やはり英語がしゃべれる人じゃないと、c#プログラマーにはなれないのかなー。 もう、駄目ポ、、、。
別に話せる必要はない 読めればいいし、読めなければ翻訳ソフトでも使えばいい 対処の方法を考えようともしないところが駄目
翻訳ソフトもってないんすよ。
本当に、色々とすいません。 日本語は勿論読めますが、 リンク先の日本語が読めるか微妙ですが、 頑張ってみます。
>リストボックスの選択項目によってスイッチ文で分岐処理をさせたい switch(listBox1.SelectedItem.ToString()) { case "A": . . . } これだけの話じゃないの?
自分は657、659、661、663、665の者ですが、
どうも、visualc#.NETを買ったときにについてくる、
マニュアルの内容が間違ってたみたいです。
マニュアルどおりにコーディングしたのに、プログラムが正常に作動せず、
おかしいなそんなわけ分けないだろ、俺はちゃんと入力してるはずだと
思ってましたが、どうやらそもそもマニュアルが間違ってるようですね。
すいませんでした。
>>668 >>669 おお、ありがとうございます。
今度はこれを試してみます。
すいません。
671 :
デフォルトの名無しさん :03/06/29 23:11
自分でUserControlを派生させて作成したコントロールを フォームに貼り付けて利用しています。 ユーザーコントロールにフォームでいうところの AcceptButtonにボタンを設定したような動作をするボタンを実装させたいですが、 そのようなプロパティがなく困っています。 まず、フォーム側でエンターキーが押されたら ユーザーコントロール側のボタンのPerformClick()を呼んでみました。 仮に押したいボタンをButton1とします。 Button1.PerformClick(); こうするとユーザーコントロール上のButton2がアクティブな場合にも 当然Button1のクリックイベントが発生してしまいやっぱり駄目でした。 どうやればAcceptButtonプロパティを設定したかのような 動作をさせることができるのでしょうか? よろしくお願いします。
あぼーん
なんとなく思うんだが、
>>670 は C# が大文字と小文字を区別する事を知らない気がする。
>>670 ----------
>>657 >>でも、typeで分岐させてもそう言う識別子は存在しないと言うエラーが発生してしまうのです。
>>659 >>c:\visual c#.net\chap02\データ型\Form1.cs(151): 'System.Windows.Forms.Control.text' はアクセスできない保護レベルになっています。
----------
明らかに打ち間違いっぽいな。
>>673 >>674 いやいや、幾らなんでも自分はそこまでアホではないですよ。
私はアセンブラやC、ベーシック、コボルと
今まで素人なりにかなりのプログラムには親しんできたつもりです。
ただ、最近のブームである
コンポーネント指向や、オブジェクト指向には全然ついて行ってない者なのです。
そのため、c++やvbなどには全然精通していなくて、
いきなりc#へ行ったので混乱してるのではないかと自分では思っとりますです。
プラットフォームもDOSまでしか知らずWINプログラムのメカニズムには詳しくないですし。
実際にc#を学んでて思うことは、vbやc++を前提にして説明してることが多いなーと言うことですね。
と言うわけで、やはり段階を踏んでVBやc++から学んで行ってたら俺ももっとスムーズに
学べたのかもなーと思っています。
まあ、そんなことは言っててもしょうがないのでこのまま頑張ってみますですよ。ハイ。
>>675 気付いてないのかもしれないから念のため。
textじゃなくてTextだと皆言っている。
自分が間違っているのにヘルプが間違っているなんて言っているから、
皆あきれている。
お聞きしたいことがあります。 C#をはじめたばかりなのですが、試しに時計を作ってみようとしています。 それで、日本以外(例えばドイツのベルリン)の時間を表示しようとしているのですが、 どうやっても他の国のタイムゾーンの時間を取得できません。 CultureInfo とか TimeZoneとか使っても、表示形式(format?)しか変えられませんでした。 どのようにすればよいのでしょうか?
>>675 素人でコボルやるやつっているのか。
しかし、CやってたんならText()をtext()とか間違ったりないよなぁ
・・・とか思ってみる。
>>680 早速のレスありがとうございます。
ちょっとがんばってやってみます。
>>680 さんに張っていただいたリンク先の
「タイムゾーンの使用」を元に以下のようなコードを
書いてみたのですが、やはり日本のオフセットでしか
取れませんでした。
どこか勘違いしているのでしょうか?
CultureInfo English = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = English;
DateTime LocalTime = new DateTime(DateTime.Now.Ticks);
DateTime UtcTime = LocalTime.ToUniversalTime();
String StandardFormat = "MM/dd/yyyy hh:mm:sszzz";
String strLocalTime = LocalTime.ToString(StandardFormat);
Label1.Text = strLocalTime
>>676 >>677 >>679 私がコボルを習得したのは情報処理の専門学校へ行ってたときです。
結構前の話で、まだコボルを勉強する機会があった最後のほうですね。
結局卒業する頃にはその学校の方針も変わって
もうコボルの時代ではない、これからはCをやれと言う話になって、
なんじゃいそりゃ!って感じでしたね。当時は。
あれは、確か92,3年の頃の話で、WIN3,1の時代でした。
で、大文字と小文字は私は本当に間違ってないです。
確かにコピペした時はおかしくなってましたが、それはマニュアルを信用できないと判断して、
大文字や小文字、他の識別子などに色々と変えてみてチャレンジしてた過程での話ですんで、、、。
で、マニュアルの間違いについてですが、それを一応報告しておきます。
私と同じような初心者のつまずきを防ぐ意味もあるでしょうし、
私のせいでお騒がせしてしまったみなさんにも一応報告しておきたいと思いますので、、、。
visulal c#.net Standard 製品に同梱されてる 「今からはじめるVisual c#.net」 と言うマニュアルの 2,7 primitiveDataTypesサンプルプログラム のソースの部分で、以下の識別子が間違えています。 ・label2とlabel3を混同している。 ・typeとlistbox1を間違えている。 ・valueとtextBox1を間違えている。 ・quitとbutton1を間違えている。 以上です。 幾つかの間違いはコーディングの段階で自分でも気がついたのですが、 litbox1については最後まで解らなかったですね。 ただし、デザインビューの部分でのプロパティウインドウのNemeの項目の部分が、 実際のコードウインドウでのソースコード内で使われる識別子であると言うことが解れば 別に何でもない部分でしたね。 でも、そう言うことがマニュアルで説明されてない段階でのレッスンであったために 私と同じような部分でつまずく人は多いのではないかと思います。
>>685 あれま!!
今まで自分でコーディングしてたのが、馬鹿みたいですね。
でも、素晴らしいリンク先を紹介してくださって嬉しいです。
感謝!!
もっと言えば、 マニュアルの(名前)の部分と(NAME)の部分が間違いだったとも言える。 そこだけに着目すれば、間違いは1つだけになる。 だが、確かに言葉の意味合いは同じだけど、プログラムで文字が違うのはやっぱり痛いですね。
TreeViewの選択ノードをフルパスで取得保存しておき、 次に起動したときそれを元にツリーを構成し、ノード選択状態にする場合、 取得しておいたフルパスをノード単位に分割して一つずつ判別していく方法しかない?
>>682 標準時さえ分かったら後は足し算引き算。
ユーザのUTCからの時差は実行時にしか分からないが
ある地域の時差はソース書く段階で分かるだろ。
c#って日本語の識別子が使えるんだね。 ネーム空間や変数クラスなどに もう、自分、日本語の識別子使いまくりですよ。 いやー読みやすくって良いですよねー。 、、、本当はいけないことなのかな、、、?
>>690 MS は多言語対応ちゃんとしてるから特に問題はないと思われ。
でも、いちいちIMEで変換するのが面倒だろ。
もう、 int 変数A、変数b; とか、 class クラスA; とか、やりたい放題ですよ。 いや、cやアセンブラとかの頃とは全然違うこのやりやすさ。良いですねー、、、。
モナー _モナー = new モナー(); _モナー.オマエモナー(); うむ、やりたい放題だ。
>>689 レスありがとうございます。
えーと、それはまずどこかのHPとか書籍で時差を調べてから
足し引きのコード書いて時間を出す。ということですよね。
全部ソース内で計算させることは不可能ってことでしょうか。
先輩がVBで全部、内部で処理しているらしいので、C#でも出来るかな
と思ったのですが。無理かな?
うー。がんばって時差調べます。
for(int i = 0; i < array.Length; i++) と書くのと、ループの先頭に戻るたびに Length プロパティを参照しに行っちゃうんですかね? int a = array.Length; for(int i = 0; i < a; i++) と書いたほうがいいんでしょうか。
>>695 自分で作ったクラスをデバッグで確認すればわかるけど、毎回参照する。
といっても、配列のLengthならいちいち別の変数にコピーする必要なんてないと思う
>>695 そのくらいコンパイラが見抜いてくれるのでどっちでも同じ。
699 :
デフォルトの名無しさん :03/07/05 13:25
>>695 こういうのって昔のプログラマーの考え方だよね
今は重いソフトをいかに作れるかが問題
700 :
デフォルトの名無しさん :03/07/05 13:34
質問 画像VIWERを作ってるのですが PictureBoxを表示した画像のファイルを削除しようとすると 他のプロセスが使用中となって削除できません。 一旦PictureBoxを削除しないとダメなのでしょうか? 画像ファイルをクローンしたりいろいろしましたがうまくいきません よろしくお願いします
>>700 C♯相談室 のログに同じネタあったような。
702 :
デフォルトの名無しさん :03/07/05 13:40
>>701 お、そうですか?
くだすれのログしか見てなかった
ここの過去ログに載ってるやり方だとうまくいかなかったので
そっち見てきます
>>702 ありゃ、ここにもあったんだ。
相談室じゃなかったかな。
違ってたらスマソ
>>703 相談室全過去スレ
pictureと画像で検索したけどありませんでした
pictureBoxがファイルにアクセスしてるから
それを解除したらいいと思うんだけど・・・んーむずかしい
ああ、それ俺が答えた気がする。 結局ストリームから読み込んでそれを明示的に閉じるようにすればできるんだが。
>>705 ストリームに取り込むとはこういう感じでしょうか?
理解できてないせいかうまくいきません
FileInfo fi=new FileInfo(filename);
FileStream fs=fi.Open(FileMode.Open,FileAccess.ReadWrite);
fs.Close();
fi.Deleted();
これでどうかね string fileName = "sample.jpg"; Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read); Image image = new Bitmap(stream); stream.Close(); File.Delete(fileName);
>>707 遅レスですいません
それでも、別のプロセスが使用中と出て削除できません・・・
何が悪いんだろ・・・
>>709 そのままコピペしてやりましたがだめでした。
どのプロセスが使用中か調べる方法ってありますか?
File.Delete(fileName); この部分で「別のプロセスが使用中」と出ます
何だ?仕様変更があったのか? 俺が使ってるのはv1.0.3705だが。 お前本当に public static void Main() { string fileName = "sample.jpg"; Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read); Image image = new Bitmap(stream); stream.Close(); File.Delete(fileName); } ってやってみたのかよ? もしそれでも例外でるなら、実際に他のプロセスが使ってるんだろ(シェルとか
>>711 VSが握ってるんじゃないの?
VS再起動するとか。
>>712 v1.0.3705.288で最新です
Mainではなくて関数でやってます。
別関数でpictureBoxに画像表示して
また、別の関数でそのファイル削除しようとしてます
これがいけないんでしょうか?
>>713 再起動してもだめでした
追記 それとフォルダ内のファイルの一覧をリストボックスに表示してます
>>715 とりあえず
>別関数でpictureBoxに画像表示
>別の関数でそのファイル削除
ここのコードうpしる
RichTextBoxにテキストを追加した時に、 自動的に最後の行までスクロールさせたいのですが、どうすれば。
>>716 ご助言お願いします
protected void PicView()
{
//ファイルが存在するかチェック
if(CheckFile())
{
pictureBox1.Image=Image.FromFile(fileListBox.SelectedItem.ToString());
//this.Size=pictureBox1.Size;
}
}
protected void DelFile() { string fname=fileListBox.SelectedItem.ToString(); int idx=fileListBox.SelectedIndex; Stream stream = new FileStream(fname, FileMode.Open, FileAccess.Read); Image image = new Bitmap(stream); stream.Close(); //最後のファイルだと次のフォルダのファイルリストが表示されてるため //最後のファイルでない場合だけファイルリストの項目を削除 if(idx!=fileListBox.Items.Count-1)//削除対象が最後のファイルでないなら { NextSelect();//次のファイルにを選択 fileListBox.Items.RemoveAt(idx); } else NextSelect(); PicView(); File.Delete(fname); }
>>720 ?
見え難いですか?空白にスペース入れるやり方わからなくて・・?
??
どこがいけないんでしょ?
なんだこりゃ。話聞いてたのか?
>>721 いや、、、まさか本当にコピペされてるとは思わなかった。
Stream stream = new FileStream(fname, FileMode.Open, FileAccess.Read);
pictureBox1.Image = new Bitmap(stream);
stream.Close();
こういうことを言いたかった
>>723 そうでしたか。。
一応その通りやったのですが、やはりプロセスエラーになります・・・
今試しにやったけど、出来たよ void ViewFileList(string directory) { listBoxFiles.Items.Clear(); string[] files = Directory.GetFiles(directory, "*.jpg"); foreach (string file in files) listBoxFiles.Items.Add(file); } void DeleteImage() { string fileName = listBoxFiles.SelectedItem.ToString(); File.Delete(fileName); } void ViewImage() { string fileName = listBoxFiles.SelectedItem.ToString(); Stream st = new FileStream(fileName, FileMode.Open, FileAccess.Read); pictureBox1.Image = new Bitmap(st); st.Close(); }
なるほど!! 画像表示させたら、すぐストリーム閉じてるんですね? 閉じないとずっと開きっぱなしになるのか・・ DelFile()関数の先頭に↓追加したら pictureBox1.Image.Dispose(); 1回だけ表示されたのは普通に削除できるけど 2度開いたのはプロセスエラーなるのは 表示されるごとに、ストリームが増えるためだったんですね! それで試して見ます。お世話かけました ありがとうございます
>>725 試して見たら、うまくいきました!
最近の言語って簡単になった分、見えないところでいろいろやってるんですねー
pictureBoxってファイルストリーム開いたら、閉じないで開きっぱなしにしてるのか
助かりました、ありがとう!
なんか変なのにかき消されてるなぁ(´・ω・`) logArea.SelectionStart = logArea.Text.Length; logArea.Focus(); logArea.ScrollToCaret(); とやって自動スクロール自体は実装できたのですが、 どういうわけかFocusメソッドが最初の一回しか成功しません。 Focusメソッドがfalseを返す原因って何がありますか?
730 :
デフォルトの名無しさん :03/07/06 18:30
コメントにxmlを使って書きますが、あれを自動的にドキュメントにしてくれるツールとかでいいのは無いでしょうか? いいのがあったら紹介してください。 ms-help://... で使えるようになったら一番いいのですが・・・
>>730 VS.NET付属の使うとか、NDocとか。
たしかNDocはMSDN型式にしてくれたと思う。
>>731 >VS.NET付属
これはどうやって使うのですか?
メニューを一通りみたのですが、見つからないです
コマンドラインから直接使うとかするのでしょうか?
>>734 有難うございます、これは助かります。
>>733 正規ユーザーです、なんでも割れ厨にしない!
正規の割れユーザなんているのか
>>735 君がユーザー登録できたら正規ユーザーと認めるよ
インストール時に認証手続きがあるから割れユーザーになれないのでは?
>>738 認証クラックパッチなんて出回ってるじゃん
つーか、プログラマなら認証クラックするの余裕じゃん
741 :
デフォルトの名無しさん :03/07/07 13:40
逆アセンブルもできないのにプログラマですか? デバッグできないプログラマなんて誰が必要とするのだ?w おれはプログラマじゃないが認証クラックの仕方ぐらいわかるぞw
そりゃその辺りに落ちているツールを使えばプログラマじゃなくても分かる
ファイルを右クリックしてプロパティの概要を見てみると、タイトルとか表題とかいろいろありますよね。 それを取得したり設定したりしたいのですが、いろいろ探しても手がかりすら見つかりません。 誰か知っている人がいるなら、教えていただけないでしょうか?
>>743 クラックすることができるって言ってるんだよ
お前やり方知らないのか?( ´,_ゝ`)プッ
機械語って意味わかる?( ´,_ゝ`)プッ
最近のプログラマは高級言語しか使ったことないですか?そうですか
>>746 いや、そういうことではなくて、Explorerなどで表示されているファイルを右クリック、プロパティを表示して、
概要タブを見てみると、タイトル、表題とかのテキストボックスがいろいろ並んでますよね。
そのテキストボックスに入っている値を取得したりしたいのです。説明不足ですみません・・・
>>748 > 何を取得したいの?
コメント(M)の所です。
> 目的は?
プログラム上、ファイルにコメントを格納しなければいけない為です。
ファイルパスとコメントをHashTableで格納し、シリアライズして保存してもいいですが、
せっかく欄があるんだからそれを活用できないかなと。
>>749 あれは、シェルエクステンションだったと思う。
というわけで、直接 C# とは関係ない。COMInterop だね。
>>745 あほだな。プログラマなんてそれこそレベルはピンきりで、プログラマ=クラック
できるなんて短絡的に結び付けられるものではない。
で、指摘されたらまた必死になっちゃって・・・。
>>747 あれって、NTFSの名前つきストリーム機能を使ってたような気がする。NTFS以外の
ファイルシステムでも使用するのであれば注意が必要かも。
>>745 だからツールを使えばプログラムとは無縁の厨房でも
>クラックすることができるって言ってるんだよ
他人の作ったツールを利用するだけのスクリプトキティーが何を必死になっているんだか
>>750 ,751
返事遅れてすみません。
> というわけで、直接 C# とは関係ない。COMInterop だね。
> NTFSの名前つきストリーム機能を使ってたような気がする。
情報サンクスです。ちょっと調べてみます。
すいません。 ヒープとかエイリアスって用語は具体的には何を意味しているのですか? 前者はプログラム動作時に動的に割り当て可能なメモリ領域で 後者は別名と言う意味なのですか? マニュアルに何の断りも無く自然に使われてるってことは プログラマーの間では当たり前の用語なのですかね?
あー、勉強、めんどくせー。 本当の話、デリゲードとかそんなん知らなくても ソフト作れるよな。 っな、勉強しなくても別にかまわねえだろ? 頼む、そう言ってくれ!!
>>755 デリゲードは知らなくてもかなりやっていける。
デリケートなのでデリカシーのない人は嫌いです
ヤッター。お許しが出たー!! 大体、そもそも良く考えたら 言語の全ての文法、キーワードを習得してから 開発を始めることなんて実際にはほとんど無いよな、、、。 俺はそもそも最後まで習得してから開発を始めようと思ってたのがそもそもの間違いだったな。 良く考えたら俺も昔は実際には開発しながら同時にプログラムの勉強もしてたしな。 良く解らなくても、ヘルプやマニュアル見ながらやりゃ、なんとかなるだろ。 よし、今度からは実戦だ!!
別に一部分しか覚えなくてもプログラムは作れるけど、知っている人より不利になるだけ
>>754 まあ、割と当たり前の用語だけど、どういう品のマニュアル?
>>760 勿論c#ですよ。
「今から始めるc#.net」です。
>>761 VC# .net standard に付いてるおまけだっけ?
それのターゲットは「C#初心者」であって
「プログラミング初心者」じゃないんだろ。
763 :
デフォルトの名無しさん :03/07/11 15:34
C#を使って、Bitmap同士のAndやXorなどを取るにはどうすれば良いんですか?
>>762 じゃあ、俺みたいな初心者に教えてくださいよー。
俺には解らんのですよー。
>>763 一こまずつやるしかないね。
>>764 まあ、初心者向けの書籍を買えということだろ。
VC# の付録のは、あくまで C++ とかからの
移行を促進するためのものだと思われ。
>>765 確かに、結構丁寧に書いてある気がするけど
プログラム初心者がこれで始めるのはきついと思ったな。
767 :
デフォルトの名無しさん :03/07/12 17:23
質問 try catch(Exception e) ですべての例外をキャッチできるって本に書いてあったんだけど、 WEB Reference *.cs =ウェブサービスを呼び出すコードで +$exception{"Exception of type System.StackOverflowException was thrown."}System.StackOverflowException が、そのtryの箇所ででるんだけど、なんで?
>>766 うん。俺から見ても、
昔に比べたら、かなり親切になってると言う実感はあるね。
まあ、それでもやはり、初心者には厳しい側面もあるが、、、。
俺が10年以上前にvc++バージョン1を買った時は、
本当に酷かった、、、、。非常に重かったし、、、、。
その上、まだfdの時代でfd2,30枚組とかそんな感じだったな、、、。
SqlCommandクラスのPreparedメソッド使うと、 数十回SQL実行するとしてパフォーマンス全然違いますかね?
つまり、例外キャッチされるはずなのに、そのエラーが出てとまる。
C#のユーザーってC++の次に多いんですか?
772 :
デフォルトの名無しさん :03/07/13 16:03
StreamWriter sw = File.CreateText( Directory.GetCurrentDirectory() + "\\hoge.txt" ); sw.Write( f.FileName ); sw.Close(); このコードでカレントディレクトリにファイルを作成(上書き)しようとしているのですが コンパイルも問題なく通るし何の例外も投げないのですがファイルが作成(上書き)されていません 何か間違っているのでしょうか?
>>772 そのままコピペしてやってみたけど、問題なく動作したよ
>>772 カレントディレクトリって、exeがある場所とは限らないよ。
>>773-774 レスありがとうございます
そうですか。動きますか…
ちなみに
StreamWriter sw = File.CreateText( "\\hoge.txt" );
こうするとc:\にちゃんとファイルが作成されますね
となるとどこか別の場所に人知れずファイルが作成されているのかな
そもそもカレントディレクトリの定義がわかってないことも判明しました・・・
検索にも引っかからないんですよね〜
>>772 exe ファイルのある場所は Application.StartupPath。
ユーザディレクトリとかは System.Environment.GetFolderPathで取得。
>>778 Application.StartupPath
これでうまく動きました
ありがとうございました
ガページコレクションって何さ? あと、ヒープとエイリアスもなによ? ねえねえ、先輩方教えてくださいよー。 たのんますよー。
教えない。知的財産をただで引き出そうとする乞食には
782 :
デフォルトの名無しさん :03/07/14 03:04
private void button1_Click(object sender, System.EventArgs e) 別のprocedureから↑を呼び出したいのですが、どういう記述になるのでしょうか? button1.Click;と書いてみましたが、button1.Clickは+= 、-=の左側にあるものですというようなエラーが出ていますが意味が良く分かりません。
button1.Click はイベントなので、 普通の関数みたいな呼び出し方は出来ません。 button1 の Click イベントに対応する処理が button1_Click メソッドです。 コードエディタによって追加された部分に、 this.button1.Click += this.button1__Click(...) と言った記述があるはずです。 で、button1_Click 自体はただのメソッドですから、 これを普通に呼び出せばそれで OK です。 private void some_Procedure(...){ ... this.button1_Click(...); ... }
カスタムコントロールの作成をしているのですが、 コントロール内部の初期化処理で DB 接続する部分があって、 デザイン時にタイムアウトするまで固まった挙句、 接続失敗みたいなエラーが返ってきて鬱です。 (接続に使うパラメータはコントロール外部から与える予定なので) DesignMode とか言うプロパティを使って if(this.DesignMode == false){ // 接続処理 } みたいな書き方をしたら回避できたのですが、 完成したコントロールを他のフォームに貼り付けたところ、 (ファーム側の初期化処理で接続に必要なパラメータを設定している) デザインモード時にやっぱりエラーが出てしまいます。 実行時には問題なく DB 接続してサックリと動くのですが... どうやら DesignMode はコントロール自身がデザイン中かどうかしか感知せず、 コントロールの貼り付け先がデザイン時かどうかなんて知ったこっちゃないっぽく。 Site とか言うプロパティをこねくり回すとどうにかなるような記述を見つけたのですが、 ヘルプのコード見ても何やってるかわかりません。 どこかに分かりやすいサンプルとかないでしょうか?
>>783 どうもありがとうございます。
うまく行きました。
786 :
デフォルトの名無しさん :03/07/14 12:40
質問 try catch(Exception e) ですべての例外をキャッチできるって本に書いてあったんだけど、 WEB Reference *.cs =ウェブサービスを呼び出すコードで +$exception{"Exception of type System.StackOverflowException was thrown."}System.StackOverflowException が、そのtryの箇所ででるんだけど、なんで? つまり、例外キャッチされるはずなのに、そのエラーが出てとまる。
>>786 catch の中で例外が発生してるとか
788 :
デフォルトの名無しさん :03/07/14 21:29
textBox1を全くフォーカスを受け取らなくさせたいのですが何かスマートな方法ありますか? いまのところ、フォーカスを受け取った瞬間に別のコントロールにフォーカスを移すことで見た目上フォーカスを受け取らない感じにするしか思いつきません。
>788 背景白のラベルにすれば?
>>789 フォーカスを受け取らなくする前に一度だけ入力させてるんです
あ、ラベルとテキストをVisibleで切り替えるようにしたら楽そうですね。 難しいコードも書く必要なさそうなんで、とりあえず、これで行ってみます。 どうも
792 :
デフォルトの名無しさん :03/07/14 22:36
コントロールボックスの最大化ボタン、最小化ボタンが 押された、という通知を受け取りたいのですが、 どうすれば受け取れるのでしょうか? よろしくお願いします。
textBoxとLabelのBorderStyleがどうしても合わないウツダ...
>>792 WndProc をオーバーライドして、WM_SYSCOMMAND をフックする、かな。
>>793 ラベル単体でやろうとせず、背景色白、ボーダーなしのラベルをPictureBox の上に
配置するようにすればいい感じだよ。
>>794 ありがとうございます。
WndProcについて検索してみます。
以下の3通りの方法でテキストファイルを作成しました。 StreamWriter sw = File.CreateText(@"d:\doc\utf8-a.txt"); sw.WriteLine("あいうえお"); sw.Close(); sw = new StreamWriter(@"d:\doc\utf8-b.txt", false); sw.WriteLine("あいうえお"); sw.Close(); sw = new StreamWriter(@"d:\doc\utf8-c.txt", false, System.Text.Encoding.UTF8); sw.WriteLine("あいうえお"); sw.Close(); どれもUTF-8で書き込まれるのですが上2つはバイナリレベルで同じ内容でしたが 3つめのファイルはファイルの先頭になにやら3バイト余分についていて そのあとは上2つと同じ内容が書かれていました。 上2つのファイルはIEや秀丸で開くとShift-JISと判断され化けます。 3つめのファイルは、ちゃんとUTF-8と判断され正常に表示されました。 たぶん頭の3バイトで文字コードを判定しているのだと思うのですが ぐぐりましたが、この辺の情報がみつかりませんでした。 UTF-8は頭に自分がUTF-8だという情報をつける、というのが正しいフォーマットなのでしょうか? また上2つは、どういう意図でそれらの情報を欠落させて出力しているのでしょうか? ちなみに sr = File.OpenText(ファイル名) sr = new StreamReader(ファイル名) sr = new StreamReader(ファイル名, Encofing.UTF8) いずれの方法でストリームを開いてReadLine()しても結果は「あいうえお」ときちんと読めました。
>>797 即レスありがとうございます。
でも、なんで最後の方法で書き込んだときだけBOMをつけるんだろう・・・
IEの文字コード自動判別には役に立ってるし。
>>799 はじめの2つはSystem.Text.Encoding.UTF8を使ってないから
GDI+で スプライトのようなことをさせる場合は、 四角形の内側を塗りつぶすブラシのビットマップにキャラクターの絵を描いて その絵の回りを透明色にしておくべきか、 それとも直接ビットマップを貼り付けるべきなのか? どっちが良いんですかね?
>>802 .NET Framework 1.1のドキュメントには
> このコンストラクタは、 GetPreamble メソッドが空のバイト配列を返す UTF-8 エンコーディングを使用して StreamWriter を作成します。 BaseStream プロパティは、 stream パラメータを使用して初期化されます。
とある。
これが 1.0 からの動作なのかどうかは知らないけど
タスクバーに表示されるアプリ名とFormのCaptionを同じにしたくないのですが、それぞれどういうふうに指定すればいいんですか?
aption?
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
807 :
デフォルトの名無しさん :03/07/15 11:30
「整数iが30〜84に含まれる場合」 というif文はどのように書くのですか?
i が29より大きいときと、85より小さいときを繋げて書けばいい。 ここで聞く前に初心者向けの本でも読んだ方がいいぞ
i>=30 and i<=84
Delphiみたいに一つにまとめて書けないかなと思いまして。 if i in [30..84] then // Delphi C#はまだ言語的に劣ってるようですね。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
優劣ならそっちですが、今回は質問がメインなので
>>810 それが特に優れているとも思えないんだけど・・・
815 :
デフォルトの名無しさん :03/07/15 15:00
ああこいつ、すぐコード書きあって力比べしようって言う奴じゃないかな。 相手しないほうがいいよ。
>>810 そんなものは範囲オブジェクトを作ればいいだけの話なので
言語仕様として取り入れるまでも無いわ。
#define lim(,d,a,b) (d>=a && d<=b) if(lim(i,30,84)) //C
C# じゃマクロ使えんな
C#の限界でつか?
マクロは使わないことが推奨されてます C++で使ってる奴はHage
ベータ版の言語ですか?
永遠のベータ
漏れは if (30 <= i && i <= 80) って書くのが好き。
826 :
デフォルトの名無しさん :03/07/16 20:32
C#でWindows APIを使った場合、.NETで開発してる価値が下がりますか?
100%、WindowsAPIで作ったら.NETにする必要はないだろうな。 通常は大部分のGUIや基本的なライブラリは.NETを使い、 一部にAPIを使うだろうから全然問題ない。
んなことないですよー
あまり神経質にならなくていいんですね
830 :
デフォルトの名無しさん :03/07/16 22:37
WinForm1からWinForm2を表示させるにはどうすればいいのでしょうか? WinForm2.ActiveForm.Show();では表示されませんでした。 どこかにWinForm2を宣言すればいいのだろうとは思いますが、どこにどうやって書けばいいのでしょう?
>>831 では、WinForm1内のどこに宣言するのでしょうか?
>832 クラス宣言はどこでやるんだ?
>>830 イベントプロシージャに
WinForm2 f2 = new WinForm2();
f2.Show()
でいいだろ。
>>835 とりあえず、できました。
ありがとうございます。
知識が増えました。
ダイナミックヘルプによると カラー構造体は141色もあるらしいのですが、 これを色の名前でなく直接の色で見て選択することは出来ないのですかね?
フォントを使う場合も、 背景色を指定する場合も そのシステムドローイング名前空間に規定された 名前で色を指定するのがGDI+の基本的な色の指定方法みたいですが、 141色もの英語の表記では何色が何の名前かわからないもので、、、。
>>839 M-x list-colors-display(w
別にそういうわけじゃないと思うよ。HTMLライクな色指定(ColorConverter)もできるし、
VBライクな指定方法(FromArgb)もあるし。
>>841 うおっすげえ親切なサイト!!
紹介感謝!!
直接には何色が何の名前かわかりませんでしたが、
でも今やってることに関係大有りなので助かります!!
サンクス!!
良く考えたら、 クラスのネストは出来ても、 メソッドのネストは出来ないんだな。 忘れていた。
なんか書き込み少ないな。 まだ人気無いのか・・。
845 :
デフォルトの名無しさん :03/07/17 10:33
正規表現さえパーフェクトにマスターすればこんなの簡単に作れるんだけど
http://www.gluesoft.co.jp/RED/ ぽっくんは正規表現が死ぬほど苦手で、かといって↑に3000円は高過ぎだと思うので
正規表現が得意なおじちゃんは僕の為にフリーでこういうやつ作ってください。おながいしました。
thisは省略できるようなのですが、そこら辺のwebサイトに掲載してるソースをみるとなかなか省略されていません。 これはなぜ、あったほうがいいのでしょうか?
>>846 どのメンバなのかわかりやすくなるってのと、インテリセンスが効くって利点があるから。
見たときに、そのクラスのメンバなのか、 何かの静的メソッドなのか、分かりづらいことがあるね。
intelli-sense? please
Loadイベントが終了してフォームが表示されてから 自動的に処理をさせたいんだけど、適当な方法ありますか?
>>850 Loadイベント後、Activateイベントが発生する。一回目を示すフラグを用意しておいて、
それを元に AfterLoad というイベントを Raise するようにしてるよ。
↑を実装したフォームを作っておいて、後はそれを継承っと。
なるほど、自分でイベントを用意するんですね。 アドバイスありがとうございました
デリゲートって要するにオーバーロードの反対みたいなものですよね。 オーバーロードはつまり、同じ名前の違うシグネチャに飛ぶ。 デリゲートは、違う名前の同じシグネチャに飛ぶ。と。
メソッドの呼びだしはネストできるが、 定義はネストできない。 俺はこんな初歩的なことも忘れていた。 あほか?
カラー構造体を使いたいときは、 そのクラスのインスタンスを生成しなくてはいけないのですか? または継承とか?
>>853 言ってる事、間違っちゃいないが、そんな覚え方する奴は始めてみた。
普通はC言語の関数ポインタをOOPに適合させたものとか、
メソッドをカプセル化するものとかそういう認識するもんだが。
>>855 言ってる事がよく分からんが、
構造体も new を使って値を初期化してやらないと駄目。
クラスの new と同じ構文だけど、
構造体の場合はインスタンス生成って言うよりは値の初期化って感じ。
あと、構造体は継承できん。
なるほど、 ありがとうございました。
前に、
>>839 で質問をしたものですが、
c#のヘルプで「カラー」で検索して出てくる、
カラーテーブルの項目を見れば、
何の名前が何色に対応してるかは一発でわかるみたいですね。
お騒がせしてすいませんでした。
859 :
デフォルトの名無しさん :03/07/19 17:36
c#ってのは基本的に音を鳴らすことは考えてない言語なんですかね? ヘルプで検索しても全然出ないし、、、。 エロイ人、教えて!!
>>861 はい。考えてません。P/Invoke で、MessageBeep() やら PlaySound() やらを
呼び出してください。
864 :
デフォルトの名無しさん :03/07/20 19:22
frameworkだけじゃダメってことか
>>864 DirectX 9.0 は .NET Framework 対応。
初めてリリースされたバージョンのJIT コンパイラと ver1.1のJIT コンパイラ では性能に目立った違いはありますか?
Beepすら出せないのは驚きだったな
DirectXで出せますけど。
VBですら一行で出来るのに。 C♯って使っててイライラしてくるよな。
俺も音が出せないのは何でよ、と思った口だが。 クライアントサイドでマルチメディア扱いたい奴は全員DirectX使えっつーM$の戦略じゃねーの。 サーバーサイドでは画像等は扱っても、動画や音楽はなくても全然困らないからな。
871 :
デフォルトの名無しさん :03/07/20 22:40
>>870 戦略ってほどじゃないと思うけど、(音を出す)必要性が極めて少ないから
じゃないの?
872 :
デフォルトの名無しさん :03/07/20 23:14
Beep()で音くらいだせるようにしろよ
音を聞かせる必要性が無いなら人間に耳は要らないですね
できないなら問題だが、それほどのことでもないのに…
877 :
デフォルトの名無しさん :03/07/21 01:46
Microsoft.VisualBasic.dllを参照設定して、次命令をGO! Microsoft.VisualBasic.Interaction.Beep();
面倒くさいですね。C♯の限界が垣間見えますた。
879 :
デフォルトの名無しさん :03/07/21 01:59
>>878 つうか、Beepなんか鳴らしたいのか、と小一時間・・・。
何が面倒くさいのか謎だ。
881 :
デフォルトの名無しさん :03/07/21 02:14
>>878 面倒って? 1行も書かずに鳴ってほしいのか、全角坊や
883 :
デフォルトの名無しさん :03/07/21 04:08
ビジュアルベーシックがインストールされてないから、やっぱ無理だ
Windows以外でも動くコード書きたいんだけど、結局それは不可能なわけ? DirectXとか使ったらアウト?
>>883 うそこけ。VB.NET のライブラリは、.NET Framework の再配布用に含まれてる。
886 :
デフォルトの名無しさん :03/07/21 13:59
>>884 ターゲット環境ごとに鳴らしな〜。
つうか、ユーザが鳴らして欲しいかどうかは・・・
音楽のプレイヤーとかゲームぐらいしか思いつかんが、
Windows以外の環境でほんとに動かしたいのかと小一時間・・・。
887 :
デフォルトの名無しさん :03/07/21 14:57
C#でCD制御しようと思ってるんですけどASPIの実装の仕方が良く分かりません・・・ DLLImportでwnaspi32.dllは読めたんですがヘッダファイルの方はどうすればよいのでしょう? aspi32.hって奴なんですが
888get
>>877 のやつコード補完でないのに、コピペしたらイケた。なんでだろ
あと、参照を増やすってことは重くなるということでしょうかね?
>>887 必要な宣言を、全部書き換えることになるね。そんな面倒なことせずに、制御部分を
C++ で書いて、C# から呼び出せるようにしたほうが簡単かも
アプリ起動時
894 :
デフォルトの名無しさん :03/07/21 22:18
System.Drawing.Bitmap bm1 = new System.Drawing.Bitmap(typeof(Form1), "hoge.gif"); pictureBox.Image = bm1; Bitmapクラスを使って埋め込まれたリソースhoge.gifを、PictureBoxに表示させたのですが この場合Bitmapクラス使っているので、 hoge.gifファイルは.bitmapファイルに変換されて表示されてしまうのでしょうか? そうだとすれば.gifファイルとして表示するには、どのように処理すれば良いのでしょうか。 よろしくお願い致します。
>>894 うん。Bitmapに変換されちゃいますよ。
しかし「gifファイルとして表示」とはなんぞ。
GIFの透明色を自動的に透明表示したい?
>>895 どうも有り難うございます。
>GIFの透明色を自動的に透明表示したい?
Bitmapクラスを使うと .jpg .gif .pngなどがとにかく
.bmpに変換されてしまうので、その変換処理が不要だと思いました。
埋め込まれたリソースに設定していない.bmp以外のファイルだと
Image.FromFile()で簡単に表示できるのですが…。
897 :
デフォルトの名無しさん :03/07/22 03:15
>>896 Image.FromFile()で読んだGIFファイルもBitmapに変換されてるよ。
埋め込みリソースから読んだのと同じ。
多分、c#でも、今後バージョンアップして行くにしたがって、 色々と音関係の機能が追加されていくんではないかと、 想像してるのですが、その辺、どうなんでしょうかね? みなさんの読みは?
c#だけの製品バージョンを購入した場合、 ビットマップエディタはついてきても、 リソースエディタとかはついてこないんですかね?
>>898 既にDirectSoundが使えるはずだが?
>>898 追加されないと思う。
MDXなんて出して、.NETではこれで音出せって言ってるようなもんだし。
MDX? 検索しても本田の車しか出てこないぞ。 一体、なんでつか?
Managed DirectX
DirectSoundのサンプル見たけど、よくわかんない。 button1を押したらhoge.wavが1度再生されるだけの単純なサンプルコードない?
>>903 なるほど。ありがとうございます。
>>904 あんたも似たようなことで悩んでるのですか?
お互い頑張りましょう。
俺的には本当にちょっとした効果音程度で良いので、
そんな大げさなのは使いたくないって感じなのですが、、、。
>>905 winmm.dllのPlaySound呼ぶとか。
using System.Runtime.InteropServices;
[DllImport("winmm.dll", EntryPoint="PlaySound")]
static extern void PlaySound(string name, IntPtr module, uint flag);
private void button1_Click(object sender, System.EventArgs e)
{
const uint SND_FILENAME = 0x00020000;
PlaySound("c:/folder/wavefile.wav", IntPtr.Zero, SND_FILENAME);
}
>>904 using Microsoft.DirectX.AudioVideoPlayback;
Audio audio = new Audio("hoge.wav");
audio.Play();
>>906 ありがとうございます。
まずは、アクティブXとか言うのの基礎から良く勉強したいと思います。
C#でTelnetを作りたいと思いやっているのですが、 コンソールアプリケーションで作成したため、 System.Console.Read()でプログラムが停止してしまいます System.Console.In.Peek()を使えばうまく行くかと思い、やってみたのですが、 どうやらPeek出来ていないようです 標準入力に文字が貯まっているか調べる方法 もしくは、一定時間入力がなかったら制御を返す方法はないでしょうか? よろしくお願いします
public class x_and_y { public int x,y; } public static x_and_y[,] x_and_y_2jigennhairetu = new x_and_y[9,9]; すいません。こう言う風に、 クラスを新たな型として扱って、 その型で2次元の配列を作成するのって別に間違った記述ではないですよね? それとも何か、間違ってますか? 教えてください。
そして、その場合は以下のように参照するように、 記述すれば良いのでしょうか? x_and_y_2jigennhairetu.[i,j].x = 変数;
>>907 音が出ました!感激しましたっ!ありがとう!
>>905 でも、.NETではWindows APIの使用は推奨されていない感じだし、仕方ないかなって思ってる。
みんながそうすれば、それが当たり前になる。MSの思う壺?ドーデモイイケド
>>912 ハイ。何度もやってエラー出してます。
やっぱり駄目なんですね。こう言うやり方は、、、。
何か、他のコードがおかしいせいではないかと何度もやり直したのですが、
やっぱりクラスをそう言うふうに使うのは駄目なんですね。
解りました。
すいませんでした。
配列を宣言するところではエラーが全然でなかったので、
もしかしてこれでもいけるのかと思って勘違いしてしまいました。
素直に構造体を使いますです。ハイ。
あ、構造体ではなく、ジャグ配列とか言うのでも同じこと出来るかもな、、、。
あっそうだ! クラスのインスタンスを配列の数だけ作って そのインスタンスの位置を収める配列を作れば良いんだ!! これでも良いんですよね。 これが1番ストレートなやり方かな?
918 :
デフォルトの名無しさん :03/07/22 19:09
C#にはSTLのコンテナやDelphiのTListにあたるものはありますか?
>>914 × x_and_y_2jigennhairetu.[i,j].x = 変数;
○ x_and_y_2jigennhairetu[i,j].x = 変数;
完全初心者でこれからプログラムを覚えようと 思うのですが、タブブラウザのようなアプリや 伺かのようなものを作るのに C#はどうなんでしょうか?
>>920 残念ながらプログラムをやるのは諦めるべき。
何もやらないうちに聞いているようでは100%挫折。
とにかく手当たり次第やって一番しっくりきたものをある程度のレベルまでやってみるべし。
>>909 スレッド作れ。
もしくは、BeginInvoke。
>>918 System.Collections 名前空間を調べろ。
ただ、STL ほど種類ない。
あるのは、vector, list, priority_queue, map にあたるもののみだったかな。
来年辺りに C# に(っていうか、.NET Framework に)
generics (C++ の template みたいなもの)が実装されるんだけど、
そのときにコレクションクラスもいろいろ実装されてくれる事を期待してるんだけど。
>>920 まあ、割と楽に作れると思うよ。
2ch ブラウザとかも割と簡単に出来たみたいだし。
>>907 すげ・・・
C#かなり自然に書けるんだな
924 :
デフォルトの名無しさん :03/07/23 10:40
最小化するとメモリ使用量が激減するんですが、 あれを起動後すぐにやるにはどうすればいいですか? 最小化で起動するというのは無しの方向で。
C#でwinsockを使う方法が良く分かりません… クライアントとサーバのコネクトは巧くいっているようなのですが、受信がだめで。 VBの参考書を見て無理やり書いてはみたのですが、GetDataの所で例外が発生してしまいます。 クライアント側ソフトの送信部 private void SendButton_Click(object sender, System.EventArgs e) { object SendData; SendData = Account.Text; WS.SendData(SendData); } サーバ側ソフトの受信部 private void WS_DataArrival(object sender, AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent e) { object ReceiveData = ""; WS.GetData(ref ReceiveData,ReceiveData.GetType(),e.bytesTotal); GetText.Text = ReceiveData.ToString(); } アホな質問かとは思いますが、ご教授お願いします。
>>919 あれまっ!
そんな簡単な間違いで俺は悩んでいたのか、、、?
とほほ、、、。
まだまだ初心者だな、、、。
解りましたです。ありがとうございました。
FileExistを使うためには、何を参照すればいいんでしょうか?
928 :
デフォルトの名無しさん :03/07/23 15:07
デリゲート=関数ポインタ という理解でいいですか?
うん。良いよ。 厳密には違うけど、 そう言う考え方や使い方でも間違いではないよ。
C#が人気ないおかげで、まともな回答者がいないね
C#とVC6でほとんど同じコードを走らせて計測してみたら、 C#はVC6のおよそ3倍遅かった・・・・・ 使えん・・・・ (´д`;)
初回起動のJITの分で3倍遅いってこととは違うの?
残念ながら違うよー (´・ω・`)ショボーン 起動させて、ボタン押してから計測してるから・・・ 構造体の配列に対して、値をどんどん入れるだけのコードなんだけどね。 ちなみにC#とVB.NET、DebugとReleaseの違いはほとんどなかった。
.NETのJITはアプリ起動時ではなくて、メソッドが始めて参照された時に 働くけど、それは考慮している?
>>937 考慮してない・・ことになると思う。
それを考慮してパフォーマンスチェックするにはどうしたらいい??
計測時間が長くなるようにして、JITが食う時間の割合を 相対的に小さくするとかかな??
初回は除いて複数回計ってから平均だしてみては。
>>940 んー
今、ためしに、計測処理を関数化して、三回呼び出すようにしてみたけど、
どの結果にも誤差以上の差はなかったよー (´・ω・`) むむ・・・
ngen とかしても早くならない?
構造体だよね?ArrayListとか使ってるわけでもなく。 そんな単純なコードで3倍も差でるもんなのかな。
ngenについて調べ中・・・ ちなみにこんなコードです。 struct PT{ public long x,y; } private void Keisoku(){ const int intMAX=100000; PT[] p=new PT[5000]; System.DateTime st,ed; st=System.DateTime.Now; for(int i=0;i<intMAX;i++){ for(int j=0;j<5000;j++){ p[j].x=j; p[j].y=j; } } ed=System.DateTime.Now; MessageBox.Show(((System.TimeSpan)(ed-st)).ToString()); }
配列への代入なら範囲チェックが入るので、C/C++と比べて 遅くなるのは当然かと。 その代わり、オーバーラン系のエラー(というか、セキュリティホール)を 気にしなくても良いのだから、単純に速度だけで比較する問題とは 違うのではないかと。
>>945 ところが、今手がけようとしている案件は、速度がめちゃくちゃ重要視されるのです・・・
unsafeとか使えばなんとかなるかと楽観視していたんですが。
そろそろ言語決めなきゃいけないけど・・・この場合はVC6が無難かな・・・
うーん・・・・
速度がめちゃくちゃ重要視されるのなら、C#で全部unsafeにするより C/C++でしょうね。 VC6でなくても、VC.NETのUnmanaged Codeではどう?
>>947 そうですね。そちらも試してみます (´∀`)
いろいろありがとうございました。
C#に速度を求める時点で(ry
950 :
デフォルトの名無しさん :03/07/23 21:55
速度を求めるならハードの性能を(w
>>946 配列の範囲チェックのせいで低速化してるっぽいし、
unsafe にすれば相当早くなる気がするが。
C#って限界ありすぎ
953 :
デフォルトの名無しさん :03/07/23 23:48
>>952 煽りかもしれんが、どこらへん?
俺結構なんでもできるなー、と感心しているんだけど。
面倒なのはAPIとかCOMとか使う時に自分で定義を書かないといけないことぐらい。
遅いのはアレだけど。限界てアレか。起動速度か?
>>951 unsafeの説明で、
「unsafe コードは、配列の境界チェックを省いてパフォーマンスを向上させます。」の
一文がありますね。
そうか・・これで速度向上するかも!と思って、ためしに関数をunsafeにしてみたんですが、
結果は残念ながら、まったく変化なしでした。。。
unsafeとfixedステートメントを使って、配列に内容をセットするのに ポインタを使うコードに書き直してみましたが、3.8秒かかっていた処理が 3.2秒になる程度でした。 なんか抜本的な間違いをしているのでしょうか? (x_x) ーーーーー差し替え部分ーーーーー st=System.DateTime.Now; for(int i=0;i<intMAX;i++) { fixed(PT* pp=&p[0]) { for(int j=0;j<5000;j++) { pp[j].x=j; pp[j].y=j; } } } ed=System.DateTime.Now;
958 :
デフォルトの名無しさん :03/07/24 10:00
ApplicationのアイコンとMainFormのアイコンの指定が別々でウザイね。 無駄にサイズが増える。
>>936 うーん、c#とvbが同じといわれると、ちょっと残念な気がする、、。
だったら、最初からvbで楽にプログラムすればいいきがするし、、、。
>>959 そうだよね。
しかも、もっとショックな結果が・・・・ (´・ω・`)
VB6のネイティブコンパイルのほうがC#.NETよりも速い
んだよね・・・。('A`)・・・
いくらなんでも、んなことあるか!!と思ったんだけど、
少なくともこのケースに限っては間違いない。
ほぼ同じ処理を走らせるのに、
C#.NET(unsafe)が 3.29秒、VB.NETが4.2秒、VC6が1.25秒、
VB6が2.48秒でした。
961 :
デフォルトの名無しさん :03/07/24 13:10
C♯の限界がまた一つ垣間見えますた。
>>960 > いくらなんでも、んなことあるか!!と思ったんだけど、
その根拠はVBは遅いっていう先入観だろ?
論理的に考えればネイティブコードの方が速いのは当然だと思うが。
>>963 んー ちょっと違うかな。
VBが遅いというイメージも確かにあったけど、それ以上に
C#.NETは仮にもC言語の系列なんだから、そう遅くはないはず・・・という
イメージがあったから。
でも、今でも自分の手法のどこかに間違いがあることを
期待してるんだけど・・ (´・ω・`)ショボーン 新しい案件で.NET使いたいよーーー
>>964 C言語の系列って文法の話だろ。
例えばC言語にもインタプリタはある。
当然それはC言語の系列というかC言語そのものだが
C言語のコンパイラよりも遅い。
実行までの仕組みを考えれば自ずと答えが出るはずだが。
うーん、結局.net系は 今から10年後とかのマシンが超早くなった時代を考えて作られた言語なのかな? vbよりも遅いってのは俺としてもマジショック!! 俺は最近c#買ったんだが、vb買えばよかったのかな?とも思ってしまう、、、。 c#は意外に速い、、、と言う話もあったはずなんだがなー、、、。 その話はどこへ行ったんだろう、、、。
>>965 でも、c#だって一応コンパイラーでしょう?
>>967 .NETやJavaとC言語(VC6やBCB等のネイティブコードを吐く奴)の
コンパイルされてから実行されるまでに行われるプロセスの違いに
ついて勉強することをオススメする。
>>966 そんなにショック受けるなよ。JavaだってVBより遅いんだし。
>>965 んーー
そういう理屈で言えば、VB6のネイティブコンパイルはほぼ
VC6のReleaseと等価でないとおかしくない?
でも実際は、配列の範囲チェックとかはずしても、倍程度時間がかかる。
結果を見る前に理屈だけで推測するのってけっこう難しい気がするよ。
実際、VB6がまだ正式版が出る前には、VCと同等のスピードが
出ますって触れ込みだった時期もあったんだけどね・・・。
(残念ながらソースは手元にないです)
>>970 コンパイル結果(実行内容)が等価でないのだから
その分の差が出て当然だろ。
コンピュータは気分で動いているのじゃないのだから
遅いのにはちゃんとした理由がある。
>>957 そのコードほんとに intMax 回実行されてますか?
ベクトル化スーパーコンピュータでも数秒で終わる処理とは
思えないけど。
>>971 >コンパイル結果(実行内容)が等価でないのだから
>その分の差が出て当然だろ。
もちろんそう。俺が言いたいのはそういうことじゃなくて、
その「遅いちゃんとした理由」を、試す前に理屈だけで
得られるのかどうかってことだよ。
たとえばVB6が発表段階の時に、VC6の半分の速度しか
出ないってことが理屈だけで予想できたとは思えないんだけど・・・。
まあ、できたと言われりゃそれまでだけどw
んー それよりも本題は、これが本当にC#.NETの実力なのか
どうかってことです。たまたまC#.NETにとって最悪なケースで
テストしてしまったのかもしれないし、コーディング次第でもっと
変わりそうな気もする。
もうちょっといろいろ試してみます。
>>972 はい、実行されていると思いますよ。
ループから抜けたあとの i の値を見たら、ちゃんと intMax と
同じ値になってますし。
>>973 最悪なケース化といわれれば最悪なケース。
そもそもJavaや.NETは単純なループをまわすためになんぞ設計されちゃいない。
>944のコード試したら12秒かかった^^;
素直に.NETの限界ですって言えよ。
>>976 ちなみにマシン性能は?
うちは P4 1.8 + Mem512 + XP Pro です。
なお、配列の範囲チェックに時間食ってるのかと思って、ためしに
配列じゃなく一個だけの変数に値を入れるように変更してみたけど、
おおむね速度比率的に変化なしでした (x_x)
Javaでベンチするとどんなもの?
>>973 俺が言いたいのは理屈で考えればネイティブのVBの方が
C#よりも速いと言うことは十分予想できるのに
そんなに驚くなって言うことだよ。
C#の方が速い(VBの方が遅い)ってのは理屈に反した
思い込みでしかないだろ。
>>981 驚く驚かないは個人の自由だと思いますがw
試しもしないで思い込みで決め付けてたなら問題ありですけど。
もうその話はやめませんか?
自分にとっては「事実として遅かった」「どうにかして速くできないか」という
ことが重要であって、自分の予想が合ってただのはずれてただの
ということはどうでもいいんですが・・・。
ちなみにハンドル間違ってました。935の人スマソ。934でした。
>978 P3-600 512MB XP Pro ついでに >957 に差し替えると .8.8秒くらい
>>982 おれはC#がVC6の三分の一もの速度が出たことに驚きましたが。
985 :
デフォルトの名無しさん :03/07/24 15:25
実際にモノが出てから、俺にはこの結果は分かってた なんてのは誰にでも言えるわなw 2年ぐらい前の.NET系のメーリングリスト読むと、ある程度 知識がある人たちの間でも意見が分かれていたことが分かるよ。
>>985 まっ世の中には先入観で断定してしまう奴がいるってことだな。
半分くらいはわざと悪いデマを流しているような気もするが。
ネイティブに勝てないことくらい思いつけよ
粘着(+д+)ウザー
次スレ名は前々スレにあったように ふらっとC♯ 希望。
ならお前が立てれよ
得意げに結果が分かってたというヤシは恥知らず
>>990 立てたいけど立てられないのでお願いしておる次第です。
埋め埋め。
梅 梅
(゚д゚)ウマー (゚д゚)ウマー
1000!!
998
999 ↓1000おめ。
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。