∧_∧____
/(#゚ー゚) ./\
/| ̄∪∪ ̄|\/ C#,.NET関連の話題はこちらでどうぞ。
|____|/
,,,,∪∪,,, ,,
過去スレ・関連リンクは
>>2-5 あたり
ランタイムが20.4MB。凄いな。
日本語版とSP1を早速インストールした。 日本語版をインストールしてもちゃんとビルドできてたのに SP1をインストールしたらリソースを変換できませんって怒られるよ〜。
日本語版SDk入れたけど、VS.NET英語版、メニューやらなんやらは 国際化の設定で日本語になったけどヘルプは英語のままね。 やっぱりMSDNから日本語版VS.NETダウソせな駄目かな、、
9 :
デフォルトの名無しさん :02/03/20 20:30
クイックスタートがつかえん。 コンパイルエラーがでる。 なんとかならんかのう。
>>7 英語版SP1を英語版環境に入れたが、特に問題無いぞ
>>8 そら、さすがにだめだろ
ドキュメントの日本語化に、かなーり力入れたみたいだな。MSKKは
>>9 どっかに対策なかったか? Web.configかなんかを書きかえるってやつ
おっといい忘れ。#さん、スレ立ておつかれさま。こっちのスレでもよろしく!
12 :
デフォルトの名無しさん :02/03/20 21:21
>>12 何のDLL? 環境をもちっと詳しく書いてみ
>>13 http://localhost/quickstart/ASPPlus/ を開こうとすると、
『コンパイル エラー
コンパイラ エラー メッセージ: CS0013: メタデータ をファイル 'C:\WINNT\Microsoft.NET\Framework
\v1.0.3705\Temporary ASP.NET Files\quickstart_aspplus\e939111e\ddd4e8c5\jxnkq0g_.dll' に書き込み中に
予期しないエラーが発生しました』
と出てくる。
ちなみにそんなファイルは存在していない。
OSはWinXP Pro
beta2版をアンインストールしてからインストールしたんだけど、
英語サイトをみるとこの辺に原因があるようなんだな。
英語苦手なんで四苦八苦してるよ。
AllowDropのプロパティをTrueに入れたら DragDropの登録に失敗しましたって、例外でるよ。 なんじゃこれ。逝ってよし。SDKJP.SP1のせいか?
.Net SDKでDirectX使えるの?
>>19 managedっていう意味なら、まだ。もちろんCOM Interop経由では使えるよ。
新しいニュースグループができてた。 news://msnews.microsoft.com/microsoft.public.jp.dotnet.vsnet
正式版リリースされたのに盛り上がってないね。。。
ここはそういう浮ついたスレじゃないからさ。
>>18 困りました。。OS入れ替え、VS.NET入れ替えて試してみたのですが
Form1のAllowDropをtrueにし
Form1 form = new Form1();
form.Show();
とすると、Show();のところで、、
An unhandled exception of type 'System.InvalidOperationException' occurred in system.windows.forms.dll
Additional information: DragDrop registration failed.
と例外がでてしまいます。
新規ウィンドウアプリケーションプロジェクトをつくり、やってみると、
例外はでません。プロジェクトが違うだけで、フォーム内のコードは
ネームスペースが違うだけなのですが。なぜなのでしょう?
>>24 FERC.NETエージェント1号が調べた結果、以下のことがわかった。
DragAndDrop機能はCOM(OLE)の機能を利用しているので、スレッディングモデルが重要になる。
特にGUIアプリケーションは、STAで動作しなければならない。
.NET Frameworkのスレッディングモデルは、COMから見るとMTAに見えるので、
GUIでしかもCOMの機能を使う場合は、STAスレッドで動作することを明記しなければならない。
そのため、MainメソッドにSTATheradAttributeをつけなければならないのだ。
VS.NETで新規に作成したWindowsフォームアプリケーションをよく見ると、
次の記述があるだろう。
[STAThread]
static void Main() {
Application.Run(new Form1());
}
この、[STAThread]がついていない場合は、Drag&Dropオペレーションが失敗する。
単純にMainメソッドの上にこの属性をつければ、動作するようになるだろう。
ちなみにこれはBeta2のときから変わらない機能制限なのだが、Beta2のバグで、
この属性がついていないフォームでも(一見)正しく動作してしまっていたのだ!
以上です、チーフ。
26 :
デフォルトの名無しさん :02/03/21 17:50
FERC.NETエージェント1号さんって何者ですか? おそろしく詳しそうなんですけど.. 間接的に助かっています。ありがとう。
>>25 ありがとうございます。見事です。うまくいきました。
そのSTAスレッドというのを勉強させていただきます。
本当にありがとう。
28 :
デフォルトの名無しさん :02/03/21 19:16
STAはシングルスレッドアパートメントの事だよ。アパートメントについてはCOMの入門書かMSDNを読むとよろしい。
29 :
デフォルトの名無しさん :02/03/22 11:06
C# Standardには ウィザードとツール類のクラス ライブラリプロジェクトの作成が ないんだけどこれってどんな機能ですか? VCのDLL、LIB相当のライブラリ作成機能がないって事? あとドキュメントは一回きりのMSDNが入ってるんですか?
System.Windows.Forms.TreeView って追加するとき treeView1.Nodes.Add(String node) しかないってのはひどすぎだと思うんだが・・・ インスタンス作成するときに配列とかxmlとかできます? んー、それとも継承して使うもん?
>>30 FERC.NETエージェント1号が思うに、
>treeView1.Nodes.Add(String node)しかないってのはひどすぎだと思うんだが・・・
TreeNodesCollection.Addにはもう1つTreeNodeをとるオーバーロードがあるし、
AddRangeやInsertもあるので、それしかないってことはないと思われます。
以上です、チーフ。
Javaならコンストラクタだけで JTree() JTree(Hashtable value) JTree(Object[] value) JTree(TreeModel newModel) JTree(TreeNode root) JTree(TreeNode root, boolean asksAllowsChildren) JTree(Vector value) これだけあるぞ Java サゲ
>>30 たしかに1つしかないってのは言いすぎでした。
AddRange・Insert
ともに現時点ではちと用途が違う感じでしたんで
TreeViewConverter ってのを現在調べ中なり
ありがと
34 :
デフォルトの名無しさん :02/03/23 14:51
現在時刻を取得したり、時間間隔を計算するにはどうしたらいいんでしょう? 時間関係の型とかクラスが見あたらないんですが…。 (たぶん、探し方が下手なだけだと思う)
>>34 System.DateTimeクラスか何かあったような。。。
DateTimeで検索してみて。
>>35 System.DateTime ありますね。ヽ(´ー`)ノ
まず真っ先にDateTImeで調べたつもりだったんですが…。
ありがとうございました。
>>37 シェアウェアじゃん。
それならSharpDevelop使おうよ。
Visual Studio 6.0に組み込んでる私はアフォですか?
>38 シェアウェアなんですけど機能制限無いですし、支払いも義務ではないですよ。 初心者(私も含む)にはわかりやすいです。 ところでSharpDevelopはどこで見れますか? 検索してみたんですが、いろいろリンクが死んでるようで・・・・
Sourceforge にあるよ。
>42 おぉぉ〜これはすごい。まるでVSですね。 英語版しかないのが初心者にはネックですが、辞書片手に使ってみたいです。 ありがとうです。
45 :
デフォルトの名無しさん :02/03/23 21:03
>>44 いいっすね。
日本語にもなるし、CVSにも対応してるし、言う事無しかも。
これを見た後じゃ、悪いけどCPadとか言うのは使えないなぁ。
これタブブラウザにもなるやん(w SharpDevelopから書き込み。
47 :
デフォルトの名無しさん :02/03/23 22:08
C#のwindowsフォームコントロールにはMFCでいうところの CHtmlViewみたいなものは無いのでしょうか?
>>47 ないのでCOMのWeb Browserコントロールを使うしかない。
まじぇ?2chブラウザ作ろうと思ってたのに。
>>49 そんなに大きな問題じゃないでしょ。
配布サイズが大きくなるけど。
SharpDevelopにはSunの社員も参加しているという罠
52 :
デフォルトの名無しさん :02/03/23 22:41
>>47-50 具体的にCOMのWeb Browserコントロールを使うには
どうすればいいのでしょうか?
>>52 メニューの [ツール]→[ツールボックスのカスタマイズ] で
Web Browserコントロールをチェックしてちょ。
そうすると、左のツールボックスの [全般] タブにアイコンが出てくるから、
あとは普通のコントロールと同じ感覚でドラッグ&ドロップ。
プロパティとかイベントもちゃんと出てくるよん。
54 :
デフォルトの名無しさん :02/03/23 23:18
>>53 [COMコンポーネント]の[Microsoft Web Browser]というところを
チェックしてみたのですが、ツールボックスの[全般]には何も表示
されないです。
なにか、間違えているでしょうか?
>>54 どっか他のタブに追加されているってことない? ツールボックスを右クリックすれば、
同じメニューがでるから、それでもおっけーだよ。
>>54 あらま。ごめんちゃい。
ツールボックスのアクティブなタブに追加されるみたいね。
どこかのタブの末尾に Explorer ってのがないか探してみてちょ。
58 :
デフォルトの名無しさん :02/03/24 00:24
Web Browserコントロールをフォームに貼り付けたところ、 コードに次のようなものが追加されました。 private AxSHDocVw.AxWebBrowser axWebBrowser1; で、AxWebBrowserっていうものがどんなメソッドをもって いるか調べようとヘルプで検索してみたのですが、全然出て きません。なぜ、でしょうか?
>>58 オブジェクトブラウザで見るよろし。
Ctrl+Alt+J
>>59-60 なるほど。
またもや助かりました。いろいろいじってみます。
C#か.NET Frameworkって、 VBみたいに順序が保たれて、なおかつ定数時間でKeyからItem取り出せる コレクションは無いんですか?
>>62 ん?System.Collections.Hashtableのことかな?
SharpDevelopインストールしてみたけど、背景が白色だけみたいね。 目が疲れるからエディタの背景色は黒がいいのにな・・・・ 独り言につきsage
65 :
デフォルトの名無しさん :02/03/24 02:42
MfcにおけるCEditViewを使用した感じのアプリは どうやって作るのでしょうか? .NET SDKをひっくりかえしてみているもののやり方がわからない・・・ このままではメモ帳もつくれなひ・・・
>>65 MFCはよくしらないけど、
System.Windows.Forms.RichTextBox
System.Windows.Forms.TextBox
あたりかな?
67 :
デフォルトの名無しさん :02/03/24 03:14
TextBoxのMultilineをTrueにするのでは?
68 :
デフォルトの名無しさん :02/03/24 03:14
外部のフォルダを選択してドラッグアンドドロップで自作アプリケーションの 上に放り込むんでそれを処理するプログラムを作りたいのですが ドラッグアンドドロップがどのように実現できるでしょうか?
>>68 プロパティのAllowDropをTrueにして、
イベントのDragDropにコードを追加する。
>>68 ドラッグアンドドロップでキーワード検索してみてみました?
あと前スレに既出です。819-821を見て参考にしてください。
C#始めたんでこのスレ&前スレ覗いたんだけどレベル高い・・・・ 誰かモナーのやさしいC#質問スレとか立ててくれないかな〜・・・ スレ汚しスマソ
>>63 System.Collections.Hashtable は検索が定数時間だけど、
追加した順番での取り出しが出来ない。
自作するしかないかな…。
76 :
デフォルトの名無しさん :02/03/24 11:31
ZIPやLZHなんかの圧縮ファイルはどうやったら作れるでしょうか?
77 :
デフォルトの名無しさん :02/03/24 11:39
XPには標準でZIPのCODECついてるんじゃない。
>>75 Hashtable.GetEnumeratorみろ。
81 :
デフォルトの名無しさん :02/03/24 14:50
System.Diagnostics.Process.Start で起動したアプリ(Ex電卓など)のZオーダーやら ウインドウ位置等を変更したいんですけどどうしたらいいでしょうか?
82 :
デフォルトの名無しさん :02/03/24 14:52
そのプログラムの動作しているディレクトリを取得するには どうしたらいいんでしょう
>>82 AppDomain.CurrentDomain.BaseDirectory でどうかしら。
>>82-83 Path.GetDirectoryName(Assembly.GetCallingAssembly().Location)
というてもありますね!
>>82 DirectoryInfo directory = new DirectoryInfo(".\\");
ってやってたよ。漏れ。
>>83 はしらなんだ。AppDomainは面白そうね。
>>81 ProcessクラスのMainWindowHandleプロパティで
ウィンドウハンドルを取り出せるから、あとはAPIゴリゴリかしら。
NativeWindowクラスにアサインしてもあまり役に立たないし...。
>>84 Assemblyクラスから取った方が自然な感じね。ありがと。
>>86 サンクス。
NativeWindowクラスにアサインして悩んでたですよ。
とりあえずできました。おれも答えれる側に回れるよう
がんばりやす。
89 :
デフォルトの名無しさん :02/03/24 16:52
>79 ありがとうございます。 そこのNZipLib.Dllライブラリを使ったらとりあえずディレクトリの圧縮はできるようになりました。 しかしディレクトリがまたサブディレクトリを含んでいる場合うまくいきません。 ZipOutputStream s = new ZipOutputStream("test.zip")); foreach (file in **){ ZipEntry entry = new ZipEntry(file); s.PutNextEntry(entry); } こんな感じでやっているのですが、fileがディレクトリの場合また別の処理 (再帰呼び出し?)をしてという風にやったらいいのでしょうか?
>>86 #さんらしくない。
Processesコレクションから実行ファイル名をキーにProcessクラスを取得して判断
できますよ。
#さんはいい人キャラだから言いにくいと思うので、私が言いましょう。
>>90 ハァ?なにを取得してなにが判断できるんですか?ソースコードキボンヌ。
>>91 まぁまぁ・・・
>ウインドウ位置等を変更したいんですけど
ってのを90が読み落としたんでないの?とわしは思ったけど、、
#さんはこの部分はAPIでってことでしょう。
>>90 Processesコレクションてどのクラスにあるの?
あー、分かった。Process.GetProcessesByName()で探せってことか。 そこまでしなくても、Process.Start()の戻り値を直接使えばいいじゃん。
>>91 、92
スマソ、別スレの二重起動チェック関係と間違えてました。
#さん、91さん、ごめんなさい。
96 :
デフォルトの名無しさん :02/03/24 19:30
LinkLabelってのをFormに貼り付けて遊んでみようとしたところ うまくいきません。 e.LinkDataがNULLなんですが、何故ですか? これって何か前準備が必要なんでしょうか?
>>96 LinkLabel.Links.Addで登録した?
98 :
デフォルトの名無しさん :02/03/24 21:22
>>97 無事解決しました…が。
LinksAreaって何?
これを設定しないと期待したとうりに動くのですが
使い方が謎です
>>98 リンクの下線を出す領域だと思われ。
Links.Addの第1・第2引数でも同じことをやってる。
100 :
デフォルトの名無しさん :02/03/24 22:07
>>99 ハマってたのはこれを使うケース。何も考えずにペタペタと
貼り付けたいから。
この場合、Links.Addはしなくてもよさそうな感じなんですが…
クラスライブラリのソースが欲し
101 :
デフォルトの名無しさん :02/03/24 22:47
C#で作ったプログラムを配布したいんですけど .Netのインストールされていない環境にはどうしたらいんでしょうか? インストールしてもらう必要があるのかでしょうか?
>>96-100 LinkAreaはお手軽用、Linksは細かい設定用という感じでしょうか。
プロパティ画面でLinkAreaしか設定できないのでちょっと混乱してしまいがちですが。
LinkAreaでは内部データは設定できないので、文字からURLを導きたい場合は
Linksを使わないといけないようです。逆に、URLそのものがLinkLabel.Textに
書いてある場合は、そのままLinkAreaを使えばいいというトコロではないでしょうか。
>>101 >>3 のリンクの再配布パッケージ配れ、、
前前々スレとかにもあったはず、VS.NETスレにもあったはず。
ちょっとは調べてね、、
104 :
デフォルトの名無しさん :02/03/24 23:18
>>102 いろいろ触ってるうちにそーいう結論にたどり着きました
今後これをラップしてもっと便利しようとした時って簡単に
コンポーネントを作れるものなんでしょーか?
BCBやDelphiの時はクラスライブラリのソースを真似て作りましたが…
とにかく、解決しました。ありがとうございました
Helpをろくに調べないで質問でスマソ プロパティ等を設定する時に立ち上がるツールの 設定はどーするのでしょーか?
あるURLをブラウザ(IE)で表示させたいんですが、どうしたらいいんですか?
>>106 Process.Start(url);
109 :
デフォルトの名無しさん :02/03/24 23:53
Formのなかに このようにしてリストボックスを持っていた場合、 private ListBox L1 = new ListBox(); このクラスの中の関数をオーバーライドするにはどうしたらいいんでしょうか? ListBoxを継承したクラスを別に作るべきかな?
111 :
デフォルトの名無しさん :02/03/25 00:17
Mouse.Buttonsみたいな列挙体はどうやって使ったらいいんでしょうか? 右クリックがなされたときだけ処理をしたいのですが if (e.Button == Right) System.Windows.Forms.MouseButtonsとint形に演算子を適用することができません となってうまくいきません。 e.Button & Right としても同じでした。
>>111 こういう感じで。
if(e.Button == MouseButtons.Right)
{.....}
if(e.Button == MouseButtons.Left)
{.....}
113 :
デフォルトの名無しさん :02/03/25 00:56
文字列"あいう"をMIME文字列に変換するにはどうしたらいいっすか?
>>113 System.Convert.ToBase64String
>>113 JISでエンコードする時は Encoding.GetEncoding(50220).GetBytes("あいう");
116 :
デフォルトの名無しさん :02/03/25 02:30
作業の進行を表すステータスインジゲーターみたいなものって どのクラスをつかえばいいんでしょう?
>>116 System.Windows.Forms.ProgressBar
(なんかこうゆう質問多いね・・・・最近。)
「SharpDevelopを読み解くスレ」とか駄目ですかね?
120 :
デフォルトの名無しさん :02/03/25 03:26
ひとつの作業が進行中のときにウインドウを動かしたりできなくなりますよね これを作業中も並行してウインドウもきちんと操作できるようにするには どうしたらいいでしょうか? やはりマルチスレッドを使うんでしょうか・・・。
>>113-114 ありがとう。できました。ところでC#のスタンドアロンアプリケーションで
System.Web(のHttpUtility.UrlEncode)空間を利用したいんですが、
これって可能?無理?
122 :
デフォルトの名無しさん :02/03/25 03:57
>103 ありがとうございます。 しかしその場合も再配布SDKがひつようになりますよね。 Cで組んだアプリのようになにもほかに必要なく実行することはできないんでしょうか?
123 :
デフォルトの名無しさん :02/03/25 04:04
とりあえず簡単なC#のアプリケーションを作成したみたのだけれど ダブルクリックで実行するとなぜかコンソール画面も 立ち上がる。なじぇ?
>>123 コマンドラインならこんな感じでWinEXEを指定
>csc /t:winexe hello.cs
メイクファイルならこういう風に
#makefile
ALL : Hello.exe
Hello.exe : hello.cs hoge.cs
csc winexe System.dll System.Windows.Forms.dll System.Drawing.dll $**
125 :
デフォルトの名無しさん :02/03/25 04:08
VC++ & MFCからの乗り換えだけど いいね。なんかサクサクできるよ。 デリゲートやプロパティにちょっと戸惑ったけど慣れてしまえば楽だし。 Java未経験だけどJAVAと比べてどっちが楽かな? あとはメモリ周りの扱いの自由度がどの程度楽かだね。 自分は割と通信関連のソフトをCかC++でシコシコかくので プロトコルにあわせてビットを数えて構造体を作って・・・ なんていう作業までうまいことできれば言うことなし。 でもCLRを必要とする実行ファイルも.exeになるのはなんだかな・・・ 紛らわしいよね・・・・
GUI作るなら Javaより(少なくとも精神的には)楽かも。 Streamが Interfaceじゃない おまけに Inputと Outputが分かれてない… ってのが、なんとなく好きじゃないんだけど。 まぁいっか。
Streamは良く見るとInterfaceだよー
>>126 もしインターフェイスだったら非同期ものを実装しないと・・・。
まあIStreamとStreamに分けるくらいはしてもよかったかもな。
129 :
デフォルトの名無しさん :02/03/25 10:48
>>126-128 ・Streamが入出力分かれているメリット
・Streamがインターフェイスであるメリット
を教えてくださらんか。
>Streamが入出力分かれている メリットっていうか、そういうものじゃないの?ストリームって。まあ困らないけど。
>デリゲートについて調べるべし。 もしかしてマルチスレッドにするやつですか?お手軽な方法は無いですかねぇ。
っとApplication.DoEvents()でいけそう。thx>133
>>130 例えば、
if( !stream.CanWrite ) stream.WriteByte(0);
がコンパイルエラーにならないのは気持ち悪い。
基本的にはStreamって 一方通行だと思うんだけど。
NetworkStreamは読み書きできるほうが自然ですが何か?
>>130 ,
>>126 昔「ここがあとちょっとね」と言うやつはすでにハマっている、という格言を見たことが。
何か?だってよ
Java厨ウザイ
>129 必要ないのですか?しかし 20Mb少々のdotnetfx.exeを各自インストールしてもらう必要があるのでしょうか? それともこのフレームワーク自体をアプリケーションに組み込む方法が あるのですか?
143 :
デフォルト :02/03/25 19:16
マウスがTextBox内に入ったときに 処理を行うプログラムを組みたいのですが TextBoxクラスを継承して class myTextBox : TextBox{ public myTextBox() : base(){ this.MouseEnter += new MouseEventHandler(OnMouseEnter); } public void OnMouseEnter(object s,MouseEventArgs e){ // ここで処理 } } こういう感じにしてみましたが コンパイルすると System.Windows.Forms.MouseEventHandlerを型 System.EventHandler に暗黙的に変換できませんとでてエラーになります。 この行を変えて this.MouseDown += new MouseEventHandler(OnMouseEnter); this.MouseDownにするとうまくいくのですが、 おそらく、もとのものはthis.MouseEnterがTextBoxクラスのMouseEnter ではなくもっと上のものを呼んでしまっているからでは?と思ったのですが、 もしそうだとしたらどのようにして解決すべきでしょうか? ひょっとしたら全然違う理由からかも知れませんが お教えください。
>>143 MouseEnterはEventHandler、
MouseDownはMouseEventHandler。
なので
>this.MouseEnter += new MouseEventHandler(OnMouseEnter);
を
this.MouseEnter += new EventHandler(OnMouseEnter);
とすればよし。
145 :
デフォルト :02/03/25 19:40
>144 ありがとうございます。それでいけました。 SDKクラスライブラリ資料を見てみると 確かに public event EventHandler MouseEnter; public event MouseEventHandler MouseMove; このようになっていますね。 しかしこの場合MouseEnterというのはイベントなんですよね。 this.MouseEnter += new EventHandler(OnMouseEnter); これで、このクラスのMouseEnter(イベント?) にOnMouseEnterを引数としたEventHandlerクラスを追加して、 MouseEnterが発生した場合、OnMouseEnterを呼ぶというのはわかりますが これはWM_MOUSEENTERを.NetフレームワークがMouseEnterにして 送ってくれるってことでしょうか? あーなんか書いててわかんなくなったかも。勉強します。 もうひとつよろしいでしょうか。マウスカーソルがテキストボックスの上にあったときに 注釈をいれるテキストボックスをポップアップさせたいのですが・・・ ブラウザで画像の上にマウスを合わすとALTタグに書いておいた説明がでますよね。 そんな感じにしたいんです。 どのクラスでやるべきでしょうか? 右クリックメニューはContextMenuで実装できることはわかったのですが・・
>>145 ToolTipをフォームに落とすとテキストボックスのプロパティにToolTipが追加されるので、
あとはテキストを設定すべし。
ASP.NETの話題ってここでOK? WebProg板のASPスレが閑散としているのでこだわらないで書いてみる。 以下のような、テキストボックスが一つのフォームで、 テキストボックス内でEnterキーを入力してPOSTすると、 なぜかOnClickイベントが発生しない。 <form method="POST" action="default.aspx" runat="server"> <label for="key">検索キー</label> <asp:Textbox id="key" runat="server"/> <asp:Button text="検索" OnClick="search" runat="server"/> </form> しかし、このフォームにTextBoxを一つ追加してみる (上記コメントアウトされているのを有効にする)と、 Enterキー入力でOnClickのイベントが発生する。 こういう仕様だとして、TextBoxが一つのときでもOnClickのイベントが 発生するようにするにはどうすればよいのだろうか?
上記コメントアウトって書いてあるけど、何処にも無いじゃん…。 要するに以下のような感じだとOnClickイベントは発生する。 <form method="POST" action="default.aspx" runat="server"> <label for="key">検索キー</label> <asp:Textbox id="key" runat="server"/> <asp:Textbox id="dummy" runat="server"/> <asp:Button text="検索" OnClick="search" runat="server"/> </form>
C# って java みたいに遅いの?実行速度。速い順に C → C# → java みたいな感じ?
>>150 C>>Delphi>>C#>>>>>>>>VB>>>>>>>>>>>>>>>>>>>>>>JAVA
>>151 さすが#さん、じゃなくて♯さん。いやー素晴らしい。
ここに書いて良かった。
>>145 >これはWM_MOUSEENTERを.NetフレームワークがMouseEnterにして
>送ってくれるってことでしょうか?
そうです。System.Windows.Forms.Controlのwndprocが、WM_MOUSEENTERがくると
Control.WmMouseEnterを呼び、それがさらにControl.OnMouseEnterを呼びます。
これがvirtualなので、自分で作ったハンドラが呼ばれます。
以上です、チーフ。
157 :
デフォルトの名無しさん :02/03/26 15:17
今頃、C#をいじり始めたんだけど。 Enterキーで次のコントロールに進むTextBoxを 作ろうと思って、TextBoxのOnKeyUpをオーバーライドしたけど protected override void OnKeyUp(KeyEventArgs e) { if (e.KeyCode.Equals(Keys.Return)) { this.SelectNextControl(this, true, true, true, true); e.Handled = true; } base.OnKeyUp(e); } どうも、ここからはSelectNextControlが 失敗してしまうようなんだ。 NextControlとかいうControl型プロパティ作っておいて、 NextControl.Focus()とかでしのいでみたが、気持ち悪いし、 このプロパティを初期化せにゃならんので、効率悪い。 誰か、理由教えてたも。 ちなみに、GetNextControlもここではダメっぽい。
FERC.NETエージェント1号が調べた結果、以下のことがわかった。 SelectNextControlは、自分自身のChildrenコントロールを探すので、 この場合はTextBox(の派生クラス)の子供を探してしまう。当然ないので、選択できない。 おそらくやりたいことはむしろ自分の兄弟コントロールを選択するということで あろうから、自分の親(FormやPanelなど)のSelectNextControlを呼び出せばいいのだ! >this.SelectNextControl(this, true, true, true, true); ではなく、 this.Parent.SelectNextControl(this, true, true, true, true); でうまくいく。 以上です、チーフ。
159 :
デフォルトの名無しさん :02/03/26 16:47
>158 ぐお。 子コントロールがどうこういう記述を見つけたんで、 引っかかっていたけど SelectNextChildControlとでも言うべきものなわけですな。 名前で無意識に決め付けてしまった。 いかんいかん、頭の柔軟さが失われてきてるよ。 なんにせよ、感謝いたします〜。 過去ログも漁ったんですがエージェント1号さん 詳しすぎ。こちらも、がんばらねば。 まだC#暦3日目だし。
C#使って3Dゲーム作ろうと考えているんですがOpenGLやDirectXはCのように扱えるんでしょうか?
C#ってJava Native Interfaceみたいなのあるの?
>160 できるんじゃないの? >161 あるんじゃないの?
それにしても niftyのFMSDEVは全く反応無いな(苦笑)>C#
>>157 =159
揚げ足取りでスマソ。
C#風に書くなら,以下のコードのほうが良いかも。
using System;
using System.Windows.Forms;
private TextBox textBox1;
と仮定して,フォームのコンストラクタで
textBox1.KeyUp += new KeyEventHandler(this.textBox1_KeyUp);
private void textBox1_KeyUp(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Return) {
textBox1.Parent.SelectNextControl(textBox1, true, true, true, true);
e.Handled = true;
}
}
keyup イベントで textBox1 と書くのが面倒かもしれないけど...
いちいち継承しなくてもすむから,こっちの方が楽と思うよん。
...だぁぁ,ごめん。 そういうコントロールを「作りたかった」のね。 スマソスマソスマソ
>>165 フォーム側で処理するなら、ProcessTabKey(true); の方が手っ取り早いね。
>>163 thx。
dllimport("user32.dll", EntryPoint="MessageBox", SetLastError=true,
CharSet=CharSetAuto)]
public static extern int MessageBox(int hWnd, String strMessage, String
strCaption, unit uiType);
みたいに使うのか。JNIより分かりやすい。。。
>>167 なるほど,そういう手もありましたね。
勉強不足だ... 出直してきます。
>>170 なるほど、勉強になります。あんたいい人だ・・・
しかし、ここ見てるとC#な人たちはWindows Formsが主流だね。 やっぱりWebアプリケーションは終わったのかな?
>172 おわってないんじゃないの?
>>172 趣味ならまずはWindowsFormでしょ。
WebFormは仕事じゃないとなかなかやらないかも。
そか。ここは趣味人の集まりなのか。ちょっとガカーリ。
>>175 つーかいきなりSP1出るような物を仕事ではまだ使わんだろ…
もう少し枯れないとちと恐い
175です。けして煽ったわけではありませんので念のため。業務で使いたいなー、ってだけです。
>>176 そう思われちゃいますよね、普通。。。うちはもろに使ってますけど。。。
>>176 いきなりっていうか、もう2ヶ月経ってるんだけど...。
179 :
デフォルトの名無しさん :02/03/26 20:39
SHBrowseForFolder() のようなダイアログを出したいのですが、.NET Frameworkでは実現できないのでしょうか? クラスライブラリを見たんですが、探しきれず・・。
>>179 System.Windows.Forms.FileDialog
181 :
デフォルトの名無しさん :02/03/26 21:05
>>180 これって、ファイルだけでは?
SHBrowseForFolder()ってディレクトリを選択するダイアログ・・・。
182 :
デフォルトの名無しさん :02/03/26 21:25
>>179 System.Windows.Forms.Design.FolderNameEditor。
使い方は過去スレのどこかにあったけど忘れた。
183 :
デフォルトの名無しさん :02/03/26 21:32
プログラミング超初心者です、ってかいまからやってみようかなという者です。 オススメのサイトや本などあったら教えてほしいです。 スレ違いでしたらスマソ
185 :
デフォルトの名無しさん :02/03/26 21:51
System.Winforms がねぇよ!って 怒られるんだけど、どこにあるんだ?
ねえよ。
>>179 FolderBrowserってクラスがある。で、このクラスは、Protectedなんで、親クラスを
継承して呼び出せばよい
>185 System.Windows.Forms
>>188 いけました! ありがとうございましたぁ!
using System.Windows.Forms.Design;
class FolderBrowser : FolderNameEditor
{
public static void ShowDialog()
{
FolderBrowser browser = new FolderBrowser();
browser.ShowDialog();
}
}
>>179 public class aaa : FolderNameEditor
{
public void Show()
{
FolderBrowser fb = new FolderBrowser();
fb.ShowDialog();
}
}
かぶった
>>193 がんばってラッパー書くしかないっすね。
っていうか、FolderNameEditor.FolderBrowserを最初っから公開(publicに)してくれ! > MS
このスレ、C#厨の俺にはすごく勉強になる。 お前ら、ありがとうございます。マジで。
マジレス頼みたいんだけど、 おまえらの社内のVB厨はVB.NOTとC#どっち逝くんだ?
>>187-194 確かに
>>184 のサンプルはAPI直叩きでなんかかっこ悪いけどさ、
FolderNameEditor.FolderBrowserだって結局は内部でShBrowseForFolderを
呼んでいるんだから同じだよね。そんなにP/Invokeを毛嫌いしなくても
いいんじゃないかとも思った。いや、単なる感想だけど。
>>196 VB.NOTとか言うなよダセー。ダメ外人[1]の真似してもかっこよくないぞ。
[1]
ttp://www.mvps.org/vb/ ところでうちの厨(VBも満足にできない)には両方やらせてる。厨なだけに
C#がいいとかVBはここがダメとかほざきやがるが、厨の意見には耳は
貸さない。とにかく両方やらせる。そのうち言語なんてどれも同じって
ことに気づくことを願って。
>>197 あらかじめ、.NET Frameworkでラップしてくれていると、Windows以外のOSに移植するとき、ソースをそのまま持ってこれる。
Win32APIとか直接呼んでいると、Windows以外のOSにもっていったとき、その部分を移植しないといけない。
(気が早すぎ?)
>>199 案外早くにLinuxやその他UNIXに移植されるかもね
クラスライブラリの互換性はあまり期待できないけどね
203 :
デフォルトの名無しさん :02/03/27 00:40
商用ベンダが移植してくれるわけじゃないから。
なんでJava厨よ。ちょっと反応しすぎじゃないか? もちろん基幹部分はいけてると思うけど地味-な部分 (上に出たフォルダ選択ダイアログとか)は期待薄と思われ。
WindowsフォームコントロールはAPIに強く依存しているので、,NET が他OSに移植されてもすぐ動くってもんじゃないっつう記事がMSの サイトにありましたです。
208 :
デフォルトの名無しさん :02/03/27 01:21
はよMacOS版.NETだせ>ゲイツ
209 :
デフォルトの名無しさん :02/03/27 03:16
>>82 System.IO.Directory
public static string GetCurrentDirectory();
でどう?
210 :
デフォルトの名無しさん :02/03/27 05:18
すみません。助けてください。C/C++で printf("%06d",1); //出力 000001 のような足りない桁を0で埋めるのは どうやって実現したらいいんでしょう? NumberFormatInfoあたりをさあしてるんですけどわかんないです。
211 :
デフォルトの名無しさん :02/03/27 08:30
Console.Writeln("{0:D6}",1);
ついでに教えてください。 FolderNameEditorの本来の使い方で、 あるクラスに private string path; [ Category("ターゲット"), Description("ファイルの存在するディレクトリ"), Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor)), ] public string Path { get { return path; } set { path = value; } } と書いて、 PropertyGrid(のインスタンス).SelectedObjectにそのクラスのインスタンスを渡すと、SHBrowseForFolderで表示されるダイアログは表示されるのですが、肝心のツリービューがまったく表示されません。 (OKボタンとかは表示される) 何が足りないのでしょう?
>>212 漏れの環境ではうまくいってるよん。
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
class TestForm : Form
{
PropertyGrid grid;
public TestForm() {
grid = new PropertyGrid();
grid.Dock = DockStyle.Fill;
grid.SelectedObject = new Hoge();
this.Size = new Size(300, 400);
this.Controls.Add(grid);
}
[ STAThread ]
public static void Main() {
Application.Run( new TestForm() );
}
}
class Hoge
{
private string path = "";
[
Category("ターゲット"),
Description("ファイルの存在するディレクトリ"),
Editor( typeof(FolderNameEditor), typeof(UITypeEditor) )
]
public string Path {
get { return path; }
set { path = value; }
}
}
アトリビュートってこんな使い方ができるのか。すげえ・・・。
>>214 ありがとうございました!
原因がわかりました。
[STAThread]
をMainメソッド(エントリポイント)につけていなかったのが原因でした。
この[STAThread]ってドキュメントを見ると、
> アプリケーションの既定のスレッド化モデルがシングルスレッド アパートメント (STA: Single-Threaded Apartment) であることを示します。
って書いてあるんですけど、いまいち意味がわからず・・・。Formを使うような場合は必須と考えてよいのでしょうか?
218 :
デフォルトの名無しさん :02/03/27 11:55
c# で棒グラフとか円グラフとか書くコードのサンプルないかな? 簡単なやつでいいんで。
>>220 いや、[STAThread]の意味が知りたかったのでした。
>>25 では、つけなければいけないことはわかるんだけど、その理由が不明瞭なので。
>>223 あ、すいません。
> .NET Frameworkのスレッディングモデルは、COMから見るとMTAに見えるので、
GUIでしかもCOMの機能を使う場合は、STAスレッドで動作することを明記しなければならない。
という部分ですね。読み飛ばしてました。ごめんなさい。
なんか間違った認識が広まっているようだが、 COMはアパートメントの違いは吸収するぞ。 旧OLEだけはSTAで宣言しないといけないからああなるらしいけど。 ウインドウプロシージャに関する動作とはまた別物だしな。
>>225 >COMはアパートメントの違いは吸収するぞ。
間違った認識を広めないでください。
よーく読んでみてくださいね。ここで話題になっているのは、
「STAでしか動作できないくせに、MTAに存在してしまうコンポーネント」の
話です。
ええ、そんなことはCOMでは不可能でした。でも.NET Frameworkでは
可能なんです。可能っていうか、やっちゃだめなんですけど。わかりましたか?
COMのしがらみは捨てたいものだ。
要は CoOleInitialize が必要になるからMTAに初期化できないって話でしょ。 COMのスレッディングモデルの問題じゃなくて、たんなるOLEの制約じゃん。 STAでしか動作できないくせに、MTAに存在してしまう「コンポーネント」の話じゃないでしょ。
229 :
デフォルトの名無しさん :02/03/27 20:51
ああ〜ちょうどよかった。
PropertyGridを使っていろいろいじってたんですけど、
あれに表示されるプロパティの表示を差し替えられません。
>>212 の例でいけば、
グリッドには、「Path」 と表示されますが、これを 「保存先フォルダ」
とか出したいなと。
Description属性で説明を下に出せるから、別にいいんですけど、
気になって気になって、仕方がないんです。
これはそもそも無理なんでしょうか?
230 :
デフォルトの名無しさん :02/03/27 21:07
>>229 public string 保存先フォルダ
{
get{
}
set{
}
}
美しくないけど。
>>228 >要は CoOleInitialize が必要になるからMTAに初期化できないって話でしょ。
CoOleInitialize?なんだそりゃ。
>COMのスレッディングモデルの問題じゃなくて、たんなるOLEの制約じゃん。
>STAでしか動作できないくせに、MTAに存在してしまう「コンポーネント」の話じゃないでしょ。
WindowsフォームがMTAに存在するように見えてしまうって話だよ。だからCOMの
スレッドの話なの。わかった?COMが相手にするのがWindowsフォームだから
問題になるの。わかった?
233 :
デフォルトの名無しさん :02/03/27 22:00
>>233 キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
...ってJavaOneの最中に。(藁
あのな、ウインドウメッセージングに関してCOMは関係ないんだよ。 すべてのウインドウプロシージャは同一のスレッドコンテキストで呼ばれるっていう規則があんの。 今回のはOleInitialize(Coは要らなかった)に関する問題だろ。PlatformSDK読めよな。 で、MSもすでにSTAでしか利用できないのがまずいのはわかってるから公開してないんじゃねぇの。
236 :
デフォルトの名無しさん :02/03/27 23:34
>>233 しかしMSがここまで手の内を見せてしまうとは・・・
>>235 はー、わかってないねー。
OLE D&Dの話してんの。WinFormがOLE D&Dのターゲットになろうとしたら
STAにいなきゃいけないの。でもCLRではデフォルトでMTAになっちゃうの。
わかったか?俺様に向かってPSDKを読めだと?100万年早いわボケ。
238 :
デフォルトの名無しさん :02/03/27 23:49
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
240 :
デフォルトの名無しさん :02/03/28 00:09
>>233 だれでもダウンロードできるんか!すげえ!
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
>>237 そのとおりです。しかし
>>226 ,232とはずいぶん違ったセリフですね。
最初はコンポーネント、その次はアパートメントときて、
最後にOLEの話だとようやく分かっていただけたようで。
ButtonのIsDefaultがプロテクトプロパティになってるんですが、 この値をtureに変更したい場合はどうすればいいの?
>>242 継承すれ。
単に、フォームのデフォルトボタンにしたいだけなら、フォームのプロパティを
調べてみよう。
>>242 FormのAcceptButtonを使いましょう。
>>243-244 ありがとうございます。AcceptButtonでデフォルトボタンを
指定できるのですね。
ちなみに、後学のためにお聞きしたいのですが、継承して
IsDefaultの動的切り替えができるボタンを作成することって
できるのですか?
>>246 .NET Frameworkのソースっぽい...
>>246 今までmscorlibなんかをILDASMして、さらに手動でC#に変換して...
なんて作業がいらなくなるぞ
codeproject.jp も一緒につけてほしいぞ
253 :
デフォルトの名無しさん :02/03/28 04:16
コマンドプロンプトでcsc起動したら fatal error CS2008: 入力が指定されていませんってでるんだけどこれって何? C#が使えないのかな?
254 :
デフォルトの名無しさん :02/03/28 04:47
ms-help://MS.NETFrameworkSDK.JA/cscomp/html/vcerrCompilerErrorSC2008.htm
256 :
デフォルトの名無しさん :02/03/28 05:17
257 :
デフォルトの名無しさん :02/03/28 07:44
.net framework ってさ、 MFC みたく、ライブラリのソースを読んで勉強することって 無理かな? さがしたけど、ソースはおろか、ヘッダも見つからないよ・・・。 ライブラリのソースって、一番いい教科書なのに。
259 :
デフォルトの名無しさん :02/03/28 08:30
260 :
デフォルトの名無しさん :02/03/28 10:20
c#インストールしたよ。 ネットに落ちてたサンプルをコンパイルするよ。 Dispose() は override できませんとかいわれるよ。 どうするんでしょうか。
261 :
デフォルトの名無しさん :02/03/28 10:41
262 :
デフォルトの名無しさん :02/03/28 11:39
VB6 みたいな grid control 使いたいんですけど。 VB.NET のコンポーネントを呼んじゃうのが一番早い?
>>262 1行目:丁寧語
2行目:ため口
ふぅん。
>>260 インターフェイスメソッドのオーバーライドは override 付けなくていいみたいです。
ただし、実装クラスの派生クラスでオーバーライドしたいときは virtual が要ります。
.NET Frameworkをつかってグローバルアトムを取得する方法がわからないっす。 アプリの二重起動を防止しようと思ったんですが。
>>266 System.Threading.Mutex クラスでどうかしら。
268 :
デフォルトの名無しさん :02/03/28 13:43
OpenGL使うときは using System;GL/glut.h で良いでしょうか?
>>262 VB使ったことないから、grid control が何かしらないけど、
エクセルみたいなもんだとしたら、
System.Windows.Forms.ListView クラス
でListView.GridLines プロパティをtrueにセットしてやればいい。
270 :
デフォルトの名無しさん :02/03/28 13:59
HTML や Windows の ヘルプみたいに、 テキストがあって、 グラフィックがあって、 さらに、クリックできるところ(ボタンやリンク)があって、・・・ といったことをやりたいんですが、 どうすればいいのでしょうか。 System.Text あたりをみればいいのですか?
271 :
デフォルトの名無しさん :02/03/28 14:15
.net/c# の良書(日本語)って何よ? どーやってこの板の連中はこんな凄い知識を身につけてるんだ?
>>270 IEコンポーネントを使うしかないかと。
VS.NET でのやり方なら過去ログにあるので,探してみてくらさい。
# RichTextBox でできないこともないけど,かなり面倒かな...
ウラで IE 立ち上げるんじゃ、ちょっとかっこ悪いっすよ・・・。 機能的にも IEじゃ不可能なことをやりたいですし。 ちなみに、IE をウラで立ち上げるとして、ボタンが押されたら C#のメソッドが呼ばれるようにするにはどうするんですか? IIS必須とか?
自分で全部書けば?
276 :
デフォルトの名無しさん :02/03/28 19:50
ドラッグ&ドロップで、ドロップターゲットになる方法は AtMarkItでガイシュツだけど、 ドラッグソースってどうやるの? とくに、APの窓に浮かんでいるデータを デスクトップやエクスプローラにドロップできるようにしたいんだけど、 これってどうやるんだろう。 単純に、ドラッグイベントに対し IDataObject をセットするだけでは無理だし。 (それだと、ファイルネームしかセットできないよね) 多分、ShellとOLEで通信する必要性があるんだろうけど、 やりかたきぼーん。
277 :
デフォルトの名無しさん :02/03/28 21:09
278 :
デフォルトの名無しさん :02/03/28 21:48
>>262 データグリッドってのがありますけど、それじゃだめ?
>>267 Mutexじゃ、CreateMutex()ですでに存在しているエラーがとれるようにはいかないので、
難しいんじゃないでしょうか?
>>270 そのものずばり、HTMLHelpで作るのがいいと思います。
>>252 unixのツール群を移植するとか
意味ねーけど
>>278 static void Main() に,
bool tmp;
Mutex m = new Mutex(true, "hoge", out tmp);
if (tmp)
{
Application.Run(new Form1());
m.ReleaseMutex();
}
else
{
MessageBox.Show("起動してるよん");
}
みたいに書いてみたけど,うまくいったよ。
281 :
デフォルトの名無しさん :02/03/28 22:50
282 :
デフォルトの名無しさん :02/03/29 08:41
デバッグについてチョイしつもーん。 ・ロギング、トレースってどーやるの? ・Design by Contract みたいなことって無理? ・プリティプリンタってどこにあるの?(Gnu Ident みたいなの) ・デバッグプリントってどーやるの? if( Debug_Level > 3 ) { "Warn:" >> __LINE__ >> dwFlags >> debug_out; } みたいなの。
>>282 >ロギング、トレースってどーやるの?
ガイシュツ。/d:TRACE
>Design by Contract みたいなことって無理?
可能。たしか初代スレでAOPのサンプルを♯さんが作ってた。
>プリティプリンタってどこにあるの?(Gnu Ident みたいなの)
知らない。
>デバッグプリントってどーやるの?
たしか先代のスレにガイシュツ。StackFrameを使う。でもリリースビルドでは
行番号は取れない。
284 :
デフォルトの名無しさん :02/03/29 10:27
Perl みたいに、配列のサイズが勝手に拡張していくようには できないの?
>>282 A(spect)OPならMSDNマガジンの最新号に載ってたYO!
>>284 ArrayListでどうYO!
286 :
デフォルトの名無しさん :02/03/29 11:34
全角半角変換ってどーやるんだYo!
287 :
デフォルトの名無しさん :02/03/29 11:40
>>286 俺にはStrConv関数しか使えないなぁ。
APIだと、LCMapStringだから、そのへん探してみたら?
・・・APIで引いて.NETでどうすればいいか分かる辞書ないかなぁ。
289 :
デフォルトの名無しさん :02/03/29 15:43
>>288 ワラタ。
>>285 多次元の場合はどおよ?
string foo[][][] ( 当然、どの次元も要素数は勝手に増える)
みたいなことをやりたいなら、
ArrayList[ArrayList[ArrayList[string foo]]]
みたいな風にするのかな?
290 :
デフォルトの名無しさん :02/03/29 16:22
やってみたけどうまくいかないYo! ArrayList の多次元配列はどうやるのかNa!
291 :
デフォルトの名無しさん :02/03/29 18:54
.net FrameWork ってさ、unix の dbm みたいな、簡易DBってないかな。 いや、別にMSDE(MSDNじゃないよ♪)みたいな本格的なのでもいいんだけど。 ただ、たとえ Freeだろうがなんだろうが、 なんかDLLをインストールする必要性があるのはちょっとね。 .net framework ならどこでも常に標準で存在するDBってなんかない?
292 :
デフォルトの名無しさん :02/03/29 19:30
ね、ね、C#ってぶっちゃけどの程度需要あるの?
293 :
デフォルトの名無しさん :02/03/29 19:45
いつになったらC#にgenericsが導入されるんでしょうか?
.NET Framework SDKで作ったプログラムって売っていいのか? 使用許諾契約書を見ても載ってないっぽいんだが。 載ってない=不許可ってこと?
296 :
デフォルトの名無しさん :02/03/29 20:55
>294 漏れも木になるage
>291 > .net framework ならどこでも常に標準で存在するDBってなんかない? xmlファイル。 ADO.NET 使えば xmlでデータベース作れると思うんだけど? 試してないけど。 できたらソース付であぷしてね。
298 :
デフォルトの名無しさん :02/03/29 21:19
299 :
デフォルトの名無しさん :02/03/29 21:51
>>287 VisualBasicのライブラリを参照して、StrConv()ってのもありかもしれません。
で、StrConv()のILを見てみたら、NativeコードのLCMapString()を呼び出してました。
300 :
デフォルトの名無しさん :02/03/29 22:40
TextBoxのフォントを、例えばMSゴシックでサイズは14とかを指定するには どうすればよいでしょうか。 太字とか色はわかったんですが・・・・おながいします。
301 :
デフォルトの名無しさん :02/03/29 22:52
SDKのコンパイラオプションの/optimizeって最適化らしいんですが、 オプションを付加することにより何が変わるんですか?
302 :
デフォルトの名無しさん :02/03/29 22:53
>>300 VB.NETだと、こんな感じでできました。
TextBox1.Font = New Font("MS Gothic", 14, FontStyle.Regular, GraphicsUnit.Point)
>302 できました!ありがとうございます。このGraphicsUnit.Pointは何なんでしょうか? 厨ですいません。
>>301 FERC.NETエージェント1号が調べた結果、以下のことがわかった。
1. ILに対する最適化
たとえば次のコードを/o-でコンパイルすると、
static int Add(int x, int y) {
return x + y;
}
次のILが出力される。
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: add
IL_0003: stloc.0
IL_0004: br.s IL_0006
IL_0006: ldloc.0
IL_0007: ret
IL_0003〜IL_0006までに無駄なコードが入っている。これはおそらくデバッガの
ソースコードハイライト機能をサポートするためであろう。同じコードを/o+で
コンパイルすると、次のようになる。
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: add
IL_0003: ret
これがIL出力時の最適化だ!もう1つの最適化については追って報告する!
>>301 2. JITコンパイラの最適化
/debugを指定してコンパイルすると、アセンブリのメタデータにSystem.Diagnostics.DebuggableAttributeが設定される。
これだけならば、たとえば次のコードは、
int x = 1; int y = 2;
int z = x + y; Console.WriteLine(z);
JITコンパイル時にこのように最適化される。
mov edx,3
mov eax,dword ptr [ecx]
call dword ptr [eax+0BCh]
しかし、ソースのコンパイル時に/optimize-を設定すると、System.Diagnostics.DebuggableAttributeが変化し、
同じコードが次のようにJITコンパイルされる。
mov edi,1
mov ebx,2
lea eax,[edi+ebx]
mov esi,eax
mov ecx,esi
call dword ptr ds:[79B89228h]
このように、C#コンパイラの/optimizeは、1) ILの最適化、2) JITコンパイラの制御
の2つの役目を担っているのだ!そして2つ目の役割はアセンブリのメタデータについている
属性で制御されているのだ!
以上です、チーフ。
>304,305 ファーイーストリサーチ社・・・すばらしいです。
最近C#でプログラミングを始めたものです。OpenFileDialogでダイアログを開きtxtファイルを開きたかったのですが、RichTextBoxと違いLoadFileメソッドがTextBoxには無いようです。 どうやって開けばよいかご指導ください。 TextBox tb =new TextBox(); ・・・略 protected void Load_Click(object sender, EventHandler e){ OpenFileDialog dlg = new OpenFileDialog(); DialogResult re = dlg.ShowDialog(); if(re==DialogResult.OK && dlg.FileName.Length >0); {tb.LoadFile(dlg.FileName); //これが出来ないです。 }}
どうやって、サイズ可変の多次元配列をやるんだYo!。 サイズ可変だと一次元しかできないYo!。 わかんないYo!。 おしえてくれYo!。
>>307 ファイルを自分で開いて読むのだよ。
APIだと、CreateFileとか、ReadFile
>309 えっそうなんですか・・・・APIですか・・・.Netのライブラリには無いんですね。 自分でそういうクラスとかを作って、イベントに当てればいいんですね。やってみます。ありがとうございました。
311 :
デフォルトの名無しさん :02/03/30 01:36
>>310 System.IO みてみ、、、、ファイルダイアログでパスを得て
ファイルを直に開けよってことでしょう、、、
312 :
デフォルトの名無しさん :02/03/30 01:46
>>308 多次元の添字のためのクラス作って、そいつをキーとする HashTable を使うとか。
struct Indeses
{
public int x, y;
public Indeses(int x, int y){this.x = x; this.y=y;}
static bool operator==(Indeses a, Indeses b){return a.x==b.x || x.y==b.y;}
}
HashTable hash = new HashTable()
hash[new Indeses(1, 2)] = 5;
って感じ。
あんまりスマートな方法じゃないけどな。
313 :
デフォルトの名無しさん :02/03/30 01:51
.netはスレちがいだったようなのでこっちにかきます。 StringをFileStream.Writeで書き出すにはどうすればよいのでしょう。 バイト配列に直すようなものがありません。
最近プログラミング自体をC#で始めた人が多いような気がする。 >71のようなスレと分けたほうがよくない? かってな子と言ってスマソ。芯でくる。
>>313 System.Text.Encoding.GetBytes
>>313 しかしこの質問は何回もでてくるな、次スレでは書いといた方がいいな
System.Text.Encoding.GetBytes しらべれってな、、
>>314 そうかもね、、、スレの進み方も日本語版でてから早いし。
初心者歓迎スレか。板の住人にうざがられないか心配だけど。
319 :
デフォルトの名無しさん :02/03/30 02:02
>315 できました。どうもありがとうございました。
320 :
デフォルトの名無しさん :02/03/30 02:06
>314,318 確かにあってもよいかも。Del、VB、JAVAにもあるんだから・・・・ いまスレ立てたほうが後のこと考えても・・・・・ 勝手な事言ってる漏れも氏んでくる。
しかもAgeちゃった・・・・九尾つってきます。
参考までに言わせてもらいますと、System.Text.Encoding.GetBytes メソッドは僕もライブラリを調べているうちに見つけました。 しかしインスタンスを作成しようとしたら書いてあるとおり抽象クラスで駄目でした。 そこでリファレンスを読み進めていくとオーバーロードしなければならないとか書いてありました。 クラスを継承してメソッドを実装しないと駄目なら意味ないねと勘違いして違うのを見つけようとしたのがこれまでの経緯です。
>>322 君を責めてるわけじゃないよ。ごめんね。
そこらへんの経緯も前スレにあるので、時間があったら
見てみたら勉強になりますよ。
324 :
デフォルトの名無しさん :02/03/30 02:31
>>299 VBでクラスライブラリを作成して、C#から利用するには、どう書いたら
いいんでしょう?
Namespace MyCorp.Text
Public Class StringConvert
Public Shared Function StrConv(ByVal Str As String, ByVal Conversion As Microsoft.VisualBasic.VbStrConv, Optional ByVal LocaleID As Integer = 0) As String
Return StrConv(Str, Conversion, LocaleID)
End Function
End Class
End Namespace
って、書いたけど、C#のプロジェクトからDLLの参照を追加しても、MyCorp.Textなんて存在しないって言われるし・・。
(VB.NETはよう分かない・・・。)
>311 ありがとうございます。下記のように試してみたらtxtファイルを読み込めました。 でも2バイト文字は読み込めません。どうしたらよいでしょうか。よろしくお願いします。 if( res == DialogResult.OK && dlg.FileName.Length >0){ string Line;FileStream fs = new FileStream(dlg.FileName, FileMode.Open); StreamReader sr = new StreamReader(fs); while((Line = sr.ReadLine()) != null) { tb.Text += Line; tb.Text += "\r\n"; } >314 まさに私のことですね・・・・すいません。
>>325 StreamReader(string, Encoding) を調べれ。
あと、Encoding.Default
327 :
デフォルトの名無しさん :02/03/30 04:44
>>197 のことを解決したくて
>>212 >>214 でやってるようなことをしたいと思うんだけど
Editor( typeof(FolderNameEditor) ----- エラー
型、または名前空間名 'FileNameEditor' は、
クラスまたは名前空間 'System.Windows.Forms.Design' に存在しません。
アセンブリ参照があるか確認してください。
っていわれてしまうんです。何でなんでしょう?
328 :
デフォルトの名無しさん :02/03/30 05:18
属性ってどういうときに使うのですか?
>>327 System.Design.dllを参照に追加する
>>329 ありがとうございます。悩みが解決しました。たすかりました。
>>312 それは漏れのDQNアタマも思いつきました。
perl4 で多次元配列や構造体を実現したときにやった方法と同じだよね。
でも、そんな変なことするなら、それこそ .net perl 使ったほうがいいよなぁ。
だれか、もっといいアイディアないですか。
自動的にサイズが伸びる配列は非常に便利なんだけど。
>291 DataSet ds = new DataSet(); XmlTextReader xmlReader = new XmlTextReader( new StreamReader( new FileStream( file, FileMode.Open ), Encoding.Default ) ); ds.ReadXml( xmlReader ); xmlReader.Close(); これでDataSetに読めこめたんで 簡易DBの出来上がりだ。 後は、System.Data System.Xml ADO.NET あたりをみれ。
334 :
デフォルトの名無しさん :02/03/30 16:40
paint(win付録のお絵かきソフト)みたいなコードのサンプル、 ないかな。 Win32 はそれで覚えたんで、夢をもう一度、です。
335 :
デフォルトの名無しさん :02/03/30 17:06
>>329 へー、なんだそれ。マニュアル検索してもそんなDLL載ってないけど。
でも、たしかにインストールされてるな。
どこに記載があったの?
Formの最大化と最小化は無効にしたんですが、サイズ変更を無効にするにはどうしたらいいですか?
Form.FormBorderStyle プロパティ をFixedSingle 既出だよ。
ほんとにどうでもいいんだけど、SDKのヘルプのソース。コメントと色分けして欲しかった・・・
341 :
デフォルトの名無しさん :02/03/30 18:22
単純にButtonを押したら音(wav)を鳴らすにはどうしたらよいですか? SDKのヘルプを見てもさっぱりわかりません。
いつC#対応のDirectXが出るのですか?
>>341 前スレに既出。
[DllImport("winmm.dll")]
public static extern long PlaySound(String lpszName, long hModule, long dwFlags);
DLLつくりゃあいいのか
>343,344 ありがとう。過去ログも見てきました。 .netにはそういうのが無いんですねー。でもそんなに難しくなさそうですね。がんばりまっす。
347 :
デフォルトの名無しさん :02/03/30 19:31
Perl の Strable みたいに、 (↑オブジェクトを dbm っつー簡易データベースに保存するクラス) お手軽にオブジェクトの永続化ができる クラスってないの?
あると思う。
>342 VS.NETスレか,このスレになんか書いてあった。
350 :
デフォルトの名無しさん :02/03/30 20:01
System.Windows.Forms.Timerの使い方がよくわかりません。 Form上のボタンをクリックすると、5秒後にMessageBoxが表示というのを組んでみたんですが・・・ 駄目でした。教えて君ですいません。
今回のタイマーは、どうやら正確らしいな。
352 :
デフォルトの名無しさん :02/03/30 20:28
System.Windows.Forms.Timerなんて存在するのか?
Strable -> StOrable 訂正です。
で、
>>348 さん。
どこにあるの?
>>350 タイマーのIntervalプロパティを5000(5秒)に設定して、
ボタンのClickイベントにTimer1.Enabled = true;を書いて、
タイマーのTickイベントにMessageBox.Show("...");を書きます。
以上です、チーフ。
>>347 Perlはまったく知りませんが、オブジェクトの永続化なら、
System.Xml.Serializationか、System.Runtime.Serializationネームスペースの
クラスで用が足りるかもしれません。
以上です、チーフ。
356 :
デフォルトの名無しさん :02/03/30 22:04
WinDes.exeがみつかりません。
358 :
デフォルトの名無しさん :02/03/30 22:17
System.Windows.Forms.Buttonをトグルボタンにするにはどうしたらいいの?
>>358 CheckBoxを貼りつけて、AppearanceをButtonにしてちょ。
>>359 ありがとうございます。出来ました。CheckBoxにするんですねー。盲点でした。
ついでに教えてください。そのCheckBoxがフォーカスを得ないようにするにはどうしたらよいのでしょう?
具体的には、VS.NETの「ツールボックス」みたいなボタンが作りたいんです。
>>360 そういうのは、通常ツールバーで作ると思いますよ。
>>360 こんなんでどう?
・ToolBarを追加して、DockをNoneに
・Buttonsからボタンを追加して、StyleをToggleButtonに
あとはお好みで
・ツールバーのAppearanceをFlatに
・TextAlignをRightに
これでそれっぽくなるよ。
>>362 がーん(T-T)。そうですか。知らなかった。
ツールバーにAddするToolBarButtonを縦に並べる方法が分からず・・。
366 :
デフォルトの名無しさん :02/03/31 00:35
StatusBar.Iconに表示させるIconをImageListに持とうとしたんですが、 ImageクラスからIconクラスへの変換方法がわからない…。
367 :
デフォルトの名無しさん :02/03/31 01:43
C#って言語的には非常に魅力だしプログラミングのしやすさ(開発効率)も抜群なんだけど、 趣味でクライアントサイドのソフトしか作らない俺みたいのには、Delphiとかのがいいのかな・・ SDKでコンパイルした、ただ単にフォームを表示するだけのアプリでもタスクマネージャ見ると、 6MB近くメモリ食ってるよ・・・どしよー。
368 :
デフォルトの名無しさん :02/03/31 01:45
TextBoxでEnterを入力すると警告音らしき音が出るんだけど、止め方ってわかる?
367はDel厨っぽいな。
>367 もうすでに時代は、メモリを食うアプリでも良いという方向へ行っていると思うが?メモリの容量が無駄に増えているのがその証拠。
371 :
デフォルトの名無しさん :02/03/31 02:06
>>367 プログラミング言語なんて、アプリケーション作るための手段でしかないんだから、好きなの使えばいいじゃん。
>>365 きゃー、すばらしい!出来ました。ありがとうございます!!
Dockプロパティってこんなことも出来るんですね。勉強になりました。
>>342 Framework SDK デレクトリのなかの
\Samples\Technologies\Interop\Basic\DirectX
を見てみ
374 :
デフォルトの名無しさん :02/03/31 02:32
投稿系ということでは・・・ www.layer-8.com/sce/
Thanx! Layer-8 C#系の話題盛り上がりませんね(汁
377 :
デフォルトの名無しさん :02/03/31 03:44
あるフォルダの下のフォルダを取得したいのですが、 System.IO.Directory.GetDirectories() で取得するとフルパスで帰ってきて、TreeViewで使うときに不便なのですが、 FindFirstFileなどのように名前だけ取得できる方法はないでしょうか?
>>377 Path.GetDirectoryName 使うのはなし?
379 :
デフォルトの名無しさん :02/03/31 04:14
>>377 DirectoryInfoは?
DirectoryInfo dirInfo = new DirectoryInfo(path);
DirectoryInfo[] subDirInfos = dirInfo.GetDirectories();
foreach(DirectoryInfo subDirInfo in subDirInfos) {
Console.WriteLine(subDirInfo.Name)
}
ありがとうございました。DirectoryInfoでいけました。 似てるようで違うのですね。早く覚えないと・・・。
381 :
デフォルトの名無しさん :02/03/31 04:43
get[int x][int y] { return hoge[x][y]; } みたいに書きたいんだけど、なんか良い方法無いですか? アセッサメソッド書く以外無いですか? インデクサはちょっと困りまする
TcpClientでちょっと困まりました。 サーバはパケット冒頭にデータの長さを送信して、 次にその長さだけデータをを送信します。[1] そこで[2]のようなコードでクライアント側で受信しようとしました。 しかし[3]のコードが実行された時に、まだデータがサーバから受信しきれていない場合 受信できてない後半部分は0で埋められ、バッファ(data)に格納されてしまいます。 私の考えでは、すべて受信するまで[3]で待機すると思っていましたがどうも違うみたいですね。 この場合の対処としては、[4]みたいにしたのですが、駄目でした。 どうすればいいでしょう。長文申し訳ない。 [1] [データの長さ|データ中身]<---パケットの形式 [2] NetworkStream netStream = TcpClient.GetStream(); BinaryReader reader = new BinaryReader(netStream); short dataLength = reader.ReadInt16();//データの長さを読む byte[] data = new byte[ dataLength ]; reader.BaseStream.Read( data , 0 , data.Length);//データを読む[3] [4] TcpClient.ReceiveBufferSize = data.Length;
383 :
デフォルトの名無しさん :02/03/31 10:29
>>381 なんでインデクサは駄目なの?
どうしてもっていうなら、hogeをプロパティにしたら?
class A
{
T[][] hoge;
public T[][] Hoge
{
get { return hoge;}
}
}
利用する側はobj.Hoge[][]
と利用するということで。
384 :
デフォルトの名無しさん :02/03/31 10:36
>>382 dataLengthになるまで、reader.Read()を繰り返したら?
reader.Read()の戻り値をみて。
int readSize = 0;
int offset = 0;
while(dataLength) {
readSize = reader.Read(data, offset, dataLength);
offset += readSize;
dataLength -= readSize;
}
失礼。 × while(dataLength) { ○ while(dataLength > 0) {
386 :
デフォルトの名無しさん :02/03/31 11:22
>>383 あぁ…そう書けばよかったんだ。
どうもありがとうございます〜
387 :
デフォルトの名無しさん :02/03/31 12:14
stream.OpenFile( args[0] ); とかやっちゃうと、コマンドライン引数がないばあい、 例外で飛ぶでしょ。 だから、c みたいに、事前に、 if( !args[0] ) { FileName = "Default"; } とかやっときたいんだけど、 どうするの?
>>387 args.Length > 0 かな?
389 :
デフォルトの名無しさん :02/03/31 12:20
>>387 args.Length でコマンドライン引数の数を調べられるよ。
>>384 ありがとうございます。うまく行きました。激しく感謝。
こんなこと、基本事項なんですよね。反省。そこまで、逝ってきます。
392 :
デフォルトの名無しさん :02/03/31 14:59
c# って いわゆる「普通の関数」ないの? void myfunc(int a) { hoge;;} みたいなの なんでもクラスにするの、面倒なんだけど。
>>392 完全なオブジェクト指向言語だから,グローバル関数はないよ。
ちなみに VB.NET だとできるね。
む。
> なんでもクラスにするの
って,インスタンス作成することかな?
だったら
>>393 さんの言うように static メソッドにすればいいのでは?
class Hoge {
public static void MyFunc(int a) {
// hoge
}
}
で,Hoge.MyFunc(5); みたいに呼び出せるけど。
396 :
デフォルトの名無しさん :02/03/31 15:09
>>392 privateなコンストラクタだけ用意したクラスに、pubilc + staticなメソッドをつけると、ほとんどグローバル関数っぽくなる。
(いや、もちろん、クラスなんだけど)
privateなコンストラクタのみ = インスタンス化を抑制
ま、面倒なことには間違いないけど、それがオブジェクト(コンポーネント)指向。
>ま、面倒なことには間違いないけど、それがオブジェクト(コンポーネント)指向。 アホか。単にファーストクラスオブジェクトがクラスなだけ。
398 :
デフォルトの名無しさん :02/03/31 16:18
class GlobalFunc() { public static func1(){;;;} public static func2(){;;;} public static func3(){:::} } これでどーよ。 関数の前に GlobalFunc.func1(); みたいに接頭辞がつくのが ウザいことをのぞけば C とおなじだぜ。
それだったら Global.func1() のほーがいーよーな。 ダサイけど、しょうがないやね。 Javaでも同じ事してるし。
400 :
デフォルトの名無しさん :02/03/31 16:55
unix でよくやる、フィルタ系のコマンドを立ち上げて、 そこにデータを流し込んで、結果を受け取って、といったのは どうやってやるの?
402 :
デフォルトの名無しさん :02/03/31 17:06
名前空間を自由に分けられるメリットを理解できない
アホが紛れ込んでいるようです。
>>398-399
403 :
デフォルトの名無しさん :02/03/31 18:12
まぁまぁ、煽りは無しで行こうよ。
404 :
デフォルトの名無しさん :02/03/31 19:17
Process.Start("www.2ch.net"); ってやると、いきなり2chのトップページに飛べるのは便利。 でも、HTMLでいうところの、「今までのウィンドウで開く」に なっちゃうんだよな。 <a href target = "_blank"> ( 新しいウィンドウで開く) みたいなことってどうやってやるの?
406 :
デフォルトの名無しさん :02/03/31 20:12
ありがとーーん。うまくいきました。
407 :
デフォルトの名無しさん :02/03/31 22:32
SDKでGUIアプリ作り出したんだけど、やっぱりRAD環境が欲しい・・・・とか言ってみるテスト。 しかもage
408 :
デフォルトの名無しさん :02/03/31 22:36
>>407 話題のEclipseSDKでつくってみよう。いや、マジで。
EclipseってJava専用ちゃうのん?
>408 あれってC#で動くの?マジレスきぼん
411 :
デフォルトの名無しさん :02/03/31 22:49
>>409 実装がJavaでできているだけ。
C/C++用のIDEなら既にプラグインが開発されてるらしいし。
C#だって可能だと思う。もともとJavaとライブラリ似たようなもんだし(藁
412 :
デフォルトの名無しさん :02/03/31 22:58
>361 気になったんだけど売ってなかった。立ち読みしてみたい。
pictureBoxをAUTOSIZEにしておいて、それをパネルの中に入れると、パネル外にいくときは自動的にスクロールバーが出ますよね。 しかしスクロールした部分にGraphics.drawRectangleなどで描こうとしても、描けません。仕様ですか?
かんちがいしちゃった えへ ごめんね
415 :
デフォルトの名無しさん :02/04/01 00:39
>421 同士よ。われらDQNには、やはりDQN向け紙媒体が必要であるな 速くイロイロだせやゴルァ!!!!
これからの時代はB#だよ!!すべてテキストだよ!!MSマンセーw
|| Λ||Λ ( / ⌒ヽ | | | ∪ 亅| | | | ∪∪ : : ‐ニ三ニ‐
416はマジだと思ったのかな。
でもさー、しょぼい記事だよね がっかりしたよ
B#イイ!
423 :
デフォルトの名無しさん :02/04/01 19:15
TextBox をさ、(べつにほかのコントロールでもいいけど)、 Console みたいに使いたいんだけど。 textbox += output; ってやり続けると、どこかでバッファがあふれて破綻するでしょ。 コマンドラインのコンソールみたいに、 最大1000行まで。それ以上は、古いものから消えていく、、 とかやりたいんだけど。
public class DisposingTextBox : TextBox { //あとは任せた
} // 終了
>>424 private DisposingTextBox() {
throw new InvalidProgramException();
}
static DisposingTextBox() { throw new SystemException("ウイルスに感染しますた"); }
>401 遅レススマソ&ありがとう。 コード動かしてみました。XML絡みの部分は重宝してます。 >Regex regTitle = new Regex(@"<b>(?<category>.+)</b>", RegexOptions.IgnoreCase); >Regex regLink = new Regex(@"<a href=(?<url>\S+).*?>(?<name>.+?)</a>", RegexOptions.IgnoreCase); この辺とかのHTML解析部分は、やっぱりハードコードするしかないのか・・・ >スクリプト組んでやるってのは悪い考えではないと思うんだけど、エラー処理とか考えると あ、スクリプトエラーが出たら例外吐いて落ちてもOKって(個人的には)思ってます。 機動的にHTML解析部を変更できるメリットの方が重要でして。。。
430 :
デフォルトの名無しさん :02/04/01 20:01
うえーん。いじめられてるYo〜  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ ( ´Д⊂ヽ ⊂ ノ 人 Y し (_)
ネタスレになってる気がする・・・。
432 :
デフォルトの名無しさん :02/04/01 21:52
すいません、.NETのエディタのマクロリファレンスって無いんですか? ヘルプには Excel等で使った経験があれば分かるはず なんて 書いてあるんですけどこれってアリ?
だれか教えてクリクリ。
>>424 TextBox.Linesの要素数を調べて一定以上あれば先頭の何行か削っていけばいいじゃん。
436 :
デフォルトの名無しさん :02/04/02 00:02
あの、CopyMemoryみたいな関数はないのかな? バイナリファイルからバッファに読み込むまでは出来たのだけど、 そこから文字列とかを取り出したい。
437 :
デフォルトの名無しさん :02/04/02 00:17
>>436 Encoding.GetStringあたりを調べるとよいかと。
孔雀==ハッタリ
439 :
デフォルトの名無しさん :02/04/02 01:16
どなたかC#でMySQLを利用する方法をご存知の方はいらっしゃいませんか? 参考になるページでも良いです。 ご教授ください。
440 :
デフォルトの名無しさん :02/04/02 02:35
>>436 use unsafe and cast your buffer to a struct type.
no need to parse your buffer. use Csharp like C/C++.
>>435 そーゆー力技しかないのかな。
どっかに「いかにも」ってクラスが転がってそうなんだが。
だれか教えて。
やってみた。 クソおそいよ。実用にならない。 いかにもなクラス、教えてくれ。
>>443 自前でエディタクラス作って好きなようにバッファ管理しる
んな面倒なことできるかよ。
ていうか難しそう。 文字サイズを定義したり編集エリアとかキャレットも自分で描画するんでしょ。 フォントとかWordWrapどころかキーボードからの入力を受ける処理だけでも難しそう。。。
>>445 ていうかそんなに遅いか?
1500行を超えたら500行くらいに縮小するようにすれば遅くないんじゃないの。
行数のカウントもLinesじゃなくて自前でカウントしとくとかすれば改良できるし。
こんな教えて君は相手にすべきじゃないってばさ
>>447 たとえば、300行あるときに、301行目を書くためには、
もとある300行の string に += して、それをTextBox.Text に
転送することになる。
それがクソ遅い。
やってみたが、これを100行分もくりかえせば、
1秒ぐらいかかる。
つまり、TextBox とは、Default の文字列はあるにせよ、
原則としては、user edit のためのコントロールであり、
AppのOutput を貼り付けるコントロールではないようだ。
AppのOutputを貼り付けるコントロールはないんか?
>>449 TextBoxBase.AppendText()はどう?
それだと全部メモリ書き換えることになるんじゃないの?
上のでだめならTextBoxBase.SelectionStartで一番後ろに
文字追加とかだめ?やってないからわからんけどね。
>>449 Label。
stringが遅いのはimmutableだから。
452 :
デフォルトの名無しさん :02/04/02 15:29
>>449 string += するから遅いんであって、StringBuilderで文字列を操作しておいて、
TextBox.Text = StringBuilder(のインスタンス).ToString()
したらダメ?
(つまり、文字列は別に管理しておく)
>>450 を知らんとは…。そんなんで偉そうな口きくなや。
文字列全体を書き換えたら遅くなるくらいは、試す前に気がつけ。
見下し野郎がうざい。 初心者専用スレが必要だよ。
>>454 そうかぁ?ずいぶんな態度だぜ、この初心者も。もうちょっと聞きかたってもんが
あるんじゃねーの?
457 :
デフォルトの名無しさん :02/04/02 17:03
エージェント1号さんがでてこないと単なる糞スレですね、ここ!
459 :
デフォルトの名無しさん :02/04/02 17:19
>>457 この掲示板を匿名で利用できる無料のサポートセンターだと勘違いしていない?
自分の非力・無力を棚にあげて、なんて偉そうなんだ・・・。
> いかにもなクラス、教えてくれ。
なことばっかり偉そうに言っていたら、会社から捨てられるよ。モジュールの組み合わせなんて誰でもできるんだよ。結果(ソースだけ)を求めずにもっと考えたら? みんないろいろ考えてくれているのに・・・。
ここで一句。 ちょっと待て 457は !423 字余り。
キューに入れて、Lines()にコピー、でいいんじゃネーノ?
スレが荒れると♯さんやその他すごい人が出てこなくなっちゃうよ。。。 煽りはなしで行こうよ。。。
捨てるも何も、煽りにマヂレスカコ(略
C#でオラクルに接続する方法を教えてください。
どこがマジレスなのか問い詰めたい
>>441 どうもありがとうございます。
Odbc.netを調べてみます。
ありがとうございました。
470 :
デフォルトの名無しさん :02/04/03 01:25
C#にはjavaでいうところのjavadocみたいなツールは ないのでせうか? あれって、結構便利なのですが、、、
CSC.exeに/docをつける。 コードには ///<summary> ///コメント! ///</summary> などのXMLを書く。するとXMLドキュメントが生成される。XMLなのでJavadocよりも 後加工がしやすい。
472 :
デフォルトの名無しさん :02/04/03 01:34
>>470 > C#にはjavaでいうところのjavadocみたいなツールは
> ないのでせうか?
>
> あれって、結構便利なのですが、、、
/// と XML タグを使ってドキュメントを記述。
csc の /doc オプションで XML ドキュメントを出力できる。
473 :
デフォルトの名無しさん :02/04/03 01:35
C#もC++のようにGUI作るには訳わからないブラックボックスの森をさ迷わないといけないの?
474 :
デフォルトの名無しさん :02/04/03 01:38
>>473 C/C++ で生API使うこと思えば、殺人的にラク。
+ 激しく誤爆 + ごめんなさい。C#スレのみなさん。
475よ 疲れているみたいだな そろそろ寝たらどうかな
478 :
デフォルトの名無しさん :02/04/03 07:04
Visual C# Standard 早売りしてるところないかな〜。
479 :
デフォルトの名無しさん :02/04/03 08:38
▽ 時代はC♯ >◎ | | □□□ □□□□ □ < / >
480 :
デフォルトの名無しさん :02/04/03 20:31
>>450 >>452 やってみましたが、ダメです。
どうも、遅いのは、文字列操作(これも遅いけど)というよりは、
TextBox クラスの内部処理みたいです。
Console的につかうには、一行ごとに出力できなきゃダメだし。
てゆーか、もっと簡単に実験できるんですが、
VS.net で TextBox のフォーム作って、そこに1Mバイトぐらいの
テキストを張ってみてください。その遅いこと遅いこと・・・。
>>451 Label は、コピペとかに対応していないし、スクロールバーも出ないので、ダメダメです。
うーむ。なんかいい方法ない?。
482 :
デフォルトの名無しさん :02/04/03 21:01
protected void menu1_Click(object s, System.EventArgs e) { for( int i=0; i<1000; i++ ) { this.textBox1.AppendText(("Line:"+i+":ABCDEFG0123456789\n")); } あとは、.net studio の 出力そのままなんで・・・。
C#でOO4Oを使ってる人いますか? どうやって接続するの?
厨質ですみません。 VS.NETでボタンクリックのイベントを書いていたところ、 以下のようなパラメータヒントが出たんですが、void (.....) targetの部分の意味が よく分かりません。 ▲ 1/2 ▼ EventHandler.EventHander (void (object, System.EventArgs) target) どなたか、この構文がどういうものかを教えてくださいませ。。。
>>484 void Hoge(object, System.EventArgs) という形のメソッドに
イベントハンドラを割り当てるということ。
>>482 これがあなたのいう「速い」という速度で実現できる処理系があるとは
思えません。何なら「速い」んですか?何を使っても同じだと思いますけど。
>485 ありがとうございます。 じゃあ、あのパラメータヒントの意味するところは 「void (object, System.EventArgs)」という定義のメソッド「target」を 指定してねってことっすか。。。なるほど、意味が分かりました。
>>483 COMInteropを使って、oo4oのラッパを使えばいけるはず。試してないけど。
>>482 textBox1.Visible = false;
for( int i=0; i<1000; i++ ) {
this.textBox1.AppendText("Line:"+i+":ABCDEFG0123456789\n");
}
textBox1.Visible = true;
でやってみ。瞬間で終わるから。これから考察すると(以下略)
>>480 1Mのテキストって。。。もしかして秀丸とかのエディタと比べて「遅い」とか
言ってます?そら工夫の問題でんがな。。。
>>490 それなつかしいなぁ。RBでやってたよ・・(遠い目
493 :
デフォルトの名無しさん :02/04/04 01:04
あー、たしかに。激速い。 うーん。ということは、 遅いのは、windows.forms の画面処理だったのか。。 でも、この方法、ひとつ問題点があります。 「画面がちらつく!」 なんかいい方法ないですか?へこへこ。
BeginUpdate/EndUpdateはTextBoxにはないですねー。 WM_SETREDRAWってTEXTBOXには使えましたっけ。 知ってる人おしえてちょ。
System.Text.StringBuilder str = new System.Text.StringBuilder(); for( int i=0; i<1000; i++ ) { str.Append("Line:"+i+":ABCDEFG0123456789\n"); } textBox1.Text = str.ToString(); ま、ちらつかないし、(それほど)遅くもない。 (って、最初から書いてたのに無視されてたんだけど)
つーか、意図がまったく見えん。ログを拾うくらいならあの程度で十分だと思うが。 100行単位のログが瞬間的に発生して、しかも画面表示するシチュなんてそうざらにはないぞ。 これでも納得できなきゃListBox使え。一回ごとに再描画すれば似たようなもんだが、 for( int i=0; i<1000; i++ ) { this.listBox1.Items.Add("Line:"+i+":ABCDEFG0123456789"); } this.listBox1.SelectedIndex = this.listBox1.Items.Count-1; だけなら劇速。
SPY++
498 :
デフォルトの名無しさん :02/04/04 03:35
これは c# の質問というよりは Win32 の質問かもしれませんが、 WebClient() や WebRequest() などでHTMLデータを引っ張ってくる場合に、 ネットがつながっていなかったりしたときは、IEのキャッシュからとってくる、 という風にはできませんか?
>498 >これは c# の質問というよりは Win32 の質問かもしれませんが、 と言ってるのに WebClient() WebRequest とか言ってる時点で糞 将来的には Windows.Explorer が入るんじゃないかなぁー と夢想。
IE ハ うぃんどうずノ イチブ デース。 とりはずしては、イケマセーン
501 :
デフォルトの名無しさん :02/04/04 11:29
>>493 あんたいつまでドキュソ発言連発する気?Windows Formsの処理が遅いんじゃなくて
Windowsならなんでも同じなんだYO!
>>496 さんの言うとおり、こんなコード何に使う気なんだよ。っていうかもしかして
あんたDel厨が放った新たな刺客?いや、ちがうか。Delでも同じだもんな、こんなコード....。
Windows Formsのせいにしてる時点で、春厨だね、君。他の環境使ったことない証拠。
502 :
デフォルトの名無しさん :02/04/04 11:44
>「画面がちらつく!」 >なんかいい方法ないですか?へこへこ。 こういう場合、Delphiだと、 Visibleを操作する前に画面をビットマップに保存してビットマップを上に重ねておいてから 処理するという方法が使えます。 ただ、再描画の時にチラツカセナイ為に色々とあるので C#でどうやればいいかはまだ判らない
>>503 知ってるし 使ってるよ
C#は今仕事の合間に触ってみてる状態だからさ
それをどうコードにすれば判らないと書いてるじゃないか
Delphiの場合コントロールのDoubleBufferをTrueにしたら勝手にダブルバッファ式になるけど
それは、グラフィックコントロールの場合で Windowsコントロールの場合は少しテクニックが
必要なんだよ
>>493 Console に出力したくて App の Output みたいに使いたいって言うけど
すごーーーく行間を読めば .NET 的には
System.Trace.WriteLine();
VS.NET 持ってるなら役に立つんじゃない。
SDKだと不明。
これ以上書くときは、意図をはっきりしてくれ。
506 :
デフォルトの名無しさん :02/04/04 17:30
System.Environment.MachineName と System.Windows.Forms.SystemInformation.ComputerName の違いってなんだろう? 前者はNetBIOS名、後者はコンピュータ名という説明だけど・・・。
すみません、どこに>>していいのやらわかりませんが、たぶん読めば何に対する 内容かわかると思います。 TextBoxの描画が遅いという話ですが、次のようなTextBoxExを作れば、それだけで描画時間が 1/3くらいになりました。これが求められているものかどうかわかりませんが、 ダブルバッファリングの例にもなりますし、一応書いてみます。たったこれだけです。 public class TextBoxEx : TextBox { public TextBoxEx() { this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint,true); } } 役に立つかどうかわかりませんが、ご参考までに。 以上です、チーフ。
508 :
デフォルトの名無しさん :02/04/04 19:05
ファーイーストリサーチ社恐るべし。
ArrayList.BinarySearch メソッドについて質問です。 ArrayListの中にはstring文字列が格納されています。 BinarySearchで格納した文字列を検索したいのですが [1]のようなコードではうまくいきませんでした。 よろしくお願いします。 [1] ArrayList.BinarySearch( SearchString , new CaseInsensitiveComparer(new System.Globalization.CultureInfo("ja") ));
>>510 有難うございます。試してみましたが、
成功するものもありますが、失敗するものもあります。困りました。
>>511 もっと調べてみると、同じ文字列でも失敗したり成功したりします。
なんなんだろ・・・・
binary-searchって二分木探索するんじゃないのか?
>>513 そう思う。だから>509の前にArrayList.Sort()すればいいんじゃないかな?>509さん
>>513-514 二分探索はソートされてるのが前提でしたね・・
忘れてました。ソートしないと駄目なのでしょうね。
格納された順番が重要なのでArrayList使ってたのですが、
Hashtableと組み合わせるか、線形探索することにします。
お騒がせしまた。有難うございました。
C#で作った関数をVB6から使いたいのですが、できますか?COMオブジェクトにすれば いいらしいのですが、できればDeclare Functionで使いたいのですが。
518 :
デフォルトの名無しさん :02/04/06 02:55
519 :
デフォルトの名無しさん :02/04/06 02:59
C#でソフトを作るときはどんなモデルで作ればいいのでしょうか? MFCの時はドキュメントビューアーキテクチャなるものがあったので、 それにそってコードを書けばよかったのですが、C#ではどんな感じで コードを書くといいのでしょうか?MVC? サンプルになるコードとかあります?
>>519 ms-help://MS.VSCC/MS.MSDNVS.1041/cssample/html/vcsamScribbleSampleCSharpMDIDrawingApplication.htm
>>517 出来るって。
>>516 Google あたりで C# "COM interoperability" とかで調べれ。
>>517 はDeclare Functionのことを言ってるのでは?
>>520 ScribbleのC#版があったとは知りませんでした。
サンプルみたところ、やっぱりドキュメントビューアーキテクチャ
なんですね。GetDocumentじゃないところがC#な感じなのでしょうか。
ところで、どういったモデルでC#を組むかみたいた 説明ってヘルプに載ってるのでしょうか? MFCの時はさんざんドキュメントビューアーキテクチャ が解説されていましたが、C#ではそういったモデルの 解説が無いような気がするのですが、見落としてます?
>>524 MFCの頃と違って今はデザインパターンとかも概念として普及してるし、
もう説明不要なんじゃないかな。
ComboBoxって、マウスで普通に文字列を選択できませんね。 IEみたいな用途で使いたかったのですが、使いにくいですね。 なんとかなるものでしょうか?
>>517 ,521
COM相互運用は知っているのですが、Declare Functionで
関数呼び出しのほうが説明しやすいので。。。やっぱりできないんですね。
ありがとうございます。
>>527 FERC.NETエージェント1号が調べた結果、以下のことがわかった。
C#単独では無理だが、C#でメソッドを実装した後にILレベルで操作することで
実現できる。まず、通常通りにC#でメソッドを実装する。
class DLL { static int Add(int x, int y) { return (x + y) * z; } }
これをDLLにコンパイルする。
% csc.exe /t:library dll.cs
ILを取り出す。
% ildasm.exe dll.dll /out=dll.il
続きは追って報告する!
>>527 取り出したILの先頭のほうで、次の行を探す。
.corflags 0x00000001
これを次のように書き換える。
.corflags 0x00000002
さらに、この直下に次の2行を追加する。
.vtfixup [1] int32 fromunmanaged at D1
.data D1 = int32(0)
続けて、同じILの中でメソッドAddの中の次の行を探す。
// Code size nn (0xnn)
この直前に次の2行を追加する。
.vtentry 1 : 1
.export [1] as ExportedAdd
これで終了。保存して、ILAsmを行う。
% ilasm /dll dll.il /resource=dll.res
あとはVB6から次のように呼び出せる。
Private Declare Function Add Lib "dll.dll" Alias "ExportedAdd" (ByVal x As Long, ByVal y As Long) As Long
Private Sub Command1_Click()
Label1.Caption = Add(1, 2)
End Sub
COMにはtlbimpとtlbexpがあるのに、P/Invokeは片方向だけなのを不思議に
思ったことはないだろうか。このとおり、CLRには逆方向も存在するのだ!
以上です、チーフ。
グレープシティ(文化オリエント)のVB用コンポーネントを C#で動作確認されたかたはいますか? インプットマン、アクティブレポートとスプレッドあたりを希望します。 スプレッドは、DBに直接つながらなくていいや。
531 :
デフォルトの名無しさん :02/04/06 10:39
SDKだけの環境で、DLLやEXEにアイコンなどのリソースを組み込む方法はどこをみたら載っているのでしょうか? 自力でresxファイルを作って、resgen.exeでresourceファイルにして、csc.exeに指定するというところまでは分かったのですが、肝心のresxファイルを手軽に作る方法がいまいち分からないのです。
>>531 resxファイルを手軽に作る方法resxファイルを手軽に作る方法resxファイルを手軽に作る方法
前スレ101はresxじゃなかった。ごめん。 でも同じような方法でResXResourceWriter使えばいいのか。
535 :
デフォルトの名無しさん :02/04/06 13:40
C#関係のいいメーリングリストってどっかあるでしょうか?
自分で調べた報告 今売っているVBマガジン5月号の235Pに VBを前提とするOO4OをVB.NETでの使用例を発見。 VB.NETでいけるなら構文が違うだけのC#もOKのはず ほかにもC#での動作事例の情報を求む!! 共有したら便利だよ。
538 :
デフォルトの名無しさん :02/04/06 15:14
日本ではここが一番レベルが高いという罠
539 :
デフォルトの名無しさん :02/04/06 15:19
クールバーが。クールバーが。。。無い。。。。。。
>>539 ボタンの境界が分かりづらいので廃止されました。
当面は、旧技術ひきずってでも使わないと駄目ですね。 このスレッドの高度な話は分からないけど分かる範囲で 学んでゆきたい。
>>538 禿同。
C#系のコミュニティをみても、ここよりレベル高いとこは無い。
雑誌広告やネット上を見る限り現時点でC#対応のコンポーネントって見つからないね。
fjも廃れたし、世の中変わったなあ。
>>543 Delphi1の時は発表さてすぐに習作がパソコン通信とか覗いたらあったのにね
まさか C# のコンポーネントは実はDelphiのように簡単には作れない?
ActiveXコントロールなどのCOMは.NETじゃないから作れないみたいです。 しかし、.NETでコントロールは作れます。 やっと、フォームの派生が作れるようになったのはうれしい。
549 :
デフォルトの名無しさん :02/04/06 21:39
>>548 言語仕様の表面だけかじって終わりの予感。
550 :
デフォルトの名無しさん :02/04/06 21:40
Javaハッカーなんて自称する奴なんているのか はっきり言って有害だな
551 :
542じゃないけどさ :02/04/06 22:41
552 :
デフォルトの名無しさん :02/04/06 23:01
>>507 でFERCさんが紹介してくれたクラスを試すと、文字が大きく表示
されてしまうんですけど使い方がおかしいのでしょうか?
C# プログラマーズ リファレンス COM 相互運用性に関するチュートリアル ms-help://MS.VSCC/MS.MSDNVS.1041/csref/html/vcoricominteroptutorial.htm
554 :
デフォルトの名無しさん :02/04/06 23:37
Windowsフォームを使ってWM_PAINTのイベントハンドラをデリゲートに登録する 場合って InitializeComponent() の中で、多分次のようにすると思うのですが、 this.Paint += new PaintEventHandler (PaintHandler); InitializeComponent() には「コード エディタで修正しないでください」とコメ ントがついています。多分、直接編集せずに、VisualStudioを使って登録しろって ことだと思うのですが、VisualStudioでデリゲートにハンドラを登録するにはどう すればよいのでしょうか?
>>554 漏れは普通にいじってるが、、
でもそうゆうことしたいなら、コンストラクタでやってもいい。
WinXPのビジュアルスタイルに対応するにはどうしたらいいのでしょうか?
>>555 InitializeComponent() を直接いじってしまうということですか?
コンストラクタでもいいのですが、なんか、VisualStudioが生成した
ボタンのハンドラとかが InitializeComponent() に書かれているので
なんか方法があるかと思ったのですよ。
>>552 その後の追加調査の結果、この場合ダブルバッファリングは関係ないことがわかった。
SetStyleのパラメータのうち、本当に速度に影響しているのはこの設定だけだ。
public TextBoxEx() {
this.SetStyle(ControlStyles.UserPaint, true);
}
つまり、TextBoxBaseのデフォルトのWM_PAINTの処理をしないことで、処理速度が
向上していたのだ!たとえば、OnPaintをオーバーライドしてそこでフォントを
設定してDrawStringすることもできるだろうが、それだと結局デフォルトのTextBoxと
同じ程度の速度しか出なくなるので、意味がないだろう。
以上です、チーフ。中途半端な回答でスマソ。
559 :
デフォルトの名無しさん :02/04/07 00:45
>>556 マニフェストを書いて、リソースに突っ込む。コントロールのStyleプロパティを、
Systemにしておくのを忘れずに。
>>557 F4でプロパティウィンドウだして雷のアイコンクリックで
目的のイベントをダブルクリックするかメソッド名をいれる。
漏れが直接InitializeComponent() をいじる時は他のクラスに
イベントを渡したい時とかだけだけど。
でもInitializeComponent() ってどんどん項目増えて見通しが
悪いので、コンストラクタに手書きでやることが多いけどね。
そうゆう質問じゃなかったかな。スマソ。
TreeViewについての質問です。 あるフォームのインスタンス上のTreeViewのNodesを 新しく開くフォーム上のTreeViewに表示したいとおもっています。 そこで Form1 form = new Form1(); TreeNode[] arrays = new TreeNode[this.treeView1.Nodes.Count]; this.treeView1.Nodes.CopyTo(arrays , 0); form.treeView1.Nodes.AddRange( arrays ); form.Show(); とやってみたのですが 「複数の場所にアイテム 'hoge' を追加または挿入することはできません。 最初に現在の場所から削除するか、複製を作成しなければなりません。」 と例外が表示されてしまいます。 コピーされたTreeNodeの内容を調べてみるとTreeViewプロパティに現在の TreeViewのインスタンスを設定されているようです。これが原因でしょうか、、 どうしたらいいでしょう、、TreeViewプロパティはgetだけだし、、
>>561 複製はTreeNode.Clone()で。
>>562 一つずつCloneしないといけないの?
既に試してたんだけどコピーしたTreeNodeコレクションをクローンしても
駄目でした。やっぱり一個ずつクローンか、、
>>563 最上位のノードだけでいいよ。子ノードは再帰で複製されるから。
>>564 ありがとうございます。うまく行きました。
Form1 form = new Form1();
TreeNode temp = (TreeNode)this.treeView1.Nodes[0].Clone();
form.treeView1.Nodes.Add( temp );
form.Show();
566 :
デフォルトの名無しさん :02/04/07 21:27
567 :
デフォルトの名無しさん :02/04/07 22:11
.NET FRAMEWORKでレジストリに相当するものは何でしょうか? アプリの設定覚えさせるのにレジストリを今までみたいに使っていいものか悩んでます。
>>567 (exe名).configというXMLファイル
>>568 ありがとうございます。
System.Configurationの中のどれかのクラスを使うんですよね。
しかし、その先がさっぱりわからない。うーん。
ConfigurationSettings
571 :
デフォルトの名無しさん :02/04/07 23:41
今からはじめるなら、 Java と C# どちらが面白いですか? それから C# の開発環境は無料ですか。
574 :
デフォルトの名無しさん :02/04/08 00:14
>571 認知してくれ
もしかして、.Configの作成はSystem.Xmlでやるの?
手で。
578 :
デフォルトの名無しさん :02/04/08 12:44
C#初心者。けどうんこCOMと違い開発しやすそうなのでとってもお気に入り。 ただテンプレート使いだった自分にとってはgenericをどうするのかが疑問なのですが... 一般的意見をきぼん
>>578 ないものはないのでobjectに代入&復元
っつうかCOMがわかっていない時点でTemplateなんか使いこなせないに決まってる。
Templateってじきにつかえるようになるんだったね。C#でも。
>579 Templateはコンテナだけではない
ヴァカには決め付けが一番。一番が一番。 もっと決め付けてやろう。Googleで「C# generics」で検索することすら 思いつかないやつにはgenericsなんか使いこなせない。
>>584 いわれてみればやってなかった...
かたじけない。
なんかC#って遅くない?
>>587 君の使っているDelphiのほうが速いと思う。
Del房ウザイ。
昔々の話だがCコンパイラなんて 遅くてでかくて使い物にならんとか 言ってた時代があったよ。
NameValueCollection nvc; nvc = System.Configuration.ConfigurationSettings.AppSettings; nvc.Add("aaa","bbb"); というコードでは読み取り専用ですというエラーになるんだけど、 動的に書き換えることはできないのですかね?
593 :
デフォルトの名無しさん :02/04/09 12:45
Windowsにsscliを入れたんですけど、VS.NETが入ってるせいで プログラムが.NETのCLRで動いてしまいます。 Shared Source版のCLRで動かすにはどうすればいいでしょうか。
594 :
デフォルトの名無しさん :02/04/09 12:48
>>593 clixを使わないと動かないよ。ドキュメント読みなよ。
>>595 clix.exeで動きました。ありがとうございます。
これからドキュメントじっくり読みます・・・。
597 :
デフォルトの名無しさん :02/04/09 18:30
ところでRotorはどのモードでコンパイルしてる? やっぱりfastchecked?
sscli\samples\corclass のソースを見てみると、いまだに「COM+ Runtime」という言い方してるね。 けっこう昔からあるソースなのかな?
600 :
デフォルトの名無しさん :02/04/09 21:54
>>601 じゃあなんて呼ぶのが一般的なの?
SSCLI?
604 :
デフォルトの名無しさん :02/04/09 23:29
private ArrayList hogeList = new ArrayList(); hogeList.Add(new Hoge(0)); hogeList.Add(new Hoge(1)); hogeList.Add(new Hoge(2)); ってした場合に hogeList[0].page(); っていうような感じでメソッドの呼び出しができないのですが、 なんででしょうか? Hoge n = (Hoge)hogeList[0]; n.page(); っていう具合にするとメソッドを呼べるのですが、、、
あほですか?
>>605 すいません。
よく分からないので教えてください。
キャストしなさい
>>607 キャストするっていうことは
>>604 に書いた
とおり、
Hoge n = (Hoge)hogeList[0];
n.page();
っていう処理をすることですよね。
なんていうか、一々変数に代入しないとメソッドを呼べない
のでしょうか。。。
(Hoge)hogeList[0].page();
っていう感じでも試してみたのですが、ダメみたいです。
>>609 ((hoge)hogeList[0]).page();
(hoge)hogeList[0].page(); だと,hogeList[0].page() の結果を hoge にキャストすることになる。
だから一部の人が騒いでいるみたいに C#にもgenericが欲スイーと... タイプセーフなIListやICollection実装する 暮らす書きなさいっつー事ですにゃ。
hogeをよく使うんなら sealed class HogeList : ArrayList { new public Hoge this[int i] { get { return (Hoge)base[i]; } } } っていうの作っとけ。
C#って何で引数の省略なくなっちゃったの? C++で10個ある引数全部省略可能なメソッド使ってるけど、 これC#にもってったら同名のメソッドが10個も出来ちゃうよ(´Д`; 個人的には最後だけじゃなくて途中の引数も省略できるようにしてもらえたらうれしかったのに、まさかぜんぜん省略できなくなるなんて(´Д`;
C#は、故意か否かにかかわらず、バグの原因となる要因を排除している。 その顕著な例が new & override であり、機械語的にはまったく意味のないものである。 そういう観点で考えると、引数の省略は関数の仕様変更に対し非常に脆弱である。 またほとんどの場合、省略は null で代用可能であることも忘れてはならない。 故に、そのような見つけにくいバグを一個生むより、10個のラップ関数を書かせるのだろう。
C++のは途中の引数省略できないから中途半端なんだよなあ
>>616 ところがそのメソッドがコンストラクタだったりするんだけど(ラップ出来ない);´Д`)
初期化専用のメソッド別に作らなきゃだめ?
>617 そうそう、しかもその途中の引数のデフォルト値が ネームスペース::長めのクラス名::enum値 とかだったりして、次のintの5を書くためだけにこれを書かなきゃいけなかったり。
620 :
デフォルトの名無しさん :02/04/10 01:50
質問なのですが、C#ってJITコンパイラですよね? JITの場合って実行時にコンパイルされるから、 起動が遅いだけで、その後の実行自体は普通のexe と変わらないような気がするのですが、何で、普通の exeより明らかに遅いのでしょうか? あと、javaについても同じ疑問を持っているのですが、 どうなんでしょ?
621 :
デフォルトの名無しさん :02/04/10 03:22
>>613 > C#って何で引数の省略なくなっちゃったの?
prams 修飾子で代用できないの?
>620 コンピューターサイエンスの歴史を紐解けば言語は常に更なるリソースを 必要とするようにしか進化しません。
引数の省略とparamsパラメータは両立出来ねーからじゃねーの。
>>620 やぱ、メモリを管理してる分遅くなるんじゃない?
>>620 VM。
つか、VB6の方が遅いって思わない?
>>620 君の使ってるDelphiのほうがずっと速いと思うよ。
>>601-602 MSのShared Source CLI Implementationのことでしたか。
情報ありがとうございました。
約半年間絵ばかり描いていたら、VB忘れてしまった。
もうとっくにご存知でしょうが、 Windows Updateで.NET Framework 再頒布パッケージが 落とせるようになったみたいですね。 うちはSDK入れてあるので表示されませんでしたが。 これからソフト続々出てくるかな?
貧乏学生な漏れは19日のアカデミック版を待ってるYO...
お前ら!!レスが少ないです。C#はあんまり人気ないの? つーか、実際いろいろ作ってみてどうよ? 正直な感想を教えてくれYo!!
632 :
デフォルトの名無しさん :02/04/11 00:10
>>618 class A
{
public int x;
public A() : this(0){}
public A(int x)
{
this.x=x;
}
}
>>631 レス少ないって言うけど、C++相談スレ程度にはレス付くようになってきたし。
漏れ、テクニカルプレビューのころから使ってみてるけど、いい言語だと思うよ。
こんなにいい言語なのに作ったのがMicrosoftだってだけで迫害受けてるのが居た堪れない。
まあ、作ったのがSUNだったがために発展の機会を失った言語よりはましだけど。
>>631 正直な感想。
Beta2以降新しい発見が少なくなって飽きてきた。
>>634 だねー。MC++に漬かってみようかしら。
MC++はそもそもやる気にもなら無い。
かといって、MFC・ATL7は興味のかけらもないし。 難しい時期だなー。
VS.NET買ってCOM開発に励むのはある意味勇者だよな
>>639 そうそう、一時期喪失感にとらわれたけど、
今は久しぶりにC++を生でじっくり味わってるよ。
VB.NETやる!って人は見かけないな・・・
CLIのソース見てて思ったけど、C++ってもう基盤構築の裏方的な使われ方しかないのかな。
VC++NET=裏方職人さんの道具箱
>>643 例外処理とかRTTIとか、C++の高度な機能も空しいね・・・
C#なぞ裏でも表でも使われてないが?
あの腐った参照じゃなんもできんだろ>C++
1)まず、C#を滅ぼす 2)次にJAVAを滅ぼす 3)そしてC、C++の理想を実現させる。
ついでにC++も滅ぼす。 気が付くとそこはサルの惑星であった
C99の次の規格C2005(仮)はC++を反面教師として C#/JavaをベースにしたOO支援機能が実装されます。
言語オタに占拠されてしまったかこのスレも・・・
CLIでC/C++のソースって見てる? 漏れは.csしか見てないけど。
TextBoxの文字の中段揃えとか下端揃え とかってどうやったらいいんですかね? やっぱりAPI使わんと無理?
655 :
デフォルトの名無しさん :02/04/11 05:53
>>654 C#てよくしらんけど、
TextBox自体にそういう機能ないんでないか?
なんぞリッチエディットとか使うんでないのん?
あ、ごめんねアゲチャタ。まずかったかえ?
657 :
デフォルトの名無しさん :02/04/11 06:00
CはCobalt Bomb(コバルト爆弾)の略です。 テストにでますよ。
658 :
デフォルトの名無しさん :02/04/11 06:30
CASLはどこですか?
プロージット! ハンガリアン記法最後の年に――!(´ー`)_Y ms-help://MS.VSCC/MS.MSDNVS.1041/vsent7/html/vxconcodingtechniques.htm >オブジェクト指向言語の場合、クラス プロパティの名前にクラス名を含めると冗長になります。たとえば、Book.BookTitle などは避けます。代わりに、Book.Title とします。 >省略形の使用は最小限に抑えます。 その他諸々、いろいろとMSらしくないことが書いてありまんなあ(w
おい、Dr ADO.NET。 いちいちスレ立てんじゃねーよ!
>>660 はげどー!ウザイ!削除依頼スレはないのか!
いつの間にかヲチスレと化してるな(w
664 :
デフォルトの名無しさん :02/04/11 15:26
すんません。 今、独自のコントロールをControlからの派生で作ってんだけど・・・。 TextBoxみたく、Fontの大きさだけで高さを変化させて、 デザイン時は高さをいじれないようにしたいんだけど、 どうすればいい? とりあえず、Height プロパティをオーバーライドして setできなくしちゃうことを考えたけどこいつはVirtual じゃないのでoverrideできないし。 SetStyleでControlStyles.FixedHeightしても無駄だった。 TextBoxもNumericUpDownもできるのだから、 なんか手はあると思うんだけど、あとどの辺を調べればいいっすかね? 誰かヒントおせ〜て。
C#でDirectXは使えるのか?
namapespace を日本語に変えたらいきなり下記のようなコンパイルエラー 初めてみたよ。今まで、日本語でも問題なかったし、同じネームスペース名 でも全然平気だったのに、、 --------------------------------------------------------------- 内部コンパイラ エラー : ステージ 'BEGIN' 内部コンパイル エラー (0xc0000005 at address 531550F0) : 原因として 'BEGIN' が考えられます。 コンパイラで内部エラーが発生しました。この問題を回避するには、下記に挙げた場所に近いプログラムを簡略化するか変更するかを試みてください。一覧の上部の場所ほどインターネット エラーが起こった地点に近くなります。 ----------------------------------------------------------------- 下記のって、、、ないんだけど(ワラ 日本語ネームスペースはテスト用に 「テスト」って一時的に使ってるだけで、いいんだけどさ、、なんなんだろう。
粘着だな。(´ー`)y-~~
独自のデータプロバイダを作成してるんですが、 どこかに詳細な仕様か参考になるドキュマントはないですか?
>>642 >VB.NETやる!って人は見かけないな・・・
やってるよん。SDKで。(近所でVS.NET売ってるの見かけないから)
C#はやってないけど、C#系の情報の方が多いから、
そっちで情報集めてVB.NETに転用してる。
672 :
デフォルトの名無しさん :02/04/12 01:06
>>642 おいらもやってるよん。確かに、情報が少ないのには困ってる
確かにVS.NETの箱って見かけないよね。実際に見かけた人いますか?
なぜかアカデミックの箱見かけた。中は空だったけど。
.NETのリファクタリングツールなんてあります?
676 :
デフォルトの名無しさん :02/04/12 02:49
C#でスレッドプログラミングをやろうと思うのですが、 なんかいいサンプル or 解説は無いでしょうか?
>>676 もし時間があるのなら、delegateを調べることをお勧めします。ハァ?といわずに
だまされたと思って。
葛西秋雄不買運動起こすか。
objectは本当にDel厨だったようだな。(w
こいつ相手を選ばないというか、かなりいい度胸してるよな。 この前スレで以前♯さんにけんか売ってたやつも実はobjectか?
682 :
デフォルトの名無しさん :02/04/12 17:39
683 :
デフォルトの名無しさん :02/04/12 19:20
GDI+ではbitmapやjpegなどのフォーマットをサポートしていますが、 新たなフォーマットを自作・追加したいのですが、どうすればいいでしょうか? あと、とりあえず自分フォーマットの画を表示したいんですがメモリー上にbitmap形式の データに変更してファイルに落とさずに表示することは可能でしょうか?
685 :
デフォルトの名無しさん :02/04/12 20:37
>> 683 未確認だけど Bitmap.LockBits().Scan0 あたりが使えないかなぁ・・。同サイズのBitmapオブジェクトを作成して、自分フォーマットの画像をbitmapデータに変換し、Scan0で得られるポインタにデータを流し込む。 1点ずつのBitmap.SetPixel()はいやだしねぇ・・・。
686 :
デフォルトの名無しさん :02/04/12 23:16
>>686 「MS abandons .NET My Services」
このサイト信用できるん?
前からこの企画だけはやばいと思っていたし。
>>687 いろいろ報じられてるからね。TechEdで発表したみたいだし。生き残ってるのは
PassportとAlertだけ。
DotGNUのアンチ連中もこれで解散か?(禿藁
>>686 機能と運用モデルを見直すだけで、別にやめるわけじゃないよん。
本家/.じゃお祭り騒ぎになってたけど。(藁
692 :
デフォルトの名無しさん :02/04/13 01:16
予算の都合でC#のみ購入しようと思っています。 Borland製品のPersonal版のように、商用不可とか、 VC++Standardのように要ランタイムなどの制限はあるんですか?
693 :
デフォルトの名無しさん :02/04/13 01:31
>>659 >プロージット! ハンガリアン記法最後の年に――!(´ー`)_Y
静的フィールドの命名法のところにまだ残っている。
>・静的フィールド名には、ハンガリー表記法を使用したプリフィックスを付けます。
誤訳か!?と思ったけど、MS-USには、
>Use a Hungarian notation prefix on static field names.
とあるので、誤訳ではないらしい。
なんで、ここだけハンガリアン使え!なんだろうか?
VS.NET beta2の頃のネーミングガイドラインには、
>・Do not prefix static field names Hungarian type notation.
とあったのになぁ・・・・。
なんでだろう?
あといくつ寝たらVisual C#発売かな・・・ 楽しみだな・・・ WindowsUpdateの.NET Framework追加 歓迎アゲ ちなみにこんな感じ(みなさんには見えないでせう) 日本語版と二種類表示されるようです。 日本語版のがちょっとサイズでかいです。 ######################################## Microsoft .NET Framework 21312 KB/ ダウンロード所要時間: 4 分 .NET Framework は、Windows の新しい機能です。 .NET Framework を使用して作成したアプリケーションは、 信頼性と安全性がより高くなります。 .NET Framework は、.NET Framework が 必要なソフトウェアを使用する場合にのみ、 インストールする必要があります。 ######################################### Microsoft .NET Framework 日本語版 22170 KB <以下まったく同文> #########################################
サゲチャタアゲ
.NET Framework もWindowsUpdateで配布が開始されたことだし、 誰か、早くソフト公開しれ!!
698 :
デフォルトの名無しさん :02/04/13 06:06
Groove.netに美味しいところを持っていかれそうだな。 早くしないとまたWindowsアプリと同じことになりそうw。 Win32APIアプリよりも開発は猛スピードで進んでるだろうから これはもう手遅れか?!
ミンナハヤオキダーネ
.netアプリもいいがsscliを弄る方が楽しいというワナ
701 :
デフォルトの名無しさん :02/04/13 09:38
c#でPERLみたいな正規表現ってつかえるのか?
>>701 System.Text.RegularExpressions
>>703 吉松さんってすごい活躍してるね。ヽ(´ー`)ノ
国内外問わず、いろんなコミュニティで見かけるね。
ドキュメントのリンク、新しいタブで開けないのがあるのを何とかしてほしぃ。
706 :
デフォルトの名無しさん :02/04/13 19:10
で、誰かgoogleで遊んでみた?
>>706 自分の好きな言語で開発できるなんて.NETだけですね!
とか煽ってみる。
perlでなら(w つーかレスポンスをパージングしないといけないんですけど・・・
>>706 ソース見て、サンプル動かして、API見たがそこまで。
何もアイデアが浮かばなかった。
プログラム組むときのデザインパターンって みんなどうしてる?
>>711 そんな意識してやるものじゃないでしょ。無意識のうちに適用してるよ。
とかっこつけてみるテスト
713 :
デフォルトの名無しさん :02/04/14 12:23
>>712 >>711 はGoFのことじゃなくて、一般的な意味でのパターンだと思われ。
でも、イディオム持つほど数をこなしてる人っているのかな・・・。
まぁ、そうですね。一般的っていうか、普通のWindowフォーム アプリケーションを作るときって、やっぱりドキュメントビュー アーキテクチャーでやってるのでしょうか? それとも、一個のビューの中にごちゃごちゃデータもいれちゃうとか、 (いわゆるダイアログタイプのやつ)いろいろパターンはあると思うの ですが、どうよ?
>>714 データクラスを分けて、データクラスに照りゲート || イベントを持たせて
Observerもどきかな。
>>711 規模と再利用の可能性によるなあ。
やっつけ仕事なら、VBみたく全部一つのクラスに叩き込んでテストしておしまい。
2度目以降のリクエストがあって初めて考えるみたいな。
複数のドキュメント相当のクラスがあったりすると
ややこしいから改めて設計っぽいことをやる、ぐらいかと。
DBが絡めばいやでもDataSetを分けるしかないか。
\|/
/⌒ヽ、 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ゜Θ゜)<
>>717 そうでもないよ。
| ∵ つ \___________
| ∵ |
\__/
検索のみで速度重視なら、DataReaderを直接使ってしまうのもアリかと。
>>718 WinフォームでDataReaderはありえなーい。
>>716 でも、実際の話、部品化はフレームワークで提供されている
クラスだけで、結構十分って感じしないですか?
特に.NET Frameworkで提供されているクラス群は、以前の
MFCなんかの時と違って、結構かゆい所に手が届くって感じのが
多いような気がします。
僕の場合サンデープログラマなので、よほど汎用的なもの、
例えば、文字コードの変換とか、HTTP通信系の自作クラス以外は
今まで、あんまり、再利用したいと思ったことはないです。
最も、業務でやっている人は部品化は必須なのかもしれないですが、、、
>>719 BindingのDataSourceに絡まないから、ということ?
722 :
デフォルトの名無しさん :02/04/14 13:01
デリゲートとイベントを使った場合っていうのは、普通の関数呼び出し じゃない、いわゆるWindowsのイベント処理と同じなのでしょうか? 昔でいうところのPostMessageとかSendMessageみたいなものの 違いとかはないのでしょうか?
724 :
デフォルトの名無しさん :02/04/14 13:18
>>723 じゃ、PostMessageみたいに、とりあえずメッセージキューに入れておいて
後で実行してね、っていうような処理はどうかけばいいのさ。
>>714 設定変更なんかは、Observerでプロパティのsetにイベント発行させたり、
色々と面白いことできるね。シングルトンなんかもプロパティでできちゃうし。
727 :
デフォルトの名無しさん :02/04/14 14:25
スレ違いかもしれませんが、 ここのPart2のログを見たいのですがなかなか html化してくれません。 いつになったら見れますか?
>>727 テキスト形式のでよいなら、私がメールに添付して送ってもいいよ。
フリメでも晒してくれれば送るけど。
>>724-725 InvokeじゃブロックされちゃうからBeginInvokeのほうがいいんじゃない?
>>721 っていうか、WinFormでデータを扱うときに、ストリームが必要な場合って
まずない。がばちょとデータを取ってきて、思考時間中は接続解放すべき
だと思って。
731 :
デフォルトの名無しさん :02/04/14 15:21
VS.NET上でコントロールをフォームに貼り付けると、 素のまま張られちゃうじゃないですか、んで、そうじゃ なくてて、あるコントロールから派生したコントロールを 貼り付けたいのですが、どうすればいいのでしょうか? 自分でコード書いちゃえば早いのはわかるのですが、 VS.NETのオペレーションとしてはどうやるかが知りたいのです。 よろしくおながいします。
>>731 System.ComponentModel 名前空間
734 :
デフォルトの名無しさん :02/04/14 15:35
>>732 名前空間がどうこうという話ではなくて、VS.NETのオペレーションの
話なのですが、、、
ようは、フォームのデザイン画面で貼り付けたコントロールの派生クラス
をその場で作成して、いろいろいじくる方法は無いかという話です。
735 :
デフォルトの名無しさん :02/04/14 15:40
>>731 その場合って、一回ライブラリというかコンポーネントというか、
なんかそんなやつを作らなきゃだめですよね。
そういうんじゃなくて、今回のプロジェクトに限り、ちょっとした
機能を追加したいのですよ。例えていうなら
>>507 ぐらいの変更を
したコントロールの派生クラスを使いたいのですが、、、
>>735 コードを書くしかないね。でなかったらいったんビルドしてコンポーネントタブに
追加する以外にない。コードを書くったって、宣言とnewを変えるだけだしね。
>>735 InitializeComponent()の中身を書き換えるとか。まあ不具合はのらりくらりと。
>>736 その通りなのですが、newの部分が↓みたいな感じなのですよ。
#region Windows Form Designer generated code
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.treeView1 = new System.Windows.Forms.TreeView();
}
変更するなってことはVS.NETからなんらかの編集手段があるかと思った
分けです。。。
ここを手作業で編集しちゃうとなんか後々まずいのでしょうか?
つーか、これぐらいできないんじゃ、VS.NETはダメダメじゃん。 って感じなんですけど。。。。
>>739 プログラム的には問題無いと思うのですが、VS.NET的には
どうなんでしょうか?
後から、デザイン画面で新しいコントロールの貼り付け作業が
できなくなっちゃうとか、ソリューションエクスプローラや
クラスビューで情報が表示できないとか、、、そんなことは
無いのでしょうか?
確か、以前のVS6の時はVSが書いたところ編集しちゃうと、
いろいろ問題があったんですよねぇ、、、
>>741 問題あるよ。勝手に書き直されたりするし。
>>741 やってみればいいじゃん・・・。
デザイン画面で新しいコントロールの貼り付け作業もできるし、
ソリューションエクスプローラやクラスビューで情報が表示できる。
あと何が心配?ん?
>>742 やっぱりそんなこともあるんですか。。。
>>743 じゃ、なんでわざわざ「コード エディタで変更しないでください。」
なんて書いてあるのでしょうか。
うーん、どっちなんだろ。
745 :
デフォルトの名無しさん :02/04/14 16:01
>>738 単純にコンストラクタ内でInitializeComponent呼び出しした直後に
やったらあかん理由があるってこと?
そこをいじるとデザイナなどでいじったときに更新がかかって、
せっかく書いたコードが消え失せたりするんじゃなかったっけ。
>>744 743に一票。
わしは困ったことない。全然。ただ自分がいじったコードが
どこに行ったかわからなくだけ(w
イベントハンドラとかの追加とか普通にいじるだろ普通。
ただ消しちゃいけないを消すなよ、ってことでしょ。
>>745 コンストラクタでやった場合、InitializeComponent内のnewが
無駄になるじゃないですが、かといって、InitializeComponent内
のnewの部分を消してしまうと、結局編集してしまったことになって
しまうし、、、デザイナ上からも一回消せば、InitializeComponent
的には問題無いのでしょうけど、それではVisual的な編集ができないです。
> せっかく書いたコードが消え失せたりするんじゃなかったっけ。
大問題じゃないですか、、、
748 :
デフォルトの名無しさん :02/04/14 16:08
Windows.Forms.Splitter の挙動が分からないので教えてください。 ドキュメントに、左右で並べるときは a.Dock = DockType.Left; b.Dock = DockType.Left; // <-- Splitter c.Dock = DockType.Fill; this.Controls.AddRange(new Control[] { a, b, c,}); って書いてあったんだけど、左右に置く物によって挙動が変わってしまうんです。 たとえば 左 TreeView 右 ListView 正常 左 Button 右 Button 正常 左 Button 右 PropertyGrid PropertyGrid が左に食い込む 左 Button 右 TextBox TextBox が左に食い込む こんな結果です。 TextBox・PropertyGrid が悪さをしてるようなんですが なんでこうなるんですか?
>>746 イベントハンドラの時はプロパティの上にあるイナズママークを使って
イベントを追加すればInitializeComponent内にも自動で追加されると
思いますが、、、
こうした派生コントロールの追加の方法が無いっていうのもおかしな
話なので、ホントは何か方法があるのではないかと勘ぐっているのですが、、、
だって、こうした作業ってかなり頻繁に行いますよね?
>>748 this.Controls.AddRangeの中の、コントロールを追加する順番を変えてみてはどう?
DockTypeではなく、DockStyleでした。スマソ
>>749 だーかーら、dll化してツールボックスに追加するんだってば。
一週間ほど前に入った新人を相手にしてるような感じだな。 笑える。
>>749 >イベントハンドラの時はプロパティの上にあるイナズママークを使って
それで出来ない時いじるんだけどね。もちろん、、、
755 :
デフォルトの名無しさん :02/04/14 16:17
普通に考えてカスタムコントロールのように見た目が変わるものもあるわけで、 ソースの状態で動けってのは無茶だろうに。 そりゃVBはデバッグ中もソース編集すれば動くけどさ。
>>752 やはりそうなのでしょうか。
>>753 そんな変な質問でした?
>>754 じゃ、僕も、とりあえずはInitializeComponentの中を直接いじってみます。
>750 うっ、うまくいきました。ありがとうございます。 けど何でなんですか? 仕組みが理解できない・・・・。 うえーん、Microsoftは、今までと違ってどういう順番で追加しても ちゃんと処理するよって言ってたのに。
>>758 よくわかんないけど、windes使ってたときからこういう挙動だった。
>>761 助かりました。
ありがとうございます。
763 :
デフォルトの名無しさん :02/04/14 17:41
>>748 Anchorプロパティでなんとかならんだろうか。
厳密に指定してやってなんとかなった。
(漏れはSDKを使用してる。VS.NET持ってない。)
VS.NETベータ2のときは、コントロールを選んで、最前面に移動とか、
最背面に移動とか、そういう指定でうまくいったりいかなかったりだった。
>>744 > じゃ、なんでわざわざ「コード エディタで変更しないでください。」
> なんて書いてあるのでしょうか。
InitializeComponentまわりとフォームデザイナの間はCodeDOM Treeの形で
保存されるんだけど、そのDOM Parserが限られた形式しか理解できないから。
DOM Treeで表現できない形式を書かれると、デザイナの表示エラーが起きたり、
コードの再生成時に自前のコードが消え去ったりと不具合が起きるから、
デフォルトは「ここは触らないでちょ」としてるんだと思われ。
逆にパースできる形式なら大きな問題はないんだけど、
じゃあ「どういう形式ならOKなの?」というのがあまりはっきりしない。
このへんの2-Wayぶり(?)はこれだけのコードで実験できるのでお試しあれ。
class Form1 : System.Windows.Forms.Form
{
private void InitializeComponent()
}
}
CodeDOM Parserに関しては、Microsoft.VisualStudio.dllで遊べたら
面白そうなんだけど、残念ながらほとんどのクラスがinternal...。
>>764 × private void InitializeComponent()
○ private void InitializeComponent() {
766 :
デフォルトの名無しさん :02/04/14 22:33
ちょっとぐらい大丈夫だろう、ぐへへへへ・・・・と書き換えて元に戻せなくなったYO!
くそ、みんないいな あといくつ寝たらC#発売なんだ もう寝飽きたゾ。
768 :
kuromo :02/04/15 01:02
ちょっと怠けすぎた。 今日から頑張ってプログラミングしよう! まずはC#の新規プログラムを作ろう。
770 :
デフォルトの名無しさん :02/04/15 01:29
正式名称Application Desktop Toolbarの作り方を教えてください。 できれば、RADのデザイナーで作れると楽なのですが。
ReBarとか、ダイアログバーってどうやって作るのでしょうか? 何か、ツールバーコントロールしかないような気がするんですが。 気のせい?
つかぬことをお伺いしますが・・・C言語をマスター(今の俺じゃ、口にするのも おこがましいですが)すれば職は見つかりますでしょうか?
773 :
デフォルトの名無しさん :02/04/15 14:13
>>772 無理だね。プログラムだけなら猫でも出来る。プログラム+αが必要なのだよ。今の時代は。
んー、いくらでも見つかるんじゃない? でも、あまり人間らしい扱いを期待しちゃ駄目だよ。
SDK DL中…ISDNだからつらいよ。 始めて1時間。現在20MB。
>>775 一括ダウソは途中で切れることがあるから分割の方がいいよ。
>>776 FlashGetで落としてるから心配ないと思います。
さすがにIEで落とすのは無謀でしょう(w
>775 FlashGet使ってるなら、なおさら分割のほうが良くないか?
QueryInterface(REFIID iid,void** ppvObject) のように、void*で結果を返しそれをキャストしたい場合、 どうすればいいんでしょうか?
781 :
デフォルトの名無しさん :02/04/16 11:29
782 :
お役立ちサイトです。 :02/04/16 11:30
>>660 >>679 すいません、マジでDr ADO.NETを絞めてやってください。
こいつウザすぎる。
>>783 しばらく見てなかったら、すごいことになってるな。(w
F5攻撃かけてやれ。
>>783 スレ立ても問題だが、質問・ツッコミ総シカトはもっと問題だ。
>>784 いや、それがニュースになって「ASP.NETは落ちる」って評判になると
俺の仕事が困るから勘弁してくれ(w
>>781 駄目でした。
引数の型が IntPtr になるようです。
>>787 Marshal.PtrToStructureかなぁ?
789 :
デフォルトの名無しさん :02/04/16 20:31
SDKのコンパイラは最適化コンパイルできるの?
>>788 値型の場合はそれを使えばよさそうですが、
インターフェースの場合は駄目でした。
で結局、
Marshal.GetObjectForIUnknown()
でOKでした。
ありがとうございました。
すみません。 C#からズレてるかもしれませんが、ASPからASP.NETへの移行についてなんですが、 何かいいドキュメントとか説明してるサイトないでしょうか? それともASPからASP.NETへ移行するというよりも、 既存のASP資産を生かすって方向の方がいいんでしょうか? よろしくお願いします。
792 :
デフォルトの名無しさん :02/04/17 03:00
>>759 >>763 亀レスすいません。
僕も、VS.NET 持ってないので SDKです。
3ペインなどいろいろ試してみた結果、
どうやら DockStyle.Fill から 追加していけば正常な画面になるようです。
GUIは、簡単になったから SDKでも十分だと思っていたんですけど
VS.NET なら考慮してくれるんでしょうかね?
SharpDevelop で動的に変化する時はどうやってるか
見たら全然分からなかった・・鬱死
794 :
kuromo :02/04/17 04:52
>>792 そういう間違った設定をするのがいかんのでは、と書いてみよう。
>>794 できる時点で問題。
明示的なキャストも何も必要無く、他のところ(フォントスタイルとか)で当たり前にやっているのと同じようにできてしまう。
一方でintからbyteへの代入で暗黙に変換できないとか、outやrefなど助長な制限をつけてまでバグが起こらないような文法にしているくせに、これでは矛盾しているよ。
796 :
kuromo :02/04/17 05:21
>>795 なこといってもなあ。
「バグは、できる時点で問題」って言ってるように聞こえるのだが。
enum値の捉え方の問題では?
>>795 > enum値の捉え方の問題では?
かもしれんが、じゃぁenumのメリットは?
現状じゃstatic const intとなんらのかわりもないのでは?
798 :
デフォルトの名無しさん :02/04/17 05:44
>>797 SDKのEnumクラスのHelpを見てみれば?
いろんなメソッドが定義されてるよ。
結構便利に思えるが。
追加 > 「バグは、できる時点で問題」って言ってるように聞こえるのだが。 もしint*をchar*に暗黙に変換できたら、そりゃ言語がおかしいと思わない? enum値の演算結果をまたenum値にキャスト無しで代入できるのは、そうすることが期待されるところでは便利だけど、そうでないところ(たとえば792のリンク先)では上のポインタの例と同じくらい危険なことだよ。
800 :
デフォルトの名無しさん :02/04/17 06:00
いまからC++始めるのは時代遅れですか? C#とC++の用途は違いますか?
俺もenumを暗黙で変換とかビット演算できない方がいいなぁ。 確かに気をつければいい話だけどさ、気に入らないといえば気に入らない。
>>800 時代遅れなんてことは無いと思うよ。
C#はVBと同じようなお手軽開発言語として、
出来て損は無いけど、それだけって感じ。
C++はプログラマのたしなみとしてやっとくべき。
>>802 レスありがとうございます。
C++でがんばります。
804 :
kuromo :02/04/17 07:46
>>797 基本的には、型チェックと、値の集合を明示的に規定できることだろうけど。
・・というか、調べてみたら・・・
列挙体に、[Flags](FlagsAttribute)の付いてるのと付いてないのがある。
付いているのには、
「この列挙体には、メンバ値をビットごとに演算するための FlagsAttribute 属性が含まれています」
などと書かれている。
その割に、[Flags]がついてないenumもビット演算はできる。??
そういう属性が最初から規定されてるのなら、区別があったほうが
よかったのではないかな。まあ、orするものじゃないとプログラマは区別できて、
いいことはいいんだけどね。
>>799 しかし、そのへん言い出したらキリないだろうよ。
D言語かな?Assertの進化したようなのつけても、やはりバグは防げない。
柔軟性とか、簡易さとか、レガシーとか、何か事情があるのよ、多分。
オレは知らないけど。
魔法のiらんどでつくったHP不正に改ざんされてパスワード変えられた。誰か不正アクセスの仕方とか教えてください。お願いします。
806 :
デフォルトの名無しさん :02/04/17 09:49
>>enum問題 それはまったよ。スレッド周りをいじるとき。 ステータスがorになってて switch文で引っかかんねーしデバッガで見ても 値が入ってるしで。確かになんだかなぁ・・・っておもった。
>>792 M$に文句言ってみたら?
惨と比べたらまだユーザーの声に耳を傾けてくれそうだし。
>>804 エージェント1号の意見ですが..
enumは整数定数です。そのビット演算をしたコードのILを見てください。結果の数値しか書いてありません。
C#のenumはある意味、定数のシンタックスシュガーです。
FlagsAttributeは、Enumのメソッドの動作を変えるためのものです。Enumは整数定数ですから、
定数同士の演算には何の影響もありません。というのも、原始型の演算はIL命令(Addなど)が
吐き出されるので、属性が介入する余地がないからです。
enumのメリットは、引数や戻り値に指定できて、コンパイラが型チェックをできること。
たとえば、
enum Enu { a, b, c }
void Meth(Enu enu) { ... }
のとき、Meth(Enu.a); はできますが、Meth(System.Loader...); はできません。
ですが、この場合もこんなことはできてしまいます。
Meth((Enu)123);
Enumは整数定数です。ただ、Enumはその名前から意味がおおよそ推測できるので、
SingleDomainとMultiDomainを|することは実際あまり考えられないと思います。
2¢
ビット演算の出来るものをflags型、 そうでないものをenum型と分けるべきだ。 classとstructを分けたんだからこれくらいしる!
>>809 それも一理あるとは思うんですが、ただそうなると、今度は言語間の相互運用性が
問題になります。C#は新しい言語なので、どんなconstructを追加してもよさそうですが、
それを他の言語に公開できないとなると、利用価値が半減してしまいます。
他の言語に公開できないconstructですと、結局FCLで利用することもできませんし。
811 :
デフォルトの名無しさん :02/04/17 13:13
>>811 フォームデザイナにテーブルをドラッグ&ドロップして、
[データセットの生成]を実行。
HP不正改ざんされた!! 誰か不正アクセスの仕方とか、色々教えてください!! 犯罪には犯罪で。ニヤリ 宜しくお願いします。 メールください。
>812 ありがとうございます。 なんか、DataSet1.xsdとかいうのが出てきました。 理解の範疇を超えたので、本買ってきます。
815 :
デフォルトの名無しさん :02/04/17 22:06
激しく既出ですが、VisualC#.Net スタンダードで作成したアプリケーションは、 配布可能なのでしょうか? 今まではっきりとしたご意見がなかったので・・・・ 有識者のご意見をお願いします。
816 :
デフォルトの名無しさん :02/04/17 22:42
C#からVBと同じようにexcel や一太郎を制御ことはできますか? COMはラッパを介して使用できると、どこかで読んだような気がするのですが・・・
>>816 Excelはできるよ。
一太郎は知らん。(COM経由で使えるの?)
818 :
デフォルトの名無しさん :02/04/17 23:47
>>810 僕は809とは別人ですが、Pascal, Modulaには「集合」があります。
set of 列挙型 と書きますが、列挙型のn番目の値が集合型ではn番目のビットとなります。
Adaも、「列挙型を添え字にしたBoolean配列」を集合のように使えます。
…というわけで相互運用性は問題ないかと。
むしろ存在してくれた方が集合の存在する言語が生かされるのでは無いでしょうか?
eventとdelegateだって、似て非なるこの両方を使い分けられる言語なんてそんなに存在しないのに
分けられてるじゃないですか。
>>819 >…というわけで相互運用性は問題ないかと。
>むしろ存在してくれた方が集合の存在する言語が生かされるのでは無いでしょうか?
各言語で独自にそのような型を利用することは可能です。ただし、それが「Common」か
どうかが問題です。ほぼすべての言語で一般的に利用できない以上は、CLSに
含めることはできません。PascalとModulaとAdaで利用できるから一般的だとはいえないと思います。
繰り返しますが、それらをPascal内部で使う分には問題ありません。
C#はMSがCLR向けに開発した言語ですから、C#でしか使えないconstructを
持ち込むつもりはなかったのでしょう。
>eventとdelegateだって、似て非なるこの両方を使い分けられる言語なんて
>そんなに存在しないのに分けられてるじゃないですか。
eventはメソッド+フィールドです。delegateは型です。両者はまったく異なります。
かつ、これらの概念はたいていどんな言語にもマップできます。
>>820 >かつ、これらの概念はたいていどんな言語にもマップできます。
例を挙げてほしいな。819さんのように。
PascalとModulaとAdaで利用できるから一般的とはいえないなら、どの言語と
どの言語で利用できれば一般的なのか知りたい。
>>821 >例を挙げてほしいな。819さんのように。
言語の例ということですか?それならすでにCLRをターゲットとする20を超える言語が
その例です、ということになるでしょう。
「一般」の定義は、実際にはMicrosoftが行った定義です。Microsoftは40数種類の言語を
考慮して、CTSとCLSのたたき台を定義したようです。これらMicrosoftが検証した言語に
共通に現れる、あるいは何らかの方法で表現できるconstructを抽出したのがCLSでしょう。
別にPascalとかModulaとかが特殊な言語で使ってはいけないとか言ってるわけでは
ありません。単にビット演算可能なフラグ型と単一の値を前提とする列挙型とを区別
できる言語はそんなに多くないのでは?と思うだけです。念のため。
返事になってますか?
>>822 Microsoftが定義すれば「一般」なのか、、、まあいいや。
結局はCLR設計者のポリシーの問題で、正当性をどうこう言う問題じゃない
気がするな。開発者がそれを認識していればいい話で、これ以上は水掛け論
になりそうだからやめとこう。(俺は)
>>823 わかりました。観点がずれていたようですね。820で私が言ったのは、.NET Framework上に
特化した話で、プログラミング言語一般の話をしていたわけではなかったんです。CLR上で
Enumがどう取り扱われるのかということだけを話していました。ですからこの場合、
Microsoftが定義したものが「一般」であることに何の疑問も感じません。
おっしゃる通り、CLRの設計者のポリシーの問題だと思います。CLRの設計者が、
CTSを定義するときに「関数型を基本にしよう」という決断をしていたら、
C#は関数型言語にかなり近いものになっていたでしょう。
水掛け論にはならないと思いますよ。答えはもう出ていますから。CLRはMicrosoftの
プラットフォームなので、Microsoftが考える一般がCLRの一般なんです。
もちろんそれに従うかどうかは自由です。
>繰り返しますが、それらをPascal内部で使う分には問題ありません。 Eiffel#は多重継承も総称も捨てられたじゃないですかぁ。 特に総称なんてEiffel内部で展開してしまえば問題無さそうなのに。 きっときっと、そういう建前があったとしても、事実上「C#は手本」となって、 C#に無い機能は捨てられるんだぁ…。 それにCLSに無いと、Pascalで定義した集合をModulaから使うことが難しくなるのでは… 内部で適当なstructにするにしても、言語間で構造を合せないといけないから、 PascalとModulaの開発元が同じか、どっちかがどっちかを考慮してくれるかしないと… Pascalの集合をModulaで使えないとか、関数型言語同士で高階関数が非互換とか、 起きてからでは困る気が… …と言っても相手が相手(Microsoft)なので、僕もこれ以上はやめときます。
さすがにリリース後だけあるね。1ヶ月で800オーバーだよ。。。 初代スレのときなんか半年かかってんのにさ。。。みんなC#に興味あるんだな。。
828 :
デフォルトの名無しさん :02/04/18 18:49
ツールバーにボタンを配置したんだけど、どのボタン押しても同じ動作。 ボタンの一つ一つにイベントハンドラはないのかしら? private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e) { if (openFileDialog1.ShowDialog()==DialogResult.OK) { }; }
ToolBarButtonClickEventArgsのプロパティを調べてみましょう。
e.Button.Tag を利用することになりました。どうもでした。
831 :
デフォルトの名無しさん :02/04/18 18:56
.Net のC#って、DLLやActiveXモジュール作れます? 作れる物は、VC++と同じって考えて良いですか?
>>831 どちらも不可
C#は基本的に.NET Framework のサービス、アプリしか作れない
>>831 関数エクスポートの方法はこのスレでガイシュツ。
ActiveXモジュール(?)そのものはダメだが、そう見せかけることは可能。
>> 824 すべての言語で使えるわけではないenumは桶で集合は駄目ってのには何の根拠も無い気がする。 設計したやつがこれらの違いを認識できなかったか、または些細な問題だと判断したかだね。 製品出荷後だから何言っても無駄だろうけど。
>>834 エージェント1号さんじゃないけど。
>>808 に書いてあるけど、enumは整数の定数に変換されるんだからすべての言語で使えるよ。
設計した人はそんなにバカじゃないさ。
>>835 そうそう、んでそういう言語では関係ない値を引数に渡すことも出来るわけじゃん。
同じように、他の言語ではただの定数だけど、C#ではビット演算も出来ない型があってしかるべきだよ。
>>836 自分で定義すれば?
>>826 >…と言っても相手が相手(Microsoft)なので、僕もこれ以上はやめときます。
君は掲示板で筋の通らない愚痴をこぼしてるだけでしょ。マイクロソフトが相手?ハァ?
そもそも多重継承も、総称も持つManaged C++があるのに、C#に無い機能がすてられるなぞという妄想はどこか
らでてくるんだ。
>>837 > 自分で定義すれば?
アフォですか?
すでに定義済みの.NETフレームワークはどうすんの?
>>838 どうしようもないに決まってるでしょ?
>C#ではビット演算も出来ない型があってしかるべきだよ。
.NETフレームワークはC#じゃないんだから、仮にC#にだけビット演算できない型があったって、問題解決しないじゃん。
良く考えてから書き込んでね。
>>832 へぇーそうなんだ。
.Netって、VS6の後継という意識だったので・・・そうすると、VB.NetかVC.Net?
> .NETフレームワークはC#じゃないんだから、仮にC#にだけビット演算できない型があったって、問題解決しないじゃん。 してんじゃん。 少なくともC#上では演算を制限できる。
>>841 だからさぁ、それなら自分で定義したって同じでしょ?馬鹿なの?
それともあれか、君は過去にさかのぼってC#にだけビット演算できない型を作って、.
NETフレームワーク(っていってるけど付属のクラスライブラリのことか?)全部をC#
で書き直せといいたいのか?
843 :
デフォルトの名無しさん :02/04/18 21:21
Staticの定義でおせてください。 たとえばPublic Static DataSetなんてものをユーティリティクラスで持っていて インスタンス作らずに、それを使っちゃおうとすると、そのDataSetはガベージコレクションにはかからずに いつまでもメモリを占有し続けるって解釈で間違ってないでしょうか?
>>842 > NETフレームワーク(っていってるけど付属のクラスライブラリのことか?)全部をC#で書き直せといいたいのか?
当然書き直しは必要だろうがC#で書き直す必要は無いだろ?
>>844 え、なんで?C#でそのビット演算の無い型とやらを使うために書き直すんじゃないの?
そうじゃないと書き直す意味が無いと思うんだが。
>>843 StaticはCのstaticとは全然意味違うから、ちゃんと勉強した方がいいよ。
インスタンスを作る作らないにかかわらず、ガベージコレクションにはかからないけどね。
なんやら荒れとるね。 若者は熱くてよいね。 明日単体発売上げ。 買う人手あげれ。
ガベージコレクションについて質問したいんですけど. ツリー形式のオブジェクトで、親が子への参照を保持して、 子が親への参照を保持しているとします。 そしてアプリケーションが親への参照を保持しているばあい、 アプリケーションが親への参照をnullにしても、 親と子双方が双方への参照を保持しているので、 ゴミとはみなされず、ずっと開放されないって事はありますか?
ガベージコレクタは、ルートから辿れないオブジェクトを開放するという 動作になっているので、その場合でも大丈夫なはずです。
>845 ども、ありがとうございます。 やっぱり本買ってきた方がよさそうですね。逝ってきまする。
850 :
デフォルトの名無しさん :02/04/18 23:09
.NETage
851 :
デフォルトの名無しさん :02/04/18 23:11
>>190 ,
>>191 に出てくるフォルダ選択ダイアログについて教えてください。
表示はできるんですけど、選択されたフォルダ名を知るにはどうすればいいんでしょうか?
>>851 DirectoryPathプロパティ。
853 :
デフォルトの名無しさん :02/04/18 23:20
>>852 ベータ2のころのドキュメントには載ってたけど、正式版には
載ってないねぇ。どうしても知りたい場合はIL DASMで覗く
しかないようだ。
>>848 ありがとう!!。
では、不用意にアプリケーションから途中の子を参照していて、
nullにし忘れると、オブジェクトツリーが開放されない場合も
あるのですね。
激しく参考になりました!
855 :
デフォルトの名無しさん :02/04/18 23:31
関連づけで起動したときにアプリに渡されるファイル名をどうやって知りますか?
追記 static void Main(string[] args) のargsをForm1から知りたい場合です。
>>854 その場合でも、スコープから抜けて、どこからも参照されない状態
になれば、ガベージコレクトの対象になります。
>>857 System.Environment.GetCommandLineArgs()
860 :
デフォルトの名無しさん :02/04/19 00:28
すいません。ReBarというのは無くなってしまったのでしょうか?
>>843 845 849
正確には、AppDomainがアンロードされるまでGCにはかからない、ですな。
永遠にロードされっぱなしってことだとたとえばASP.NETどうすんのって
話になっちゃうから、一応。
863 :
デフォルトの名無しさん :02/04/19 16:06
STLでいうmapみたいなものはないですか?
ファイル名の変更をしたいのですが、 System.IOを探してみましたがみつかりません。 VB.NETのRename 関数というのは見つかったのですが、、 よろしくおねがいます。
>>866 あ、System.IO.File.Move でいけるかもしませんね。
試してみます。失礼しました。
870 :
デフォルトの名無しさん :02/04/19 16:59
配列と配列を結合するにはどうしたらよいのでしょう?
書き忘れましたがもちろん、同じ型(もしくは互換型)です。 たとえば、 int[] a = new int[5]; int[] b = new int[7]; で、このaにbを加えた配列(int[] c)がほしいんです。 aとbのLengthをみて、cを確保し、コピーするしかない?
新しいサイズの配列を作成してArray.Copy。
>>872 おー、サンキューです。Array.Copyってstaticメソッドなんですねー。
>>871 やり方はいろいろあると思うけど、とりあえずこんな感じ。
int[] a = { 1, 2, 3 };
int[] b = { 4, 5 };
int[] c = new int[a.Length + b.Length];
a.CopyTo(c, 0);
b.CopyTo(c, a.Length);
動的にクラスのインスタンスを作成しようとして System.Reflection.Assemblyを使用しています。 しかし、以下のSDKのマニュアルどおりかいてもなぜかエラーです。 ms-help://MS.NETFrameworkSDK.JA/cpref/html/frlrfsystemreflectionassemblyclassloadtopic3.htm Assembly asm = Assembly.Load("System.Data"); これを実行すると ハンドルされていない例外 : System.IO.FileNotFoundException: ファイルまたはアセン ブリ名 System.Data、またはその依存関係の 1 つが見つかりませんでした。 ファイル名 : "System.Data" at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, B oolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Ass embly locationHint, StackCrawlMark& stackMark) at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Boolean stringized, Evidence assemblySecurity, StackCrawlMark& stackMark) at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence as semblySecurity, StackCrawlMark& stackMark) at System.Reflection.Assembly.Load(String assemblyString) at ConsoleApplication1.Class1.Main() 長くてすいません。よろしくお願いします。
>>874 おっ、こっちのほうがすっきりしますね。
ありがとうございますー。
>>875 お好きな方でどうぞ。
Assembly.Load("System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
Assembly.LoadFrom(@"C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll");
>>877 素早いです。
ありがとうございます。
どっから情報仕入れてるんですか?英語ですか?(鬱)
マニュアルが違ってると辛い・・。本でも買ってきます。
880 :
デフォルトの名無しさん :02/04/19 18:46
>>879 GACから読むかどうかということ以外に何か違いってありますか?
>>880 Xboxより.NETロゴ入りグッズの方が欲しいという罠。
>>881 >GACから読むかどうかということ
それが実は非常に大きい。
たとえば、Assembly.LoadでロードしてCreateInstanceしたSystem.Data.DataSetはSystem.Data.DataSetにキャストできるが、
LoadFromでロードしたやつはキャストできません。
それから、LoadFromではバージョニングもできません。
あのーインストールって合計でどのくらい時間かかりますか? 残り時間2時間50分とか表示されてるんだけど・・・・
>>886 そりゃあ、マシンによりますがな。
おいらの場合はデフォルトオプションで2時間弱だったかな。
OO4O使った人まだいませんか? 早く使い方教えて!!
>>889 ボラクルなんて個人で持ってないよなあ・・・
C++でないとポインタ使えないんですよね、でも単体だと最適化してくれないみたいだし C#でもポインタの変わりになるようなものありますか? チェーン構造とかやりたいんです。
>892 unsafe
即レスありがとうございます!! c#.NETを買うことにしました! これからはC#の時代ですね。
おお、terrariumがついにニポーンでも開催かっ。 もう動物作った?
897 :
デフォルトの名無しさん :02/04/20 01:40
>>895 というか、君の考えていることは unsafe でなくても出来ると思うが…。
ずばりファイル管理ソフトを作りたいのですが、ソートの方法は リスト使うやり方しかしらなくて、それで・・・ 時代に取り残されてますか?
>>898 生ポインタ使わんでもただのオブジェクト参照でできるがな、ということでしょ?
やっぱり、画像をいじる場合などはunsafe使わないと厳しい?
902 :
デフォルトの名無しさん :02/04/20 02:42
ソケット&スレッドについて勉強しているのですが、 非同期ソケットの例に出てくる ManualResetEvent っていうのがよくわかりません。 何よこれ?
903 :
デフォルトの名無しさん :02/04/20 05:30
>>902 その名の通り、手動リセットイベントの事。
AutoResetEventは、イベント状態を検出後自動的にリセットされるが、
ManualResetEventは自分で明示的にリセットしない限り勝手にはリセットされない。
イベントって何よ? ってのはWin32 APIのCreateEvent()とか同期オブジェクトに
ついて調べる事。Advanced Windows読むのでもいいけど。
つーかManualResetEventクラスの「解説」にそのまんま書いてあるやん。 まずはそれ嫁 >902
905 :
デフォルトの名無しさん :02/04/20 11:05
ヘルプを読んでみました。 ManualResetEvent.Reset メソッド 指定したイベントの状態を非シグナル状態に設定します。 ManualResetEvent.Set メソッド 指定したイベントの状態をシグナル状態に設定します。 という風に書いてあります。 多分、WaitHandle.WaitOne メソッド を使ってスレッドを待機状態に しておいて、イベントの処理をフックし、指定されたイベントが 発生した場合に、スレッドを再開させる。みたいな捉え方をしているの ですが、、、 よく分からないのが、指定されたイベントという説明のところで、 ここでいう指定されたイベントとは何か?といのが分かりません。 何か、イベントの指定をしておいて、それを待ち受けるというイメージ なのでしょうか?それとも、何でもかんでもイベントが発生したら、 シグナルが出るのでしょうか? ヘルプを呼んだ限りでは、イベントを指定して待機するというようなこと はできないようですが、、、
イベントってClickイベントとかのことだと思ってない?
>>903 さんの言うとおり、Win32のヘルプも見たほうがいいよ。
勘違いしていたようです。 スンマソ
>>906 どっちかというとDOSのシグナルみたいな概念の方ね。
(´-`).。oO( 最近♯さん見かけないね・・・ )
>>548 どなたか参加されてませんか?>東京の方
豆さんのセミナーに派遣しようかどうしようか迷ってます。。。
911 :
デフォルトの名無しさん :02/04/20 15:20
>>910 交通費+参加費の分で本を買って読ませた方がいいと思う。
>>890 OTN入ってりゃ、個人でもロハで試供品が手に排卵買ったっけ?
(´-`).。oO( ♯さんjavaスレの方でみかけたような・・・ )
本気で質問があるのですが、上級者のみなさんどうかよろしくお願いします。 今日、単品のC#を衝動買いしてきたのですが、これには機能制限があって クラスライブラリとWindows/Webコントロールが作成できたないとのことですが これができないとどういうソフトが作れなくなるのでしょうか?また、困難になるのでしょうか? これから、おいおいわかっていくことだとは思いますが、参考までによろしくお願いします
>>914 プロジェクトのテンプレートがないだけで、作れないというわけじゃないよ。
作るんだったらSDKのみでもできるし。
>>914 僕は上級者ではありませんがね、
クラスライブラリとWindows/Webコントロールのいずれも
独自で再利用可能な部品というかを作りたい場合のものだと思いますよ。
なので、特定のソフト開発そのものが不可能になるのではなくて
より楽チンするための手段がひとつとれないって感じではないでしょうか
APIのSHGetFileInfoを使用して、拡張子からアイコンを得ようとしています。 そこで、[1]のようにし、SHFILEINFOを[2]のようにしました。 実行すると([3])、「Additional information: 型 SHFILEINFO はアンマネージ構造体として集成できません。有効なサイズ、またはオフセットの計算ができません。」 と例外がでて、実行することができません。 どうすればいいのでしょう。長くて申し訳ありません。 よろしくお願いします。 [1] [System.Runtime.InteropServices.DllImport("shell32.dll")] public static extern ulong SHGetFileInfo( string pszPath,long dwFileAttributes,ref SHFILEINFO sHFILEINFO,long cbFileInfo,long uFlags); [2] public struct SHFILEINFO{ public System.IntPtr hIcon;//アイコンハンドル public long indexIcon;//アイコンインデックス public long dwAttribute;//属性 [MarshalAs(UnmanagedType.LPArray, SizeConst=260)] public char[] szDisplayName;//表示名 [MarshalAs(UnmanagedType.LPArray,SizeConst=80)] public char[] szTypeName;//種類 } [3] ulong result = SHGetFileInfo( "*.txt",0,ref sHFileInfo,(long)Marshal.SizeOf(sHFileInfo),SHGFI_USEFILEATTRIBUTES | SHGFI_ICON | SHGFI_LARGEICON);
>>915-916 レスありがとうございます。とてもわかりやすくて参考になりました。
アプリ作成の過程が多くなるだけで、出来ないものはないってことですよね?
なんかちょっと安心しました。ソフトに振り回されないようにこれからがんばります。
>>919 サンプルまで頂きありがとうございます。感謝感激。
しかしDllImportする時の型やら構造体やら作るの難しいですね。
廚な私にはさっぱり・・ どう型を対応させていいのやら、、、
921 :
デフォルトの名無しさん :02/04/21 02:31
C++のDLLで HBITMAP foo(int p,int x,int y,BYTE b,long size,BYTE* data) と宣言されているものをC#で宣言するときは [Dll〜] extern 〜 IntPtr foo(int p,int x,int y,byte b,long size,byte[] data) これでいいのですか? この関数を呼び出すとNullReferenceExceptionが帰ってきます。 関数の中身が悪いのか、宣言がまちがっているのか、わかりません。
>>921 引数の意味が分からないことには何とも・・・
>>919 XP環境だと.txtとか.htmlのアイコンが変なんだけど何でだろう。。。
>>921 最後の引数は ref byte[] だと思われ。
>>923 私も同じ環境ですが、ちょっと変ですね。
私の用途ではこれでも十分なのですが。
とにかく、919さんは感謝。
>>923 txtは分からないが、html関連のアイコンがおかしくなる、
アイコン変更しても反映されないことがあるのでXPが悪いかと。
>>923 アイコンを保存するとき、フレームワークが16色に減色してるのだと思われ。
試しに ToBitmap() して保存したらフルカラーになってた。
930 :
デフォルトの名無しさん :02/04/21 14:23
>>930 全然わからなぇータイトルだ。ありがと
ジャンル-板-スレ-レスですね。すまんこ
932 :
デフォルトの名無しさん :02/04/21 18:59
934 :
デフォルトの名無しさん :02/04/22 22:39
Form1にBitmap型のメンバを追加したいんだけどどこに書けば良いんだろう?
935 :
デフォルトの名無しさん :02/04/22 22:42
会社では使わないので Visual Studio 触れない。 かといって自腹で買うには高すぎるので、VC# Standard を買おうかと思うけど、どうよ。 もしかしてライブラリのヘルプとかないの?情報キヴォンヌ
>>935 クラスライブラリのヘルプあるよ。
っていうかクラスライブラリのヘルプなら.NET Framework SDKに付いてくるよ。
>>935 MSに詳しい情報あるよ。あとVS.NETスレもあるので、そちらもよいかと。
ライブラリヘルプなんぞはついてるよ。
>>934 分からないなら、C#勉強するかクラスビューアで右クリックで
フィールド追加してみれ。あせらず勉強しる。がんばれ。
938 :
デフォルトの名無しさん :02/04/22 23:51
public class Form1 : System.Windows.Forms.Form { public Form1() { { Cursor = new Cursor(@"C:\Sample.cur"); } } カーソルが黒抜けしてしまいます。 色をつけるにはどうしたらいいでしょうか?
色つきカーソル使うんではだめかい。黒い縁取りとかでさ。 などと言ってみるテスト。
940 :
デフォルトの名無しさん :02/04/23 01:01
>>939 Sample.curは色つきカーソルなのですが、
枠だけが黒色で表示されてしまうんです。
>>940 OSの設定で影表示してるから、とか落ちはないよね?もちろん。
>>941 Win2000とXPが開発環境ってわけで、それはありえますねー。
わしもテストしてみやう。
ほんとやまっくろけになるわー。 なんでやろかー ↓こんな感じ。(もちろん黒で塗りつぶしたカーソルではない) ■■■□□□□ ■■□□□□□ ■□■□□□□ □□□■□□□ □□□□■□□ □□□□□■□ □□□□□□■
>>943 ちゃんと16x16で作ってる?
VS.NETでカーソル作ろうとすると、デフォルトは32x32で表示されるので要注意。
whileとかforループの処理ってFormのドラッグ中は 止まってしまうものなの?なにか対策はないもの?
946 :
デフォルトの名無しさん :02/04/23 10:34
string.Trim() って、MSDNによると、 > このインスタンス内に出現する空白文字をすべて削除します。 って書いてあるのに、別の場所をみると、 文字列の先頭と末尾から空白を削除します。 と書いてある。うーん、指定した文字を削除するにはどうしたら いいのだろう・・・
947 :
デフォルトの名無しさん :02/04/23 10:39
>>941 その落ちはないです。
>>944 16x16でないとだめなの?
表示しようとしてたのは、32x32 256colorです。
16x16で試してみます。
948 :
お役立ちサイトです。 :02/04/23 10:48
自己レスです。 32x32 16Colorで表示できました。 256Colorだったので駄目だったようです。
950 :
デフォルトの名無しさん :02/04/23 12:34
>>945 ループを別スレッドで動かしてみたら大丈夫だったよ。
>>946 String.Replace()でどう?
>>946 string a = "tes t".Replace(' ', '');
をコンパイルすると、
error CS1011: 空の文字リテラルです。
と怒られます。MFCのころはこれでOKだったんだけどなぁ・・・。
>>952 Replace(" ", "") でOKだと思われ。ちょっとムダがあるけど。
>>953 そうか!stringにするのですね!ありがとうございました。
>>936 ,
>>937 わざわざありがd。
そうか、ヘルプはあるのか・・・GWの暇つぶし用に買ってみますか・・・
>>954 のリンク踏んだらC Buliderのスレに飛んだような…。
きっと気のせいだよな。
959 :
デフォルトの名無しさん :02/04/26 03:23
気のせいでしょ
l`ヽ`ヽ、-─-、 _,. -─-, -‐_=‐┐ |:::::::ヽ-‐`‐-、 , -─-'、/:::::::: l !./ `ヽ::::: /、 ,/ / / ,ヘ ヘ ヽ.ヽ.ヽ`〈 i . // l l | ! ! /^'^ヽ l| l l ! ! .l | l l ! | _Ll-l‐| |-l‐L/!_l | | | . ヽ!l'└ 'T / Tヽ / Tヽ. l T T | l |l ト' |:;;`‐! |::;;`‐!´l l l | l. |.l ヽ `ー' 、 `ー‐' ! l l| | | l l l !、" ヽフ " l. ! l| | | / ̄ ̄ ̄ ̄ ̄ l | l ! `i 、 _ _. イ´ | .l l! | | < うめていいの? l ! l l l/,-「 「`l l | | | \_____ ,-,─--、 l l | ! l/ ,='=、_ -‐ '´ ノ .ノ__ノl | | 〈〈 け^‐ ` 、l l 「 T ,l.人¶_ノ ヽ_./  ̄ _`ヽ!. | | . `‐^-'´ヽ ヽ_l l l/ /o/ 、/ 〉 | | 〉 Vヽ.,‐'l |o.| l / ヽ、l l 〈‐`一' /ヽ lヽ、 ̄ , '´ ̄ ``ヽニ ヽ-、! | `┬‐'´ ./ l 〈 l_l_l_けヽ 〉 〉 ヽ | ミヽ、 `iヽ、 -‐'|l `‐^' l ー`‐' / l l ミ ミ l l | `ー ``ー、'´ / l ミ ミ l l ! __ ノ l T  ̄l l ,,ミ ミ
971
あう間違えた962
( ´_ゝ`)フ
ヽ(`Д´)ノ
973 :
デフォルトの名無しさん :02/05/04 11:10
うめて
埋められるとdat落ちして見れなくなるよ
975 :
manko chinko :02/05/04 11:49
>>743 ほんとやまっくろけになるわー。
なんでやろかー
↓こんな感じ。(もちろん黒で塗りつぶしたカーソルではない)
■■■□□□□
■■□□□□□
■□■□□□□
□□□■□□□
□□□□■□□
□□□□□■□
□□□□□□■
↑これいやらしいぞ!!
sage
984
985
986
987
988
989
990
991
きゅうひゃくきゅうじゅうに
oノハヽo _ ドスッ (`.∀´) ─┴┴─┐ / つ. 9 9 3 .│ /_____|└─┬┬─┘ ∪ ∪. ││ _ε3
oノハヽo _ ドスッ (`.∀´)┌─┴┴─┐ / つ. 9 9 4 │ /_____|└─┬┬─┘ ∪ ∪. ││ _ε3
995
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | もうすぐ1000ですね。 \  ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・∀・) ∧ ∧ < まったりしすぎだぞごるぁ。 ( ) ( ゚Д゚) \_________________  ̄ ̄ ̄ ̄ ̄ (つ_つ__  ̄ ̄ ̄日∇ ̄\| BIBLO|\  ̄ ======= .\
二重カキコといわれてしまう条件ってなんですか?
999 999 999 999 999 999 999 999 999
1000 :
デフォルトの名無しさん :02/05/17 04:23
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 1000いっちゃいましたね。 \  ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・∀・) ∧ ∧ < はじめての1000げっとだごるぁ。 ( ) ( ゚Д゚) \_________________  ̄ ̄ ̄ ̄ ̄ (つ_つ__  ̄ ̄ ̄日∇ ̄\| BIBLO|\  ̄ ======= .\ ヒトリデヤッテルトナンカムナシイ・・・。ゴメンナサイモウシマセン。イッテキマス。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。