このスレは Java 信者がのっとった
4 :
デフォルトの名無しさん:05/03/01 12:14:56
ヘ o , ── / __, / _, /_/_/ __, /
/ \ ´ ── / / ─' / _ /
_/ \ __ / ___/ ___/ / ___/
 ̄ ̄ ̄
_ , ― 、
,−' `  ̄ヽ_
,' ヽ
( `ー'ー'ヽ`ー'ー'ヽ )
( ノ '''''' '''''':::::::ヽ )
( . )(●), 、(●)、.:( ) +
( ) ,,ノ(、_, )ヽ、,, .::::( ) <ヨン様が華麗に4get!
. ヽ ) `-=ニ=- ' .:::::::|ノ +
\ `ニニ´ .:::::/ +
,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
: | '; \_____ ノ.| ヽ i
先着1名で。
7 :
デフォルトの名無しさん:05/03/01 20:35:44
>>5 悪書だった?
ちょっと面白そうだけど感想希望。
8 :
デフォルトの名無しさん:05/03/01 22:01:08
ためしにメッセに登録してみたw
1さん乙カレー
10 :
デフォルトの名無しさん:05/03/01 22:15:57
C#ってMS信者以外誰も使ってないよな(藁
社会に出てみればわかるよ
↑消しゴム
FormアプリケーションでForm上のオブジェクトのちらつきを抑えたいときに
Form上でダブルバファリングするだけではうまくいかないものでしょうか
フォーム上の各コンポーネント全てでちらつきを押さえるようなコードを書かないとだめ?
ついでにWバファリングするコードってこんな感じでよいのかな?
SubForm:Form{
Image _bitmap = new Bitmap(500, 500);
protected override OnPaint(PaintEventArgs e){
base.OnPaint(new PaintEventArgs(Graphics.FromImage(_bitmap), e.ClipRect);
e.Graphics.DrawImage(_bitmap, 0, 0);
}
}
15 :
デフォルトの名無しさん:05/03/02 00:50:47
>1
もつかれ
16 :
デフォルトの名無しさん:05/03/02 01:15:57
前スレでリストビューのInsertについて質問した者です。
無事、追加することができましたので御報告します。
それにしても、
ListView1.Items.Insert(
と入力した時点で()の中の1つめの引数はStringだと出ていたので、
System.Windows.Form.ListViewItem型をInsertできるとは微塵にも思っていませんでした。
有り難う御座いました。
警告を表示させずに通信されたらファイアウォールの意味がないわけだが。
>>18 それは分かっています。別にファイヤウォールを騙すなりをしたいのではなくて、
プロセス間で通信をするのが目的なので何らかの手段を示して頂きたいと思いまして。
スレッド間でTCP/IP通信はできるけどする意味がないから多分誤字でしょう
ColorDialogについて質問です。
ColorDialogでアルファブレンドの値を決められるようにすることはできませんか?
色と同時にアルファ値を決められるようなUIは1から自作しないとできないのでしょうか?
Windowsのエクスプローラーみたいに
ファイル名 | ファイルサイズ | 種類 | 更新日時
といった風にテキストを分けたりするにはsplitterを使うのでしょうか?
splitterを使用してもたくさん分割できないので(使い方が下手なだけかもしれませんが・・・)
もしかしたら他のコントロールを使用するのでしょうか?
先輩方のアドバイスをいただければと思います。
ListView使え。
>>14 private void Form_Appl_Load(object sender, System.EventArgs e)
{
SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
っていうことじゃなくてか?
Pingを打ってその値をテキストに出したいんですが
C#などでPingを打つ場合はどういう手順でやるんでしょうか?
サンプルや事例があれば教えていただければと思います。
>>26 C#が動く多くの環境でpingコマンドが使えると想定して
コンソールでpingコマンドを動かしてしまって、それの
出力を取るというのも一つの手だ。
pipeが使えれば普通にやれる気がするけど、.NETでpipeはどうやるんだろう。
スルーのままスレが終わってしまったので再び。
あるクラス(A)の持つ読み取り専用のデータ(B)をクラスとして公開すると
参照先で(B)が持つ(C)の内容を変更される可能性がある。
class A{
private B dataB;
public B DataB{ get{ return dataB; } }
}
class B{
private C dataC;
public C DataC{
get{ return dataC; }
set{ dataC = value; }
}
}
クラス(B)のメンバであるクラス(C)も読み取り専用すればいいのだろうが、
そうするとクラス(A)でも変更できない。
解決策として、クラス(B)を構造体にして、
外部にはインスタンスをコピーしたものを公開する、という方法は
構造体の使い方として間違っている?
メンバをコピーするメソッドを書かなくていいし、
データが軽ければ複製の負荷もわずかだろうし。
31 :
デフォルトの名無しさん:05/03/02 20:15:33
32 :
デフォルトの名無しさん:05/03/02 20:32:18
ちんぽびゅんびゅんびゅーーん
33 :
デフォルトの名無しさん:05/03/02 23:22:59
現在DLLを読み込んでいるかなどの情報を知ることができるのでしょうか?
アプリケーションの起動時にそのような情報を取得し表示したいのですが
どうしたらよいでしょうか?
>>33 意味が良くわからんな。
特定のアプリケーションドメインにロード済みのアセンブリならAppDomainのGetAssembliesメソッドがあるが。
>>25 ああ、なんて便利な・・。C#素敵です
ありがとうございました。
>>30 クラス(B)のメンバであるクラス(C)も読み取り専用にして
クラスAでは実はクラスBのサブクラス(クラスCを書き込み可能)をいじっているとかいうのではだめかな
もしくは、基準を変えて、クラスBの下にgetだけできるインタフェースを作って, class AではdataBのインタフェースだけもてるとか
Longhornには.NET Framework 2.0 が標準でインストールされているんだよな?
WinFSにつづいてWinFXも開発延期になったら搭載されないかもしれない
それってもうLonghornじゃないな(笑)
>>30 こんなのどうだ?
C#知らないから勘で書いてみる。勝手に翻訳してくれ。
class A {
private BChild dataB;
public B DataB { get { return dataB; } }
class BChild : B {
public C DataC { set { dataC = value; } }
}
}
class B {
private C dataC;
public C DataC { get { return dataC; } }
}
誰かこれをコンパイル通る文に変換してくれ。
要は、Bでは「Cは読み取り専用」にして、
Aの内部クラスとして「Cを変更可能にしたB」をBの子クラスとして定義。
>>40 書き忘れたので自己レス
> public B DataB { get { return dataB; } }
return dataB; はBにキャストしてから戻す文に変更してくれ。
return (B)dataB; とか書くのかな?
42 :
デフォルトの名無しさん:05/03/03 07:36:20
・プロジェクトAでアプリAを作りました。
・プロジェクトBでアプリBを作りました。
ここでこれらのアプリを連携させたいと考えました。(AでBをいじり、BでAをいじるように)
これを実現させるために単純にAでBを参照追加、BでAを参照追加のようにすると
DLL参照で循環が起こってしまうのですが、どのようにするのがセオリーなのでしょうか?
コンソールでコマンドを打ちたいのですが
コンソールの起動とコマンド実行時の結果を取得したいのですが
使用するコントロールはどのあたりを使えばよいかヒントをいただけないでしょうか?
もしくはそういったことを解説しているサイトがあれば教えてください。
45 :
デフォルトの名無しさん:05/03/03 09:40:46
>>42 お前さん構ってもらえないからってしつこすぎw
46 :
デフォルトの名無しさん:05/03/03 10:03:43
AxSHDocVw.AxWebBrowserでブラウザ表示するプログラムを練習中です。
URLを指定してHTML文やXML、SVGを表示することは出来ました。
string で作成したHTML文を表示することはできましたが、
stringで作成したXML文やSVGを表示する方法が分かりません。
下記で表示すると、タグがとれたXMLやSVGのテキストが表示されます。
axWebBrowser1.Documentのキャストを何にすればXMLとかが普通のブラウザ表示されるのでしょうか?
いちいちSVGをファイル保存したくないのですが。
string strResult;//結果文字列用変数
private void button1_Click(object sender, System.EventArgs e)
{
object o = "";
localhost.Service1 webservice = new localhost.Service1();//インスタンス生成
strResult = webservice.ReadJob(textBox1.Text); // WebサービスからXML文をもらう
axWebBrowser1.Navigate("about:blank", ref o, ref o, ref o, ref o) ;//string文字をブラウザ表示するため、about:blankを指定
}
private void axWebBrowser1_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
{
IHTMLDocument2 html;
html = (IHTMLDocument2)axWebBrowser1.Document;
html.writeln(strResult);
}
>>46 XMLにせよSVGにせよ、Navigateするときに拡張子を見てプラグインを起動させるといったデザインのはずなので、
オンメモリのを直接ってのは無理じゃないかな。
C#でネットワーク関係を詳しく扱っているサイトとかありませんか?
探せど探せど基本的な事やデータベースとの連帯を重視しているサイトしか
見つけられなくて、ネットワーク関係を詳しく扱っているサイトありましたらおしえてください。
aaa-bbb-ccc-111
のような文字列から、最後の - の直前までを取得したいのですが、
どうやればいいのでしょう?
上記の場合、取得したい文字列は aaa-bbb-ccc になります。
これが a-b-c-1 の場合、取得したいのは a-b-c になります。
よろしくおねがいします。
string.LastIndexOf を使え
正規表現を使う手もあるけどな。
ま、そんな単純なのならLastIndexOfで十分だ。
>>48 ありがとうございました。内容に合わせた拡張子でtempファイル作るようにします。
あともう1点。
svgの画像を印刷しようとすると
用紙に合わせた縦横変倍になってしまいます。プレビューでもなります。
ブラウザには正しく表示されてるのに何ででしょう?
足りない設定があるのでしょうか?
他に印刷方法あったら教えてください。
private void button2_Click(object sender, System.EventArgs e)
{
object o = "";
SHDocVw.OLECMDID Print = SHDocVw.OLECMDID.OLECMDID_PRINT;
SHDocVw.OLECMDEXECOPT PromptUser =
SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER;
axWebBrowser1.ExecWB(Print, PromptUser, ref o, ref o);
}
>>49 つ MSDN & GotDotNet
抽象的すぎる。
どんなことが「詳しく」になるんだ?
それにソケット絡みのはコーディングそのものは大して複雑にもならない。
TCPやIPの理解ならC#である必要はどこにもないし。
>>30 Cはイミュータブルなクラスか構造体ってことでいいのかな?
B、CともにイミュータブルにするかICloneableを実装するってことじゃだめ?
>> 51 >> 52
ありがとうございます。ばっちりできました。助かりました。
>>53 むりぽ。
IEでの印刷もそうだし、IEの仕様なんだろ。
HTMLを基本にして、SVGはobject/embed要素で表示するようにすれば幅/高さを指定できるようになるが……。
>>57 embedでHTMLに組み込むとプリントは正しく出来ますが、
ベクター画像として印刷するのではなくビットマップ画像になってしまうみたい。
そうするとSVGを使用する魅力がなくなる。
3回ぐらい繰り返しで出力させると正しいサイズで出てくるあたり挙動不審(w
さらに印刷プレビューで正しく表示されたとき、何倍にしても同じサイズで表示されてる…。
SVGは諦めろと…。
ある文字列が日付 (yyyy/mm/dd) として正当かどうかを検査するにはどうしたら
よいでしょうか?
isdate 関数みたいな事がやりたいのですが。。。
60 :
デフォルトの名無しさん:05/03/03 21:33:56
isdate関数なんてありませn
1) 正規表現
2) DateTime.Parseをtry-catch
3) Microsoft.VisualBasic.dllを参照してMicrosoft.VisualBasic.Information.IsDate
>>59 試してないが、DateTimeに変換出来なかったらえらーじゃ駄目なの?
>>61 DateTime.Parse()と/の位置チェックぐらいかな。
03/04/05みたいな不定な文字列でもParse()は通っちゃうから。
>>62 DateTime は 2005/02/29 を 2005/03/01 と解釈するし
そういうよけいなことはしないでほしいのです
>>64 別に変換したDateTimeを使えと言ってるわけではないが。
DateTime.ParseExactならフォーマットも指定できるな。
>>64 それはあってんじゃねーか? そんな日ないし。
67 :
デフォルトの名無しさん:05/03/03 23:26:13
>>64 というかだね、厳密に仕様が決まってるなら自分で解析すべき
で、それができないとしたら仕様が曖昧か、C#以前に
プログラミングスキルが足りないのどちらかだろ
68 :
デフォルトの名無しさん:05/03/04 10:46:38
関数f(A a) の宣言において、「この関数は引数を変更しない」ことを示したいときは
どのようにすればいいのでしょう(C++におけるconst参照渡し)
out,refがあってinがないのが不可解でなりません。
>>68 out/refを書かなければ、変更しないから不要なんでしょ。
70 :
デフォルトの名無しさん:05/03/04 10:54:49
>>69 そんな馬鹿な。
vod f(A a) {a.b=10;}
ってコードも通りますよ。
>>70 それは、「引数を変えてる」わけじゃないからねぇ。
>>70 outやrefだって、メンバへのアクセスについては関与しないだろ。
>>71-72 あ、なるほど……
でもそうなると、ある関数が引数のメンバを変更するかどうかは
関数の宣言を見るだけではわからないってことですか。
>>73 ってことです。
C++でクラスのポインタを渡すようになっていたら、それを
どうされるのかわからないのと一緒。
Forms.LabelをFormに貼り付けてF2を押したら編集する。といったようなものを考えました。
そこで、LabelEditorみたいなものを作りたいのですが、ラベル内のTextの位置って
Labelメンバから取ってくることは可能でしょうか?
LabelEditorの出現位置がLabel内のTextにぴったり被さるようにしたいのですが
77 :
デフォルトの名無しさん:05/03/04 14:23:38
いきなり質問失礼します。
見積書のテンプレートを読み込み、それを書き換えて見積書をつくるプログラムの一部を作っています。
//"Template\Estimation.txt"を開く
System.IO.StreamReader sr = new System.IO.StreamReader(@"Template\Estimation.txt", System.Text.Encoding.GetEncoding(932));
//内容をすべて読み込む
string s = sr.ReadToEnd();
//閉じる
sr.Close();
これでsに見積書のテンプレートが読み込まれて
//sを書き換える
s.Replace("name", this.txtName.Text);
のように書き換えたいのですが、うまく書き換わらずに、最後に
MessageBox.Show(s);
とやると元のテンプレートのまま吐きだしてしまいます。
やはり
s.Replace();
とやっただけではsは書き換わらず、
s = s.Replace();
というふうにすべきなのでしょうか?
>>77 わかってるんだったらそうしなよ。
ついでにリファレンスのSystem.Stringも熟読。
初心者は混乱するんだけど “string オブジェクトは変更できない” のよ
string.Replace のリファレンスを見ると、『置換した文字列を返す』 って書いてあるから、
string newText = s.Replace();
が正解。s = s.Replace() でも良いけど。
80 :
デフォルトの名無しさん:05/03/04 14:38:44
つか見積書ってナニよ?
時間帯からして仕事のソフト?
素直に上司に質問しなさい!
つか、仕事の質問を2chにするなとw
>>80 このスレは仕事の質問ばっかりだが。
俺も仕事中にこっそり答えている。
82 :
デフォルトの名無しさん:05/03/04 14:49:32
>>80 ここは@ITの会議室ほど露骨ではないと思ふ。
C#を覚えようと参考書かって勉強したが、挫折シマスタ(´・ω・`)
面白いことなくてやる気失せマスタ
85 :
デフォルトの名無しさん:05/03/04 14:52:41
あぁ・・・焦って公開してしまってから後悔しています。
何というかお恥ずかしい・・・
本当にまだC#を勉強し始めたばかりなので、ロクでもないソフトなのですが・・・
まだ動かない機能が殆どなので余り怒らないでくださいね。
System.Drawing.Font または DirectX.Direct3D.Font から
GetGlyphOutline で取得できるようなアウトラインデータを取得するまでの流れが思いつきません。
良い案ありますか?
88 :
デフォルトの名無しさん:05/03/04 16:08:58
オーバーロードされた関数をデリゲートに渡すにはどうすればよいのでしょうか?
delegate void test(string text);
new test(MessageBox.Show);
としてもエラーが出てしまうのですが...
>>88 MessageBox.Show(string) は void じゃなくて DialogResult
>>88 MessageBox.Showメソッドの全てのオーバーロードでDialogResultが返されるわけだが。
>>89,90
解決しました。
ありがとうございました。
Windows.Form です。
重い処理を実行した時に、"応答なし"となるのを避けたくて、
その思い処理をスレッド化?しました。
その場合、"応答なし"にはならなくなりましたが、処理中にもかかわらず、
フォーム上のコントロールが自由にさわれるようになってしまいました。
例えば、ボタンでその重い処理を実行しているとすると、スレッドで実行した
直後にまたボタンが押せるようになります。
スレッドにしなかった場合は処理している間はフォームはイベントが発生
しませんでしたので、このような事はおこりませんでした。
応答なしの表示はしたくないけど、フォーム上のイベントを拾いたくない
なんて都合のよい事をやろうとすると、どのように組むべきでしょうか?
>>92 ボタンを押した時にボタンのEnabledをfalseにすればいいじゃない。
見た目的に押した感じは出したいのならフラグを使えばいい。
>>87 GetGlyphOutlineを使うしかないような気がする。
Graphics g、Font fがあるとして、
g.GetHdcでデバイスコンテキスト取得。
f.ToHfontでHFONT取得。
SelectObjectでデバイスコンテキストにHFONTを選択。
GetGlyphOutlineを実行。
SelectObjectで元のオブジェクトに戻す。
g.ReleaseHdcでデバイスコンテキスト解放。
基本的な流れはこんなもの。
構造体の書き方とか読み方は調べれ。
>>96 すげ。有り難うございました m(_ _)m
>>37,40,55
回答どうもありがとう。
明日は早く起きなきゃならないのでひとまずお礼だけ。
日曜に試してからまた報告する。
とてもアホなことだと思うのですが、関数に文字列の参照を与えて、中身を埋めてもらおうと思ってます。
こんな感じ
Func(out string hoge)
{
hoge = "XXXX";
}
ですが、呼び出し側で以下のようにしてみても駄目。
string test = ""; //仮にダミー値とする。
Func(test); //文字列を記入
そもそもstringを使うところが間違っているのでしょうか?
>>99 コンパイルエラーだろうけど、エラーメッセージを良く読もうよ。
あとoutパラメータに渡す場合初期値を与える必要は無いよ。
コンパイルエラーなら Func(out test) 呼び出し側にもout が必要。
102 :
99:05/03/05 00:39:51
大変失礼しました。
>100,101
ありがとうございます。
一生懸命Func(&test);
とかやっておりました…orz 文法嫁よ、俺
日の丸みたいな画像(bmpとかjpg)読み込んで円のGraphicsPath を作る方法ない?
ウインドウの形を指定するファイルに使うつもりなんですが。
上の例のファイルを指定された場合は丸いウインドウを作ると。
105 :
デフォルトの名無しさん:05/03/05 04:21:37
>>103 1.画像を走査して境界検知
2.境界点の位置を元に座標作ってGraphicsPathのコンストラクタに渡す
とかなるんじゃないかな。
そんなマニアックな関数ないと思うYO
画像処理を勉強して自作
108 :
デフォルトの名無しさん:05/03/05 13:09:03
c#で指定時刻に音が出るプログラムを作りたいのですが
*.wavといったデータから音を出すにはどうすればいいでしょうか
それが難しければ、ビープ音を出すにはどうしますか。
>>108 .net framework 2.0 ならば
System.Windows.Forms.SystemSounds.Beep
ってのがある
1.1 において一番コーティングが楽なのは、MDX 使って
new Microsoft.DirectX.AudioVideoPlayback.Audio("ファイル名", true);
の一行
>>108 長々書いてたら先越されたw
それ以外のアプローチを示しておこう。
・Process.Startでファイルを実行させる
・Microsoft.VisualBasic.dllを参照してMicrosoft.VisualBasic.Interaction.Beepメソッドを呼び出す
(ただしこれは音の長さも周波数も設定できない、極めて簡単なもの)
・Win32APIのBeep関数を使う
・Win32APIのPlaySound関数を使う
>>109 .NET 2.0なら勧めるのは寧ろSystem.Console.Beepメソッドじゃないかなーとか。
System.Windows.Forms.SoundPlayerクラスとか。
TabControlがリサイズ時に禿しくチラつくのは私の環境だけですか?
1.FormにTabControlを追加
2.TabCntrolのDockをFillに設定
3.TabPagesを2つ3つ追加
これで実行すると、ウィンドウをリサイズするたびにタブがちらついてしまいます。
ダブルバッファリングを有効にしてもダメでした。。。
113 :
108:05/03/05 13:55:40
もうこんなにレスが.....
Win32APIのPlaySound関数というのは当たりをつけていたのですが
DllImportのやりかたとか自信がなく図書館で4冊ばかり借りてきても
サウンド関係、DllImport、ビープなど全く目次や索引にないようでした。
今は「きつねとけい」をメインに使っているのですが30分おきしか
鳴りません。
http://www.yk.rim.or.jp/~tara/
.NET Framework のドキュメントのほうが個人的に見やすい……
117 :
108:05/03/05 15:05:18
>>110 を参考に(というかコピーして)
テストしています。いまのところビルドまでは
うまくいくのですが、実行エラーが出るのです。
110のサンプルの中では、dll名が"coredll"と
なっているのでPlaySoundが入っているdll名を
探しているところです。
>>103 http://www.geocities.com/Paris/LeftBank/1160/download.htm How to create a region from a bitmap ?
A Visual Studio 97 (MSDev 5) project which demonstrates
how to use ExtCreateRgn() and SetWindowRgn() to create
a region from the non "transparent" pixels in a bitmap.
[ 160 lines in one .cpp for the BitmapToRegion() function]
>>119 おお!帰ってきたらテストします。ありがと。
121 :
108:05/03/05 16:27:50
>117
winmm.dll で動くようになりました。
とりあえずボタンを押せばサウンドが鳴るようになりました。
ちょっと便乗しまして質問を・・・
サウンドの再生方法はわかるのですが、
リソースに追加されたファイルを再生するにはどうしたらいいのでしょうか??
>>123 Win32APIのPlaySoundの話と仮定する。
・マネージドリソース(.resources)または/resで追加したファイル(VSでは埋め込まれたリソース)の場合
バイト配列に読み込んで、
pszSoundパラメータにバイト配列を、
fdwSoundパラメータにSND_MEMORYを指定してPlaySoundを呼ぶ。
・/win32resで追加した.resファイルの場合
pszSoundパラメータにエイリアス名を、
hmodにMarshal.GetHINSTANCEで取得した値を、
fdwSoundにSND_RESOURCEを指定してPlaySoundを呼ぶ。
見直したら.resourcesもどうせ/resで追加するんだから、「または」から前の部分いらないや……。
>>124 -
>>125 レスどうもありがとうございます。
ファイルをバイト配列に入れたり、
バイト配列を再生することはできたんですが、
リソースを扱うことが出来ません・・・。
a.exeというソフトにb.wavというファイルを埋め込んだ(ID:1)場合、
どのようにすれば取り出せるんでしょうか??
System.Reflection.Assemblyで取り出せるのかなと思ったのですが。。。
ちなみにこんなコードを書きました
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
System.IO.Stream stream ;
System.IO.BinaryReader breader ;
stream = assembly.GetManifestResourceStream("a.b.wav") ;
breader = new System.IO.BinaryReader( stream ) ;
byte [] data ;
data = breader.ReadBytes( (int) stream.Length ) ;
この後byte配列を再生しようとしました
たびたび申し訳ないのですが、ご指摘よろしくお願いします
悪くないと思うが。
byte[]にデータは入ってるんだよね?
なら後はPlaySoundの方の書き方の問題かも知れない。
……と言っても悩む余地もないところだがなぁ。
>>124 > バイト配列に読み込んで、
> pszSoundパラメータにバイト配列を、
> fdwSoundパラメータにSND_MEMORYを指定してPlaySoundを呼ぶ。
SND_ASYNCもつけてGCが動いて死んでみたりするので、この方法はやめた方がいいかと。
安全にするにはGCHandleで固定化したアドレスにしなきゃいけないし、
SND_ASYNCをつけないならPlaySoundの呼び出しがブロックされるとかなり使いづらいし。
129 :
デフォルトの名無しさん:05/03/06 20:10:08
一旦、
string[] sample = new string[10]
とやった文字配列sampleのLengthを追加することってできますか?
プロパテまたはインデクサ 'System.Array.Length' は読み取り専用なので割り当てすることはできません。
意図がわからんな。
ま、頻繁に操作する文字列ならStringBuilderつかっとけ。
MSの言によると5回以上操作するなら大体のケースでstring作り直すより早くなるそうだ。
132 :
デフォルトの名無しさん:05/03/06 21:22:05
どこに質問するべきなのか微妙なのですが、一応、いつもお世話になっているこちらで質問させて頂きます。
よく、掲示板などのCGIファイルのURLの末尾に「?」を付けて変数を渡しますよね?
つまり
bbs.cgi?name=克也
って感じです。
これを
Process.Start("
http://xxxxx.com/bbs.cgi?name=克也");
みたいにやって、IEで開けば問題ないのですが、
WebClient.OpenRead使って同じように「
http://xxxxx.com/bbs.cgi?name=克也」からダウンロードしようとすると見事に文字化けしてしまうのです。
掲示板のページ自体はS-JISでして、IEを使ってURLを開く場合は恐らく勝手に変換しているのでしょうが、
WebClient.OpenReadを使うと見事にUTF8で送信してしまうために、
掲示板をみても見事に文字化けをしてしまいます。
(実際、IEのエンコードでUTF8にすれば自分の書き込みした部分だけは正常に見れます。)
いろいろ考えたのですが、なにぶん、未熟者故に・・・
どうかご助言の方を宜しくお願い致します。
>>132 System.Web.HttpUtility.UrlEncode
こんばんは
プログラム中で、自プログラムがあるディレクトリを取得する方法ってありますか?
135 :
132:05/03/06 21:29:13
早速本当に有り難う御座います!
>>134 System.Windows.Forms.StartupPathかな。
System.Reflection.Assembly.GetEntryAssembly().LocationからPath.GetDirectoryNameした方が確実かな?
137 :
132:05/03/06 21:35:31
>>136 Application.ExcecutablePathはどうよ。
>>136 あ、できました。。ありがとうございました。
140 :
デフォルトの名無しさん:05/03/06 22:57:22
GUIまわりのテストFrameWorkってないんですかね?
NunitでGUIテストもできるのかな?
>>140 GUIまわりのテストって殆どの場合、目視確認じゃないか?
というのは、GUIなんだから見た目の問題だろ?
どの値を引数で渡したからどの値が返ってくるってもんでもないよな?
>>129 数が不定の場合は、ArrayListで作っておいてToArray()汁。
C#の勉強で、ファイルの情報を得てそれを表示するという簡単なプログラムを
作ってるんですが、よく分からない点があるので教えてください。
textBoxにパス名を入れ、listBoxにそのフォルダ内のファイルを表示し、リストアイテムを
右クリックでcontextMenuを出しそこのサブメニューにサイズやら日付やらを表示しようとしてます。
リストを右クリックしメニュー出す所までは来ましたが、そこから先に行こうとして
よく分からない現象に遭遇してます。
最初に右クリックで選んだときはちゃんと表示されますが、次に別のファイルを
選んでも最初のファイルの情報が表示されるのです。ブレークポイントで確認して
menuItem.Text = 〜; のように新たに代入してるはずなのに、実際には変わってません。
メニュー関係で気をつけるべき点などあれば教えてください。
メニューに表示するのが間違いとかいうのは重々承知してますが…。
>>143 あり得ないUIだな……。
関係ないMenuItemを操作してるだけだろう。
その場でnewしたやつとか。
コードがないからどうとも言えないが。
モニタの解像度を変更することはできますか?
複数のPNGを重ねて使いたいのですが、PictureBoxの枠の色が表示されてしまいます。
画像をうまくレイヤーとして使うにはどうしたらいいのでしょうか?
>>145 Win32API使わないと無理じゃないかな。
EnumDisplaySettingsとChangeDisplaySettings。
>>146 枠の色?
詳しく。
>>147 透過されて欲しい場所に不要な色が付いてしまっているのです。
ならばとBackColorやBackgroundを指定すると、確かに透過はされているようなのですが
PictureBoxではなく、それを配置したFormやUserControlを背景に表示したいんです。
訂正
×Background
○BackgroundImage
>>146 無理してビルトインクラスを使わずに、DCに直描きしたほうが楽になれるよ。
よくわからんが、PictureBoxのBackColorをColor.Transparentにするんじゃダメなの?
>>151 ヤッターできたよ。どうもありがとう。
>>150 そうしようとGraphics描画に変更しかけてた。
153 :
デフォルトの名無しさん:05/03/07 18:21:16
Delphiから移転してきた者です。
今まで作っていたプログラムをC#に移行しはじめているのですが、
最近疑問に思うのはC#で作られたプログラムは動作は十分速いのですが、
メモリの消費が桁違いということです。
Delphiで作ったプログラムの消費メモリが5MBのときに、C#のプログラムは20MBほど使用しています。
処理速度を云々するプログラムではないので、若干スピードが落ちても構いませんので、
消費メモリを少なくする方法なないのでしょうか?
一応、やっとWin2kが動く程度の非力なマシンでも動かしたいソフトなので・・・
あきらめなさい(マジレス)
C# + .NET Framework で作成した EXE を DLL のように、
別のプログラムからインスタンスを生成して実行する事はできないでしょうか?
EXEとしてダブルクリックして起動したい場合もあれば、
別のプログラムから、インスタンスを生成し、かつコンストラクタの引き数に
値を渡してそれを元に処理したい、という事がやりたいんです。
コンストラクタをオーバーロードしているだけなので
できれば 1つの実ファイルとしてまかないたいのですが、
無理でしょうか?
できるよ。.exeと.dllはダブルクリックで起動できるかどうかの差ぐらいしかないし。
ただしVS.NETの制限で、直接参照設定する事ができないので、
VSを使う時は.csprojにReference要素を自分で追加する必要があるけど。
>>156 いろいろいじってみた。
……ソースには問題ないね。
理屈上はこれで正しく動作する。.NET 2.0では実際正しく動作する。
どうも.NET1.0/1.1のContextMenu.Showにバグがあるようだ。
キャッシュされたのがいつまでも表示され続けてしまう。
listBox1のContextMenuプロパティにcontextMenu1を設定して、
contextMenu1.PopupイベントでTextの書き換えを行うようにすれば回避はできる。
>>153 .NETのアプリでメモリ使用量を気にするのは意味のない行為。
ちょっと調べればすぐわかること。
俺の予想だとLonghornあたりから
タスクマネージャで見たメモリ使用量が
マネージコードに関しては1/10に表示される機能がつくから
それまでがまんする。
セットアッププロジェクトをビルドしたら、下のようなファイルが出来たのだけど、
配布すときは、Setup.msiを渡せばいいの?
InstMsiA.Exe
InstMsiW.Exe
Setup.Exe
Setup.Ini
Setup.msi
>159
各.NET環境との比較までしていただいたようで、お手数をお掛けしました。
やっと目的の動作をするようになりました! 多謝です。
>162
Setup.exe
Setup.msi
Setup.ini
がいるような希ガス
試しに別のフォルダに入れて個別に実行したら
Setup.iniがないとか言って怒られたような・・・
>>165 今、試してみました。
msiだけを別フォルダにいれて実行したら、一応インストールされました。
(ほかの環境ではうまくいくかわかりませんけど)
>166
じゃあmsiだけでいいんじゃない?
@ITに記事があったと思うんだが見つからないorz
>> 158
ありがとうございます。できましたー。
>>168 そういうページがあったんだ。
まず、検索すべきだった。
めんどくさくてヘルプも調べず検索もせず、試行錯誤で
インストーラーを作ったけど、かえって時間も無駄だった。
171 :
デフォルトの名無しさん:05/03/08 10:42:32
GraphicsPath.GetBoundsで取れない?
PictureBoxとGraphicsに関する質問なのですが、
OnLoad時だとPictureBox.CreateGraphicsを取得して、Graphics.Draw〜をしても反映されません。
それ以外のイベントでは出来てるのですがどうしてなのでしょうか?
できればCreateGraphicsから得られるものに統一したいです。
現在の対処としてはGraphics.FromImage(PictureBox.Image)を使ってるのですが
これだと今度はOnLoad以外のイベントでは無効となってしまいます。
OnLoadはForm.OnLoadです。
>>173 PictureBox.Imageに対して描画するのとPictureBoxに対して描画するのは全く別の行為であるというのは認識してる?
>>175 OnLoad以外のイベントではGraphics.FromImage(PictureBox.Image)でDraw〜が使えないのですが。。
ごめんなさい。PictureBox.Refreshすれば反映されました。
g.FillRectangle(Brushes.Transparent, 0, 0, 20, 20);
g.DrawString(str, msgFont, Brushes.White, 0, 0);
Imageに文字を書く際、背景を透明に塗りつぶしたかったのですが出来ません。
Brushes.Blackなど実際に色を持つものなら可能なのです。
解決法を教えてください。
透明な四角形を描いたって事になったんじゃないか?
Graphics.CompositingModeとか。
textBox1でenterキーを押した時にbutton1を押すにはどうしたらいいですか?
ボタンを押すのも、button1_clickを呼ぶんじゃない方法が
@ITかどこかで読んだ気がするけど忘れちゃって
Buttonのメソッドを舐めるように見れ。
Control.Disposeされた時に通知を受けるイベントってありますか?
Form.OnCloseのような感じで使いたいのです。
Disposeじゃデストラクタ呼ばないようですし。
protectedのDispose(bool)をオーバーライドするのが確実じゃないかな。
>>184 うーん、Disposeはoverride出来ないようですね。
ポリモーフィズムが使えない。
え?
Control.Dispose(bool)はvirtual(正確にはComponent.Dispose(bool)がvirtualで、Control.Dispose(bool)はそのoverride)だよ?
>>186 ああ、なるほど。Disposeは普通のメソッドで、Dipose(bool disposing)がvirtualなのね。
内部でDispose(true)を呼び出すからoverrideするのはDispose(bool)と。
同じオーバーロードは同じ修飾子を使っていると思い込んでいた。
ありがと。
C#でしかできない、できにくいことってありますか?
ゲームを作るうえで
別にないんじゃない?
190 :
デフォルトの名無しさん:05/03/08 21:53:32
うん、どうしてもってところだけC++とかで書けば良いんだし・・・
C#だけっていうなら弱点はあっても、C#をベースに所々にCとかを入れれば
まず大丈夫だねw
191 :
デフォルトの名無しさん:05/03/08 23:30:08
すいません、質問です。
ListViewでViewをDetail,Scrollableをfalse,Anchorを上下左右にしてFormにはりつけて
Formをリサイズすると、ヘッダが最初に表示されている領域しか描画されないのです。
解決法をどなたかご存知ありませんか?
リサイズが終わった時点でReflesh()、Invalidate()などを行ってもヘッダ領域の描画は回復されませんでした。
C#
193 :
デフォルトの名無しさん:05/03/09 01:16:13
C♭
.NET2まだ?
まだ。
>>191 Scrollableを一時的にtrueにしてまた戻すととりあえずどうにかなることはなるが。
N項の関数を無項関数に変換するのメンドウじゃない?
198 :
デフォルトの名無しさん:05/03/09 07:53:14
なんか噂だとLongなhornとかいう次世代なWinなdowsでWinなAPIがなくなってC#をWinなdowsはより親密になる
っていう噂と聞いたのですがホントですか?
>>198 デマです
COM、COM+、OLE、ODBC、CORBA、RPC
いつの時代もペンテ師がいて、新技術習得に献金するよう
世間を扇動してるだけです。
もう1つは、次世代のWindowsといわれるLonghornへの対応です。
Longhornの多くの部分はVB.NETが生成するコードと同じマネージ・コードで書かれているといわれています。
つまり、LonghornというOSと、VB.NETで作成されたプログラムはダイレクトに接続され、最も効率よく動作することになります。
現在は、VB.NETで作成されたプログラムはクラス・ライブラリとWin32 APIを経由してOSの機能を呼び出していますが、
LonghornからはWin32 APIを経由することはなくなると思われます。
さらに、Longhornの新機能はWin32 APIではアクセスできず、Longhornのクラス・ライブラリを経由してアクセスするのではないかと思われます。
もちろん、そのようなアクセスは、VB.NETならたやすく達成できるでしょう。
Longhornの能力をフルに引き出すならVB 6からVB.NETに乗り換える必要がある、ということになるかもしれません。
http://www.atmarkit.co.jp/fdotnet/vbcheer/vbcheer09/vbcheer09.html これのこと云ってるの?
だからマーケティングのデマだって
2000年から.Netを普及させるために煽ってたけど
最近になってロングホーン自体の存在が危うくなってきた
いつものことだな
int idx;
string str;
string [] week =
{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
for (idx=0; idx<week.Length; idx++)
{
str = str + week[idx] + "\n";
}
label1.Text = str;
label2.Text = week.Length.ToString();
という単純なものを作成してみたのですが
未割り当てのローカル変数strが使用されました
と出てきます。
2行目で
string str;
としているので未割り当てではないと思うのですが
何か間違っている所がありますでしょうか?
未熟すぎる私にどなたかアドバイスをいただければと思います。
宣言 != 割り当て
空文字列でも入れとけ。
空文字列は = "" ではなく = string.Empty を推奨汁
そのココロは?
どこかでこっちの方がいいって書いてた
試しに
public static void Main() {
string empty1 = String.Empty;
string empty2 = "";
}
としてみたら
warning CS0219: 変数 'empty2' は割り当てられていますが、その値が使用されていません。
と言われた。
どちらかというと "" の方がいい気がするのですがいかがなものでしょう。
これ比較するときの話でしょ?
とは言えEmptyの方が分かりやすいくていいかも
>>210 おぬしは
>warning CS0219: 変数 'empty2' は割り当てられていますが、その値が使用されていません
の意味を良く分かっていないような気がする
>>212 そのまま「変数宣言するだけしておいて放っておかれてるのがあるよ」っていう意味じゃなくて?
よけいなコードは残しておかないようにする時は警告出された方が嬉しいと思ったんだけど駄目ですか。
String.Empty でググってみたら色々出てきて
""よりもString.Emptyの方がメモリが(中略)でいいらしい
>>213 ああ、そういう意味ね
チェック目的ならばそれでも良いかもしんないな
>>202 longhorn開発中止かもしれないの?
>>216 >>202が言いたいのは、Longhornは鋭意開発中だけど目玉機能が削られすぎて
新世代OSとは云えないじゃん、という嫌味なんじゃないの?
個人的には多くのことをマネージドコードで書けるようになるのは大歓迎だけどね。
生産性が高まりそう。
単発の質問で申し訳ありません。
テキストボックスなどはボーダースタイルを3Dやシングルなどにできますが、
コンボボックスはデザインを変更できないのでしょうか?
無理って云ったら?
222 :
デフォルトの名無しさん:05/03/09 20:41:24
ファイル(&F)とかにするとショートカット追加できますが、
これを → キーとかに対して行いたい時はどう書けばいいんでしょうか?
223 :
デフォルトの名無しさん:05/03/09 20:41:59
こんにちわ、初めまして、C#を始めたばかりの学生です。
あるボタンを押すとテキストボックスの文章の末尾にフォーカスを移動させたいのですが、
テキストボックスにフォーカスを移動させることはできるのですが、
文章の末尾に入力を持ってくることがうまくできません。
ご助言の方、どうか宜しくお願い致します。
>>222 KeyPreviewとKeyDownとで自前実装。
>>223 SelectionStartが現在のキャレット位置に対応する。
SelectionLengthも気をつけて。
ぁぅ 急にめんどくさくなるんですね。
今回はスルーします。
ありがとうございました。
226 :
223:05/03/09 20:59:06
一応、むちゃくちゃですが、
TextBox1..Select(TextBox1.Text.Length,0);
っとやることでできました。
>>226 それも正しいよ。無茶苦茶じゃない。ピリオドが一つ多いけどなw
不明なモジュールでNullReferenceExceptionが発生しました。
ソースコードの位置は特定できません。
スタートアッププロジェクトを変えると、たまにこのようなエラーが起こりませんか?
しかも、デバッグ実行の時のみで継続すると普通に継続できてしまう。。
このエラーが起こった人いませんか?
>228
再インストール推奨。
>>228 ネイティブコードのデバッグを有効にしてデバッグしてみたら?
stringの初期化って、nullじゃダメなのかな?
クラスフィールドはnullで初期化されるので
俺はいつもnullでやってるんだが。
みんなはstring.Emptyでやってるの?
""
233 :
デフォルトの名無しさん:05/03/10 17:02:40
string.Empty
の方が速いって↑の方で云ってたなぁ
だから昨日とか今日もstring.Emptyにしてる。
それ以前はstring abc = "";だったw
そんなものコンパイラがなんとかしてよと思ったけど
そうできないような違いが""とstring.Empryにはあるのか?
質問なのですが、
どなたかmldファイルを再生する方法をご存知じゃないでしょうか?
すいません。
DataGridで特定カラムのFocusを飛ばすって出来ますか?
DataGridTextBoxColumn.TextBox.TabStop=Falseだけじゃ上手く行かないので。
CurrentCellChangedで監視。
前回の位置を保存しておいて、それを基に移す場所を決定。
238 :
デフォルトの名無しさん:05/03/10 22:00:46
ずっと.NetFramework1.1使いつづけてきたんですが
1.1SP1にバージョンあげても問題ないでしょうか?
不具合が出たとか聞いたんですが。
それはバージョンを上げるとは言わない。
私はSP1を当てて問題出てない。
240 :
デフォルトの名無しさん:05/03/10 23:00:23
>>235 MIDIに変換するC#のコードがどっかで公開されていた。
んでMIDIに変換してからWindowsMediaPlayerのコントロールに渡せばよくない?
Cマイナー
キーボードの同時押し(↓+→+Z とか)を取得する方法があったら教えてください
DirectInput使うのは癪なので、.net frameworkでやりたいんですが
キーボードの同時押しは保証されないとかどっかで読んだ気が。
いずれにせよ.NETのライブラリの範囲じゃ無理。
APIのGetKeyboardState関数かな?
244 :
デフォルトの名無しさん:05/03/11 00:01:23
>>223二関連して
RichTextBoxでフォーカスがない時にScrollを一番下にするにはどうしたらよいのでしょうか?
SelectionStart= TextLength;
ScrollToCaret();
みたいにしても無理のようで(このメソッドではキャレットの位置はフォーカスがない時には移動されないようで)
RichTextBoxにバックグランドで長々と文字列を書き込むことを想定しているので、どうしたものかと・・
>>242 オイオイw、意外とWM_KEYDOWNとか見て無いんだよなw
>>240 MediaPlayerのコントロールの存在に気付きませんでした。
これからmidi変換のソースを探してみます。
本当にありがとうございました。
おおお、まさにこれかも。試してみます。ありがとうございます。
>>242 キー押された時間を取得してやればいい
check = Math.Abs(arrowdown-arrowright);
check2 = Math.Abs(arrowdown-keyz);
if (Math.Abs(check-check2) < 100) {
//statement
}
ちなみにオートブレーキセーフティじゃないぞ
>オートブレーキセーフティ
>オートブレーキセーフティ
>オートブレーキセーフティ
if (arrowdown > arrowright) {
max = arrowdown;
min = (arrowright > keyz) ? arrowright : keyz;
} else {
max = arrowright;
min = (arrowdown > keyz) ? arrowdown : keyz;
}
if (max-min < 50) {
}
こっちのがいいか
>>250 Anti-lock Braking Systemな、マジレス。
マジレスで返されても困るけどな
昔CMであったから言っただけなのにw
255 :
デフォルトの名無しさん:05/03/11 07:19:34
デザイナーでレイアウト時と実行時をUserControl側で判断する方法はないですか?
UserControl側でthis.DesignModeを使ってLoad時に判断しようとしてもうまくいきません。
そのUserControl編集中はうまく判断できるのですが、
UserControlをFormに貼り付けるとうまく判断されないのです。
C#初心者です。
変数の宣言とか、関数の戻り値にnewとかつけますよね。
newをつけるときと、つけないときは、どう見ればわかりますか?
class Class1{
public override string ToString(){
return "aaa";
}
}
class Class2{
public new string ToString(){
return "bbb";
}
}
////////
Class1 a = new Class1();
Object b = new Class1();
Class2 x = new Class2();
Object y = new Class2();
Console.WriteLine(a.ToString());
Console.WriteLine(b.ToString());
Console.WriteLine(x.ToString());
Console.WriteLine(y.ToString());
>>255 フォームのデザイン時にも、UserControl側のif (DesignMode)の部分が実行されるが。
259 :
デフォルトの名無しさん:05/03/11 15:31:11
Pointのような値型にはnullが代入できないのって不便じゃないですか?
ごく希に不便を感じるが、なれればどうと言う事も。
.NET 2.0のNullableも面白いとは思うがどう実用するかというとDBNullに対応する以外に余り思いつかない。
261 :
デフォルトの名無しさん:05/03/11 18:07:56
private void _btnPrint_Click(object sender, EventArgs e)
{
prndoc.PrinterSettings.PrinterName = (string)_listPrnNames.SelectedItem;
prndoc.PrinterSettings.Copies = 1;
foreach (PaperSource ps in prndoc.PrinterSettings.PaperSources)
if (ps.SourceName == (string)_listPaperSource.SelectedItem)
prndoc.DefaultPageSettings.PaperSource = ps;
foreach (PaperSize ps in prndoc.PrinterSettings.PaperSizes)
if (ps.Kind == PaperKind.A4)
prndoc.DefaultPageSettings.PaperSize = ps;
prndoc.DefaultPageSettings.Margins.Left =
(prndoc.DefaultPageSettings.PaperSize.Width - 2677 * 100 / 400) / 2;
prndoc.DefaultPageSettings.Margins.Right =
(prndoc.DefaultPageSettings.PaperSize.Width - 2677 * 100 / 400) / 2;
prndoc.DefaultPageSettings.Margins.Top =
(prndoc.DefaultPageSettings.PaperSize.Height - 3880 * 100 / 400) / 2;
prndoc.DefaultPageSettings.Margins.Bottom =
(prndoc.DefaultPageSettings.PaperSize.Height - 3880 * 100 / 400) / 2;
prndoc.Print();
}
262 :
デフォルトの名無しさん:05/03/11 18:09:53
private void prndoc_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
Image image = Image.FromFile(fileinfo[number].FullName);
Rectangle rect = new Rectangle();
// myrect(image, rect);
g.DrawImage(image, 0,0, 667, 970);
// g.DrawImage(image, rect.X, rect.Y, rect.Width, rect.Height);
if (++number < _listFilenames.Items.Count)
e.HasMorePages = true;
else
e.HasMorePages = false;
}
Microsoft PhotoEditorから印刷するよりも
このようなソースで印刷する方が、圧倒的に処理時間が長いんですよ。
PhotoEditorの印刷と、C#2.0での印刷って、そこまで違うもん
なのですか?PhotoEditorをなんらかのDLLでファイルオープンから
印刷まで操作できるのなら、それも良いのですが・・・・
263 :
デフォルトの名無しさん:05/03/11 22:18:33
オーディオファンの皆様に朗報です。
たった1000円で皆さんのオーディオ機器を見違える程にバージョンアップ!
スピーカー、ヘッドフォン、アンプ、ケーブル、更にはiPodにまで使えます!それがエージングCDというモノ!
エージングとは新しいオーディオ機器を慣らすことです。
オーディオ機器は買った当初は音がなじんでおらず、
たいていの場合、音が硬かったり、こもったり、ヌケが悪かったりします。
スピーカーの場合、エッジやダンパーの張りの不均一、接着剤の乾き具合、コーンのよじれなどが原因だと言われています!
兎に角凄いCDです!そこらへんの同じようなCDよりも全然違います!
実際、私が試した時には新品のスピーカーは音が自然になり、
使い古したスピーカーも音の抜けが良くなり、当分買い換える必要がないなっと思った程です。
普通に使っていればエージングなんて不必要だと思う方もいますが、それはある意味、非常に残念な事だと思います。
エージングは進行が可逆的な為に定期的にエージングや消磁などをしないとどんどん音が濁っていくからです。
オーディオファンの皆様ならこの音の変わりようを『耳』で体感できるはずです。
http://openuser10.auctions.yahoo.co.jp/jp/user/voyager_820? まずは1回試してみてください!
ポートをListenするUserControlでDesignModeの時に実行させたくないんですが
そのUserControlを他のUserControlに貼り付けて、それをFormに貼り付けると実行されてしまうのです。
if(!DesignMode){
this.ServerComponent.ListenStart();
}
みたいにしてるんですけど。デザイン時にポートがListenされてしまう・・
>>264 if(LicenseManager.UsageMode != LicenseUsageMode.Designtime && !this.DesignMode) {
とやってみる。
DesignModeプロパティが効かなくてもLicenseManager.UsageModeは効くことがある。逆もある。
でも、どっちも効かない場所もある……
DesignModeプロパティはコントロールがロードされる前など、コンストラクタとかではまず使えない。
267 :
デフォルトの名無しさん:05/03/12 02:18:04
Formでボタン1で処理を実行し、Form上のTextBoxに経過を表示しする
そして、何時でもボタン2で中止するような物を作りたいのですが
ボタン1で処理をBeginInvokeで記述しようとすると、中止することができないのです。
どのようにしたらよいのでしょうか?
//Form内にて・・・
MyWebService webService = new MyWebService();
ThreadStart threadStart;//ThreadStartデリゲートを流用
void doSomethingButton_Click(object sender, EventArgs e){ doSomething();}
void doSomethind(){
threadStart = new ThreadStart(doBody);
this.BeginInvoke( threadStart, new object[]{});
}
void doBody(){
richTextBox1.Text += webService.Test();
}
void stopProcessButton_Click(object sender, EventArgs e){
//?????????
}
>>267 ManualResetEventかAutoResetEventを用意して停止したいときにSetメソッドを呼ぶ。
停止される側のスレッドの処理では時々WaitOneを呼び出して停止状態に入ったか確認する。
だが、そもそも複数スレッドから画面のコントロールを操作するな。
なんかBeginInvokeを変に理解してね?
このコードじゃwebService.TestがUIスレッド上で行われる事になるんだが。
まさかTestメソッド内でスレッドを作ってるとかいう変態コードでもあるまいし。
この部分を別スレッドにしなきゃなんないんじゃ?
で、そのスレッドからBeginInvokeを呼ぶと。
んん、勘違いしてる?
>>だが、そもそも複数スレッドから画面のコントロールを操作するな。
そういわれましても。。
デリゲート先が同期か非同期かわからなかったりするもので、スレッドは2つになってしまう可能性があるのです。
例えば、
Form1(){
//.....
HeavyProcessEngine hpe = new HeavyProcessEngine();
hpe.Progress += new MyEventHandler(doSomething);
}
void doSomething(object sender, MyEventArgs evt){
if(InvokeRequired)[
this.BeginInvoke( new MyDelegate(evt) , new object[]{evt});
}else{
doBody(evt);
}
}
void doBody(MyEventArgs evt){
richTextBox1.Text += evt.Message;
}
>>268,269 ありがとうございます。
>>269 267のコードではBeginInvokeいらないですね。。
やっぱり、変に理解しているかもしれないですけど。
#とりあえず、処理を中止する感じのコードはこんなになってしまいました。
//Form内にて
private delegate void MyDelegate(string text); Thread thread;
void doSomethingButton_Click(object sender, EventArgs e){ doSomething();}
void doSomething(){
doSomethingButton.Enable = false;
thread = new Thread(new ThreadStart(threadBody));}
void threadBody(){
try{
MySocket socket = new MySocket();
socket.ListenStart();//60秒以内にコネクトがないとTimeoutExceptionを発生
}catch(Exception ex){
threadSafeMethod( ex.ToString());}
}
void threadSafeMethod(string appendText){
if(InvokeRequired){
this.BeginInvoke(new MyDelegate(_appendMethod), new object[]{appendText});
}else{
_appendMethod(appendText);}
}
void _appendMethod(string appendText){
richTextBox.Text += appendText;
doSomethingButton.Enable = true;
}
void stopProcessButton_Click(object sender, EventArgs e){
thread.Abort();//<なんかダメッポ・・
}
ManualResetEvent系 勉強せねば。。
272 :
デフォルトの名無しさん:05/03/12 16:39:29
初めまして、.net入門者です。
今まで、自宅サーバーでPerlを動かしていたのですが、
この度、C#を勉強することとなり、少し疑問に思ったことがありますので質問させてください。
自宅サーバーでホームページを公開する際、通常はCGIとしてPerlやPHPを使用しますが、
C#は使用できないのでしょうか?
また、ASP.netとC#の違いについてご教授をお願い致します。
その程度自分で調べようとは思わないの?
書き忘れた。
C#でCGIも可能だけど、普通はしない。
ASP.NETアプリとして作ります。
普段はC#でプログラム組んでるけど、Webアプリに関してはPHPを支持する。
277 :
デフォルトの名無しさん:05/03/12 18:47:28
PHP(プッ
さっそく釣られてるよ。馬鹿だ
あるDLLのAPIが何らかのハンドルを返し、
失敗したらNULLを返すという動作をしてるのですが、
これをC#で戻り値がNULLかどうか判定するとき
if (handle.Equals(null))
とするのは正しいのでしょうか。
(CとかC++の)NULLの定義は((void *)0)とか0とか色々
書いてあってよく分からず、0ならば(handle==0)という式の方が
良いのかなーとか混乱してきました。
ハンドルは.NETではSystem.IntPtrで表す。
System.IntPtrは構造体なわけで、null値は取り得ないってのは分かるね?
Windowsではハンドル値NULLは0の再定義。
あとはIntPtrのフィールドを良く読め。
>280
即レス感謝です。
nullって参照型なんですね。構造体は値型と。
そして IntPtr.Zero を参照したところ、そのものずばりなコード例が
ありました。ありがとう。
282 :
デフォルトの名無しさん:05/03/13 22:48:44
2173が3ヶ月待ちなんてありえませんが
普通にどこの量販行っても3割引で在庫たっぷりだよ
で、それはさておいてこのモデルは本当に買いだと思いますよ。
電波ソーラーじゃなくても秀逸な国産時計。
性能+作りがいいのに88200円で買えるなんて至福です。
革だから嫌とか言う奴は一年中同じ時計一本ですか?
過疎化してるからって意味不明なこと書くなよ
284 :
282:05/03/13 23:23:19
うわぁ!ここだったか・・・
誤爆しました、申し訳ない。
VS.netで開発しているのですが、
起動時の引数 Environment.GetCommandLineArgs
がある状態のデバッグをしたいのですが、どうすればいいのでしょうか?
わけわからん。
ブレークポイントの条件式でも書けば?
>>285 昔のバージョンはデバッグ用に引数を指定できる機能があったから、
今のVSでも、探せばあると思うけど。
時計板の連中は資本家なので嫌い
>>285 プロジェクトのプロパティ→構成プロパティ→デバッグ→コマンドライン引数
のことでは。
しまったそっちの話か……orz
291 :
デフォルトの名無しさん:05/03/14 16:20:50
httpsサーバと通信するソフトを作りたいんですが
どこかに良い解説サイトありませんか?
httpは分かるんですがhttpsは分からないんです
認証とか暗号化とか
普通にHttpWebRequestを使えばいい話だが。
C#でタスクスケジューラーにタスクを追加したいのですが、
Win32_ScheduledJob
とやらを使うということしかわかりません。
どうしたらいいんでしょうか?
WMI
Win32_ScheduledJobがWMIの一つのクラスってのはわかってるのですが、
サンプルを探してもVBでSWbemつかってるのしか見つからなかったので
C#でのサンプルコード等あれば助かります。
そこもみたのですが、タスク追加のやり方がわからないから
サンプルを探してるのですが…
プロセッサの情報を得るサンプルはほかにもありましたが、
C#で、Win32_ScheduledJobを使ってタスクを追加してるサンプルが
を探してます。
ManagementPath path = new ManagementPath( "Win32_ScheduledJob");
ManagementClass taskClass = new ManagementClass(path);
taskClass.InvokeMethod ("Create", obj);
でよくわかってないけどいけました…
ありがとうございました。
「名前を付けて保存」のショートカットのAって何の略なんでしょうか?
301 :
デフォルトの名無しさん:05/03/14 22:40:56
DataGridへバインドしたDataViewの再表示タイミングを
自由に設定できる方法をご存知の方いませんか?
(FlexGridのReDrawみたいな感じで)
RS232Cで50mm周期で受信したデータをDataViewへセットした
DataTableの行へ書き込むと(およそ100項目)
例外VersionNotFoundExceptionが発生してしまいます。
コードは大体以下のような感じです。
// RS232Cからの受信データをDataRowへ設定
// str_data_** は受信データ
// MyTableはDataView.tableへ設定済
DataRow dr;
dr = MyTable.Rows[0];
dr[0] = str_data_00;
dr = MyTable.Rows[1];
dr[0] = str_data_01;
・
・
・
dr = MyTable.Rows[99];
dr[0] = str_data_99;
DataRowが更新される度にDataGridが更新されてしまうので
全データをRowへセットしてから一括更新したいのですが。。
Visual Studio 2003 C# で開発しています。
コントロールに描画されるフォントに関して質問です。
MS UI Gothic, 9pt を指定しているコマンドボタンがあります。
デスプトップのプロパティにてフォントサイズを大きくすると
上記で設定してあるボタンのテキストまで大きく表示されてしまいます。
画面を 1024x768 を想定し、画面に端から端までボタンがのっているような
画面で、デスクトップのプロパティにてフォントサイズを大きくすると
フォントが大きくなるのと同時に、コマンドボタンの幅まで大きくなり
とたんに1画面に入らなくなってしまいます。
デスクトップのプロパティのフォントサイズの設定にかかわらず、
常に一定のフォントサイズ、コントロールの大きさを保つように
する為には何か注意しないといけないのでしょうか?
ちなみに、上記のクライアントは Windows 2000 です。
よろしくお願いします。
304 :
デフォルトの名無しさん:05/03/14 22:52:11
画像にしてボタンに貼り付けるとか・・・
307 :
デフォルトの名無しさん:05/03/14 22:57:33
mp3ファイルを速度を変えて再生するには何を使うのがいいでしょう?
Microsoft.DirectX.AudioVideoPlayback.Audioを使えば再生はできますが速度の変更ができません。
308 :
デフォルトの名無しさん:05/03/14 23:28:49
なんかワラタ
312 :
307:05/03/15 00:30:04
DataTableの中が現在以下のような状態にあります
Columnがaからgまで存在し、行数が5つからなるDataTableがあります。
このDataTableから以下のようなDataTableを作ることは可能なのでしょうか?
カラムのa,b,cだけからなるDataTableを作りたいです。
a b c
Row-1
2
3
4
5
>>301 一旦DataSourceからはずすとか?
SuspendLayoutとかBeginInitとか組み合わせたらどうだろう。
分割したいのですよ。
印刷するのに分割したデータに落としたいと思っています。
どう印刷するんだ?
そもそもDataTableをどう取得してるんだ?
DataTableをどう使用してるんだ?
分割できるか出来ないかが知りたいだけなのですが誰かわからないでしょうか?
誰かわからない以前に、意味がよくわからん。
DataTable新しく作ってほうりこんだらだめなのか?
315さんレスありがとうございます。
今日試してみます。
>>318 出来ない。 DataTableを新しく作って1行ずつコピーする必要がある。
DataSetを簡易データベースだと思ってる人が多いな。インターフェイスは
似ているが基本的にデータ転送オブジェクトだから使い方を誤ってはいけない。
ニーズはあるからそういうヘルパークラスは作ってもいいかもしれないが、
そういうのがあると今度は、メモリで処理できないくらいのデータを詰め込んで
遅いとか言ってくるのが出てきそうだ。
今でも1万件を超えるデータをDBから条件なしでDataSetに読み込んで遅いと
言ってるのがいるからな。
322 :
デフォルトの名無しさん:05/03/15 14:27:21
AxWebBrowserを使って、webページを表示しています。
web上のボタンをクリックしたときにサーバに送信しているデータを取得するにはどうすればいいでしょうか?
フォームでPOSTしているデータなら、BeforeNavigateイベントでpostDataを見れば分かる
ありがとうございます
しかしpostDataがどこにあるのかわかりません・・・
もう少し詳しくお願いします
ごめんなさいpostDataの場所はわかりました
が、ためしにyahooなどで、検索時に取得してみたのですが
何も値が入っていません。これはどういうことでしょうか?
YahooはGETだろ? アドレスの?以降にクエリ文字列が並んでる。
なんてかさ、HTTPの基礎をもう少しさぁ……。
あぁぁ、ごめんなさい
そうですね、基本的なこと忘れてましたすみません
postDataを使用しているサイトのデータを見てみたのですが
中身がbyte配列で格納されているのは正常なのでしょうか?
文字列として取得することはできないのですか?
前スレの319から100レスぐらい読め。
過去スレ見れないとか言う奴はにくちゃんねる行け。
はじめてにくちゃんねる知りました
今から過去ログ読んできます
330 :
デフォルトの名無しさん:05/03/15 17:10:09
FileSystemWatcherを使って、特定のフォルダを監視するアプリケーションを
作っています。
ウィンドウもコンソールも必要なく、サービスアプリにするほど大袈裟な物でも
ないのですが、どうしたら黙々とバックグラウンドで走らせることができるので
しょうか?
/t:winexe
Application.Run()
ここは肉ちゃんねるでした。
>>330 普通のフォームで作っておいてVisible=falseでフォームを隠す。
>>332 ずっと壷ちゃんねるだと思ってたよ。今旬なのは8チャンネル(笑)。
アルファチャネルを含むアイコンを正しく描画する方法はある?
P/Invokeを使わないのならColorDepthが32bitのImageListにアイコンを突っ込んでImageList.Draw()。
なおVisualStyleが有効になっていないとダメ。
そんだけでいいのか。
p/Invokeでがんばってたorz
338 :
デフォルトの名無しさん:05/03/16 13:00:09
TCPで簡易チャットを作ろうと思っています。
微妙な質問なのですが、文字を送る場合、
NetworkStreamでWriteするのと
StreamWriterでWriteするのではどちらが良いでしょうか?
前者はバイナリですし、後者はテキストですよね??(あやふやな記憶ですが・・・
>>338 前者はバイナリで、後者はテキストです
文字列を送る場合ならば Ascii または SJIS 指定の後者でどうぞ
昨日はありがとうございました
無事に解決することができました
もう一つ質問なのですがAxWebBrowserを使って表示しているwebサイト上で
Javascriptが実行されたとします。
その実行を制御することはできるのでしょうか?
341 :
デフォルトの名無しさん:05/03/16 13:40:17
>>338 どの段階でエンコード、デコードするかって問題だから、べつだんどっちでもいいような。
343 :
デフォルトの名無しさん:05/03/16 19:43:16
少なくともそれはDirectZでやってるみたいだよ
345 :
デフォルトの名無しさん:05/03/17 01:56:25
VBではPoint(X,Y)という関数で、座標(X,Y)の位置に表示されている色コードを返すのがあるんですが、
C#でこれに相当する関数を教えてください。
ActiveReportsを使用しているのですが、
印刷するオブジェクトが多い場合。
始めのページと次のページに跨ってオブジェクトが印刷されてしまいます。
これはどのようしたら直せるのでしょうか?
NewPage.Afterをしても発生するとき発生してしまい。お手上げ...
シリアルキー解析集「ALTEA」
大好評発売中!
http://openuser10.auctions.yahoo.co.jp/jp/user/dancexxx1960? 市販SOFTやオンラインSOFTのパスワード集です。
オークション関係から画像・OS・表計算・CAD・・・・etc
国内・国外のあらゆる分野のSoftを解析済です。
これを初めて手にされた時には、驚愕される事でしょう。
そして・・・手当たり次第にインストールを始める筈ですw
パソコンをご使用の方なら、必ず!満足されると思います。
解析結果のデータベースには15,000点を越えるパスワードが入ってます。
このパスワード集から検索するだけで、登録や制限解除が出来てしまいます。
シェアウェアを購入して、正規登録したのと同じ状態になります。
余りにもデータが多すぎる為、辞書引のようなパスワード検索SOFTで提供します。
シェアウェア以外にもパッケージ版をVectorなどでオンライン販売してるSOFTにも
多数対応しています。これらをダウンロードして無期限に試用する事も可能です(^^;
WindowsXPやOfficeなどのCDキー(プロダクトキー)ジェネレーターを使えば複数のパソコンに
インストールする事も可能です。デスクトップとノートPCなど2台以上持ってる場合は特に有効ですね。
オンラインSOFTを購入した経験は有りますか?
ありとあらゆる分野の優れたSOFTが、数多くありますよね。
しかし、ほとんどが試用期間や機能制限をして、「気に入ったら購入してください」です。
もう少し使いたいが使用期限切れで、削除・・・再インストールを繰り返していませんか?
349 :
デフォルトの名無しさん:05/03/17 16:53:13
おいおい、nyとかMXで出回っているpandoraを転売かよw
ALTEA?Michaelだろクズw
>>345 Bitmap myBitmap=new Bitmap(Filename);
Color myColor=myBitmap.GetPixel(X, Y);
ちょっとPCやネットを知ってる人間なら誰でも知ってるって情報がヤフオクではよく売られてるね。
ここに貼る意味がわかんねw
画像を読み込んだ後、4つの頂点を自由に設定して変形するようなメソッドってありますか。
GDI+だと線形しかなくて(´・ω・`)
ちったあ.NetSDKのファレンス読めやカス
>>356 読んで見つからなかったから質問したんだyp
warpじゃ実現できなかったし。
>>358 何が分からないのかが分からないが……。
> 17行目のX2してる意味がわからない
2倍したかったからだろ。
21行目で文字列の長さを見てるから、i>=5ならar[i]に入る文字列も2文字になる。(ar[5]は"10"が入ってる)
> 同時に文字列がnewされているらしいが
> なんでこれでnewになっているのか理解できない
ToString()メソッドの中でString型のインスタンスが作成されてるから。
ToString()の返値がその作成されたStringインスタンス。
>>359 newの部分はわかったのですが
X2している部分は要するに
X2する必要は何もないのだけれど
ただこの場合はたまたまX2しているだけであって
X2のような式はまったく必要ないということでいいんですか?
そだよ。
あと、直接式の返値のメソッドを呼ぶって意味のサンプルでもある。
だから別に(i + 5).ToString()でも(i * i * 5).ToString()でもなんでも良い。
362 :
デフォルトの名無しさん:05/03/19 01:05:54
格納したIPアドレスを1足したり引いたりしたいのですが、
どこかに情報ないでしょうか?
どこにどういう形で格納したのかも分からないのに答えられるわけ無いだろ。
364 :
デフォルトの名無しさん:05/03/19 01:53:41
>>362 IPをunitに変換して-1してからIPにもどせばいい
できないなら死ね
365 :
デフォルトの名無しさん:05/03/19 02:12:43
あれだ、仮にIPが192.168.1.1だとしたら
単純に文字「.」でSplitして、[3]が0なら10の位も変える
0ぢゃないなら[3]の数字だけ変えるってのはどうよ?
毎日ちょっとずつ総当りでポートスキャンするPGだろうからほっとけw
368 :
デフォルトの名無しさん:05/03/19 09:30:32
フォームのリサイズでDockプロパティを使わずに
textBoxとかもリサイズさせるのは
以下を追加するだけではないのでしょうか?
まったく変わりません。。。。
private void Form1_Layout(object sender, System.Windows.Forms.LayoutEventArgs e)
{
textBox1.Height = ClientRectangle.Height;
textBox1.Width = ClientRectangle.Width;
}
そのメソッドをLayoutイベントに追加したか?
>>359,361
わかりました
ありがとうございました
>> 369
これ自体がLayoutイベントではないの?
>>371 それ自体はただのメソッド。
オブジェクトのイベントに登録する事で、イベントが発生した時にそのメソッドが実行されるようになる。
で、VSの雷マークでやったならその登録が自動的に行われるんだが……。
まずどうやってこのメソッドを作ったのかな。
373 :
デフォルトの名無しさん:05/03/19 12:30:21
他のイベントを真似して作りました
なら、
フォームのデザイナを開いてフォームを選択して、
プロパティの雷マークをクリックしてイベント一覧を出して、
そこのLayoutイベントに作成したメソッドをいれな。
>>374 373は偽者ですが、確かにそのとおり^^
うまくいきました
ありがとうございました!
VB6でタイプライブラリを通じて他アプリを操作してました。
同様なことをC#でやりたいと思っているのですが、タイプライブラリ側が提供する
Variantを{引数|戻り値}とする関数はどう扱えばいいのでしょう?
単純にVariantをobjectにすればいいだけでしょうか?
それともケースバイケースの対応(≒.NETへの対応待ち)が必要になるのでしょうか?
まあobjectでやりとりすればいいんじゃね。
378 :
デフォルトの名無しさん:05/03/19 17:46:26
XPathDocumentを使わないといけないんらしんだけど、さっぱりだよぉ〜
root
+A
└1234
└5678
└7890
└0092
+B
└1234
└5678
└7890
└0092
+C
└5678
└7890
└0092
こんな風にrootにA,B,Cがぶら下がっててrんだが
XPathNodeIterator iter = nav.Select(@"/root");
でA,B,Cの3つのなまえとりたいんだけど
iterのカウントが1でちっとも取得できん〜
なにがわるいのかおせーて〜!
380 :
378:05/03/19 18:15:30
XPathNodeIterator iter = nav.Select(@"/root");
を
XPathNodeIterator iter = nav.Select(@"//root/*");
って書き直したら
iterに要素数の3は入りました!
が
A,B,Cの名前がまったくとれないっすよぉ。。。
rootって名前ばっかりとってきてしまう。。
>>380 iter取った後のコードを書いてみな。
382 :
378:05/03/19 18:32:07
以下の3行セット、計4パターンためしましたが
からっぽか、rootってはいっております。。。
iter.countは3なのでA、B、Cはとれてるとおもうんですがぇ;;
//iter.Current.MoveToFirst();
//Console.WriteLine( iter.Current.Name );
//Console.WriteLine( iter.Current.Value );
//iter.Current.MoveToFirstChild();
//Console.WriteLine( iter.Current.Name );
//Console.WriteLine( iter.Current.Value );
XPathNavigator nav3 = iter.Current.Clone();
//nav3.MoveToFirst();
//Console.WriteLine( nav3.Name );
//Console.WriteLine( nav3.Value );
//nav3.MoveToFirstChild();
//Console.WriteLine( nav3.Name );
//Console.WriteLine( nav3.Value );
>>382 ……。
イテレータ書いた事無い? .NETにおけるIEnumeratorだけどさ。
XPathNodeIteratorはXPath式で取得したノードを順に取得するためのイテレータクラス。
XPath式で取得したノードを順に取得するのはXPathNodeIteratorであって、
XPathNodeIterator.Current、つまりXPathNavigatorは現在イテレータが指しているノードを表すだけなんだけど。
もう一度XPathNodeIteratorのメンバを見てごらん。
384 :
378:05/03/19 18:56:39
うあああ!!!!
そうか!!!
このお試しコード、値がとれてるかどうかを試すためにかいたんだけど、
うしろに
while (iter.MoveNext())
{
}
ちゃんとやってた。。
whileの中にいれたら、取れました。
ううう、勘違いというか、あきらかに知識不足でした・・・
>>383さんありがとおおお!!!
Font Font = new Font()
とか書いてると馬鹿になった気になるな。
省略表記キボンヌ。
386 :
デフォルトの名無しさん:05/03/20 01:43:08
JavaからC#に移行してはや2年、
ドメインを取得してホームページをリニュアルしたから、
折角だし掲示板とかチャットを自作しようと思っている。
そこで使用する言語の選択肢が4つ、
・ASP.net with C# → 恐らくスムーズにいくのでは?
・Ruby → 国産言語なの?なんか仲間内で評判が良い
・PHP → 将来性を考えると・・・職場のPCもLinuxだしw
・Perl → なんせ実績がw、それに基本的な事は知ってるしw
一応、現時点ではASP.netにしようと思ってるんですけど、
どうも将来性がないんぢゃないかと思ってしまう。・゚・(ノ∀`)・゚・。
Rubyは好印象なんだけどイマイチ普及率が・・・
う〜ん、どれが良いでしょうね?(っていっても答えづらいし・・・)
要は、「一番将来性があるのはどれでしょう?」
>>386 PHPじゃないか?
PerlはPerl6で.NETみたいな包括的なスクリプトになるらしいけど。
ASP.netは自鯖とか持ってない人は使えるフリー鯖ってないから
あんまり使われてないから資料もすくないし普及してない。
ASP.NETは企業のWebシステムでの利用が一番多いだろうね。
というかそれだけだろう。
IIS5でのNimda騒ぎでIISなんて動かそうとも思わん
>>386 >>388 の言うとおり、企業システムでは ASP.NET 思った以上に普及してるから
将来消えてなくなるということはないと思う。
最近、商用=ASP.NET、フリー=PHP が主流な希ガス。
ASP.NETがmonoやprotable.NETで使えるならもう少し希望はあるかも
将来なんて曖昧なこと云い出すと、どの言語も遅かれ早かれ消えるんじゃないの?
今現在の自分のスキルで一番生産性が高いものを選ぶのが正解だと思うけどなあ。
それがここの住人にはC#ってことだと思った。
よーしチラシの裏に清書するぞー
393 :
386:05/03/20 09:33:12
皆様非常に参考になりました、
確かに.aspって拡張子も.phpって拡張子も同じくらい多く見かけますよね、
一応、急いでいるワケでもないのでPHPとASP.net両方囓ってみますわ
mono+ApacheでLinux環境でもASP.netが使用できる日が来れば理想的なんですけどね・・・
PHPは非常にとっつきやすいのでおすすめ。楽しいよ。
オブジェクト指向に慣れきった身としてはRubyに惹かれるんだがなー。
文法がC系だったら良かったのにー。
396 :
393:05/03/20 10:06:02
あれから30分ほど少しPHPを囓ってみました。
無理です!PHPの言語の仕様(というより思考?)自体は嫌いではないんですけど
パッと見た時のソースの綺麗さ(個人的に$とか&とか記号を多様するのは苦手です!)
がJava&C#という流れで来たのでどうしてもなじめません。・゚・(ノ∀`)・゚・。
う〜ん、分かってもらえるか分からないんですけど、
C#とかJavaってC++とかとパッと見た時の印象が違うんですよね、
やっぱIIS+ASP.netになってしまうかも・・・
もうC#中毒かもしれません・゚・(ノД`)ヽ(゚Д゚ )ナクナ ゴラァ!!
コンボボックスをReadonlyにするほうほうってありますか?
DropDownStyle
>>396 漏れと同じだ。ソースが$や&だらけになって、どうしても見た目に馴染めなかった。
PHPは悪くないのにな。
Web系の言語でもColdFusionは違和感がなかった。Javaが土台だからC#派の
漏れと波長が合ったのかなw
ソースの奇麗さでいうと漏れ的にはこんな感じかな
C > Ruby > PHP > Java >>> C++ >>> C# > ASP >>>>>> Perl
>>399 ColdFusionも#だらけじゃん。XML風でもXML準拠でない奇妙な構文だし。
お前の違和感の基準が分からん。
>>401 ASP.NETでいうコードビハインド的な書き方をしないと確かに#だらけになるよな。
環境に制約が無いなら自分が書きやすいと思った言語使えばいいじゃない。
C#+ASP.NETは良くできてると思う。
404 :
393:05/03/20 13:41:23
ソースの綺麗さに対する基準はやっぱ皆さん異なるんでしょうけど、
個人的に一番綺麗だと思うのはJava&C#ですね・・・
オブジェクト指向でない言語は綺麗には見えません・゚・(ノД`)ヽ(゚Д゚ )ナクナ ゴラァ!!
405 :
デフォルトの名無しさん:05/03/20 13:43:31
私はプログラミングの初心者ですが…教えて欲しいことがあります。
それはタイトル通り、アクセス制御及びパスワード認証プログラミングについてです。
色々と詳しい事を教えていただけないでしょうか?
@自分でホームページをDreamweaver4で制作しています。
A目的はWebショップ用です。
B会員制にしようと思っています。
Cでも、資金はありません
Dやる気はかなりあります!
どうか色々と教えて下さい。本気な為、荒しは遠慮下さい
ぱぱー
もっとおいしそうな餌がほしいー
407 :
ヘ(゚∀゚ヘ)アヒャ:05/03/20 15:51:30
>>405 もう少し具体的に教えて欲しいなぁ・・・
まず、作りたいのはローカルで動くWin32アプリ?orサーバーで動くWebアプリ?
Webショップをしたいなら既成のPHPとかPerlのプログラムを改良するのが良いと思われ、
Webショップを作りたいならドメインは取った方が良いね、
資金がなくても1年に1000円くらいなら大丈夫でしょ?
あと、自分もDreamweaver使いだけど、バージョンアップすべきだよ・・・
MX2004が出てるから息子にアカデミックを買わせるor海賊版でもいいから(オイオイ)バージョンアップすべき。
↑の方で話題に出てるけど、まぁC#の経験があるならASP.netが無難だね
へー息子さんいるんだ
>>408 ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ
まぁあくまで私の場合ですけどねw
VisualStudioなども私ではなく、息子に買いに行かせています(苦笑
値段が全然違いますから・・・
ぱぱー
もっとおいしそうな餌がほしいー
へーC#の経験あるんだ
やる気だけで出来たら苦労しないよ。
やる気が有っても無くてもなんも変わらん。
>>412 やる気がないと挫折orz
ドラッグ&ドロップでフォーム上に落とされた画像ファイルを
指定した形式に変換して保存するソフト作ってるんだけど
パスに日本語が入ってないとうまくいくけど
日本語が入ってると処理が一切されないんだが。
デバッグしたらパスの取得まではうまくいってるけど
画像判別のためにBitmapを作成されるところから処理が一切されない
ようになってた。
解決方法教えてくれ。
日本語は関係なかった。
ファイルサイズが0KBだとうまくいかなかっただけだった。
aspx(.NET)はともかくASPみたいなコード用のタグを使いたいならJSPでいいじゃん
というかですね、どうせチャット自作するならKeepAliveなチャットにしなさい
CGI-Perlで出来ることをわざわざ別の言語で実装したってたいした勉強にはならない
416 :
デフォルトの名無しさん:05/03/21 00:49:09
string[] foo= {"","","",""}みたいに宣言してあるものを
コードの途中で初期化できませんでしょうか?
↓
foo[0]="hoge1";
foo[1]="hoge2";
foo[2]="hoge3";
foo[3]="hoge4";
使い終わったので、
foo[0]="";
foo[1]="";
foo[2]="";
foo[3]="";
こんな風に全部の要素に""いれればいいんですけど
↓こんな風に初期化したい。(これだとエラーになる)
foo = {"","","",""}
空文字列は初期化なのか? と言う気はするが。
無いね。
forで回すか。
>>416 foreach (String it in foo) {
it = "";
}
で出来ないかな
419 :
416:05/03/21 00:56:21
正確にいうと初期化じゃないですね^^;
>>417さん
すばやい返事ありがとうです。
forにしまつ!
>>416 これじゃ駄目なのかな?
foo.Initialize();
>>422 >このメソッドは、コンパイラが値型配列をサポートできるようにするためのものです。
>ほとんどのユーザーはこのメソッドを使用する必要はありません。
>参照型配列ではこのメソッドを使用しないでください。
>Array が値型 Array ではない場合、または値型に既定のコンストラクタがない場合、 Array は変更されません。
>値型 Array は任意の下限および任意の次元数を持つことができます。
>注意 このメソッドはコンストラクタがある値型でだけ使用できますが、
> C# にネイティブな値型にはコンストラクタがありません。
事実上C#じゃ無意味。
それ以前にstringじゃどうしようもないし。
425 :
デフォルトの名無しさん:2005/03/21(月) 12:01:53
i = 1;
if(checkBox[i].Checked){
// 処理
}
という風なのはどうすればいいのですか?
どうしてもエラーになってしまいます。
>>426 大ッ嫌いですか・・・。
いろいろ考えてみます。
ありがとうございました。
428 :
デフォルトの名無しさん:2005/03/21(月) 18:21:42
過去ログを読みましたところ、C#でASP.netではなくCGIを作れるようなのですが、
一体絶対どういう風に作るのでしょうか?
試しに
using System;
namespace csc
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Content-type: text/plain\r\n\r\n");
Console.WriteLine("Hello World");
}
}
}
こんな単純なHelloWorldを作り、IISのcgi-binに入れたところ動作はするのですが起動時間がかかってしまい、
到底、CGIとしては使い物になりません。
http://www.mythique.org:81/cgi-bin/csc.exe そもそも↑のプログラムが鯖で動いているのかクライアントで動いているのかさえ分からない状態なので(´Д⊂グスン
>>428 それでCGIとして成立してるけど、まあCGIにする意義は無いよな。
430 :
428:2005/03/21(月) 18:36:09
>>429 まぁ意味がないのは分かっているのですが、好奇心というかなんというか・・・
これで起動がもっと速かったら実用的なんですけどね・・・
起動してからの処理はPerlなんかより圧倒的に速いみたいなんですけど、
動き出すまでが遅いという・・・ヽ(`Д´)ノウワァァァン
Consoleアプリを初めて作ったのですが(オイオイ)、初歩的な質問をしてもいいですか?
PerlなどならHTMLなどを出力するときに
print <<"EOM";
<html>
…省略…
</html>
EOM
みたいなことができるのですが、C#ぢゃやはり無理ですかねぇ?
431 :
428:2005/03/21(月) 18:40:34
MSDNに普通にありましたw
string myString1 = "This is the first line of my string.\n" +
"This is the second line of my string.\n" +
"This is the third line of the string.\n";
string myString2 = @"This is the first line of my string.
This is the second line of my string.
This is the third line of the string.";
コントロール配列はVBの癌
つかC#でCGIって無謀過ぎだろw
CとかC++なら分かるけど(・∀・)チンポー!!
所詮C#だよ
まあ、CGIも無謀ではないけど、C#使うならASP.NETにしろよ。
435 :
428:2005/03/21(月) 20:35:49
「C#でCGI作ったって意味がない!」
っと高を括って色々試してみたのですが、一つ大きな収穫がありました!
ご存じの通り、ASP.netはIISでしか動きませんよね?Apache+monoっていう手もありますが、
monoは発展途上でまだ実用的ではありません。
ただ、当たり前と云えば当たり前なんですけど、
exeのCGIなら和製のANHTTPDとかでも普通に動いてくれるんですよね、
http://www.mythique.org/cgi-bin/csc/csc.exe 実際、↑はANHTTPDで動いていますから・・・
ですので
・鯖はWindowsぢゃなくぢゃ嫌だぁ!ヽ(`Д´)ノウワァァァン
・だけどIISは使いたくないよ!ANHTTPDとかApacheが(・∀・)イイ!!
・PHPもPerlも嫌い!C#で作りたい!v( ̄Д ̄)v
なんて自己中かつ贅沢極まりない輩にはC#でCGIってのは良いかも知れませんね、
(まぁ実際、そこまでWindws非IISでC#にこだわる人はいないでしょうけど)
けど良い勉強になりました。
有り難う御座います。
Linux + Apache + MySQL + PHP
→通称ランプ(LAMP)環境
Windows + Anhttpd + C#
→WAC#環境?( ・∀・ )ノ カコワル-イ!!(-Д-)ダサイ
まぁCGIなんて言語はなんでも良いワケで、
WAVBとかWAJAとかなんでもアリになってしまうなw
C で書け
便乗して色々考えてみる
Assembly WAA
C WAC
C++ WAC++
C# WAC#
Basic WAB
Pascal WAP
Ruby WAR
つまらねぇ
MySQL とか PHP ならともかく、C だと NativeCGI だから WAN じゃね?
俺はbatファイルだが、何と呼べば?
@echo off
echo Content-Type: text/plain
echo.
echo Hello, CGI!
442 :
428:2005/03/21(月) 21:47:49
>>442 引数を表示するようにしとけーw
&で区切れば良いんじゃない?
444 :
428:2005/03/21(月) 22:16:04
>>443 はい、
一応改良しておきました。
static void Main(string[] args)
{
Console.Write("Content-type: text/plain\n\n");
try
{
Console.WriteLine(args[0]);
Console.WriteLine(args[1]);
Console.WriteLine(args[2]);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
一応、↑のURLだと1つめの引数は渡せています。
445 :
428:2005/03/21(月) 22:17:13
あ!早速試したところ、
>>443さんが云うように&で普通に区切れましたw
446 :
428:2005/03/21(月) 22:23:13
あ〜、また問題が発生です、
普通、CGIなら
xxx.cgi?mode=1&pass=123&ID=abc
って感じで通るぢゃないですか、
けどC#だと「=」を入れないで
xxx.exe?1&123&abc
みたいにするので、普通に呼び出すときならいいんですけど、
HTMLフォームから呼び出すとpass=123みたいな書式で「=」が入ってしまってエラーになるんですよ・・・
う〜ん、やはり皆さんが言うとおり辛いですね・・・
>>446 Environment.CommandLineプロパティならどうかな。
日記はチラシの裏へ。
450 :
デフォルトの名無しさん:2005/03/21(月) 22:36:47
VisualC++は分かるがVisualC#何ナノ?
451 :
428:2005/03/21(月) 22:36:51
>>447 受け取ってからなら分割なんていくらでもできるのですけど、
受け取る段階でエラーを吐いちゃうんですよ・・・
>>448 早速試してみます。
452 :
デフォルトの名無しさん:2005/03/21(月) 22:40:28
流石C→三冠達成
>>450 起動が遅いとか云ってたけど十分ぢゃない?
色々機能を付けないと分からないけど別に起動が遅いってわけぢゃなさそうだね
454 :
デフォルトの名無しさん:2005/03/21(月) 22:45:11
>>453 確かに起動が遅い。が、苦にはならない。
C++とC#の違いは起動時間。ひとつ学習。さらに学習。かなり学習。
455 :
428:2005/03/21(月) 23:18:27
それ以前に一つ一つ別プロセスとして起動するわけで、
.NETじゃメモリの圧迫とかきつくね?
457 :
デフォルトの名無しさん:2005/03/21(月) 23:24:39
>>455 貴重な情報あんがと。
起動時間以外に差はある?
>>455 C#、はえーな。
暇があったら、テキスト処理とか、クラスを使った処理とかでも比べてみるかな。
459 :
428:2005/03/21(月) 23:39:52
やっと
>>455の2つのCGIがまともに動くようになりましたので、
宜しくお願い致します。(さっきまでは巧く動いてなかったかもしれません。)
Perl版の方が上のサイトでは
printf("");
という風になってたのを
print "";
に直しました。
また、両方に一応
Content-type: text/plain
を吐き出させるようにしました。
>>455のサイトは読んだことあったけど改めて実際に動かして体感すると全然スピード違うんだね
まぁ言語によって得意不得意があるとはいえ、それ以上に差が開いていて吃驚した。
つまりC#は起動が遅いから単純なBBSとかならPerlの方が速くて、
思い動作をさせるならC#の方が有利ってことでOK?
リッチテキストのRtfコードの生データに触りたいんですが、
ttp://dobon.net/vb/dotnet/programing/typeinvokemember.html ここの情報を元に、
string str = (string)r.GetType().InvokeMember("textRtf",
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetField,
null,
r,
null);
というコードでやってみたんですが、Nullしか戻ってきません。
何が間違ってるんでしょう?
出来ればポインタまで行きたいんですが。
やってみた。
C# -> time: 171
Perl -> time: 9083
C#やたら速いんだが。
思っていた以上にC#って速いんだな・・・
ネイティブぢゃないからPerl並に遅いと思ってたw
つか
>>446にもあるけど、C#ってPOST&GETをどうやって受け取るんだろう?
移転完了ー。
>>461 生データとかポインタとかよく分からないけど、Rtfプロパティじゃダメなの?
ちなみにRtfプロパティはEM_STREAMOUTを送ってRTFを取得してる。
>463
普通 httpd が環境変数に入れてくれるだろ
>>463 JITコンパイルしてるからネイティブっちゃーネイティブだけどな。
おめ
Be Sharp! C#
470 :
デフォルトの名無しさん:2005/03/22(火) 23:55:42
長文で失礼します。
以下のように非同期でアイコンを取得するようにしたのですが、
描画されたりされなかったりします。
どういった原因が考えられますか。
private Icon GetVolumeIcon()
{
// 省略
}
private delegate Icon AsyncGetVolumeIcon();
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
AsyncGetVolumeIcon asyncDelegate =
new AsyncGetVolumeIcon(this.GetVolumeIcon);
asyncDelegate.BeginInvoke(new AsyncCallback(this.GetVolumeIconCallback),
e.Graphics);
}
// つづく。。。
471 :
デフォルトの名無しさん:2005/03/22(火) 23:57:03
>>470 のつづき
private void GetVolumeIconCallback(IAsyncResult ar)
{
Graphics g = (Graphics)ar.AsyncState;
System.Runtime.Remoting.Messaging.AsyncResult asyncResult =
(System.Runtime.Remoting.Messaging.AsyncResult)ar;
AsyncGetVolumeIcon usedDelegate =
(AsyncGetVolumeIcon)asyncResult.AsyncDelegate;
using(Icon icon = usedDelegate.EndInvoke(ar))
{
g.DrawIcon(icon, 0, 0);
using(g = this.pictureBox1.CreateGraphics())
{
g.DrawIcon(icon, 0, 0);
}
}
}
Paint内でBeginInvokeって何考えてやがりますか。
473 :
デフォルトの名無しさん:2005/03/23(水) 00:04:49
>>472 やぱり厨な質問でしたか。逝ってきます。。。
と思ったらリンク先がってことなのね、
ごめんなさい
>>464 おおおう
Thxです。関連情報をググッて見ます。
>>463 GETはSystem.Environment.GetEnvironmentVariable("QUERY_STRING")
POSTは、データ長はSystem.Environment.GetEnvironmentVariable("CONTENT_LENGTH")に
データ本体は標準入力に入ってるのでSystem.Console.OpenStandardInput()で
>>464 ううむ。これは保存するときに使われる奴という解釈であってるんでしょうか?
目的はRtfコードの編集とセットなので、ちょっと違います・・・。
Rtfプロパティを引っこ抜いて編集して、又戻すという方法だとカーソルの位置が最初に来てしまうんですよね。
カーソル位置の保存とセットをやると、スクロールががたがたに成ってしまう。
残りの手段はやっぱりスクロール系ですが、一定時間スクロール系の処理を止める方法ってありますか?
SendMessageでスクロールの状態を引き抜いて又セットするという方法も試しましたが、やっぱりスクロールはガタガタでした。
480 :
デフォルトの名無しさん:2005/03/23(水) 04:09:33
やりたいこと:圧縮された音楽ファイルをデコードしてメモリ上に展開する
DirectShowを使えばできそうな気もするのですが、デコードしたデータをメモリ上に格納するレンダラがなさそうです。
一度ファイルに落としてから読み直すってのも間抜けだし、なにかいい方法はないでしょうか?
481 :
479:2005/03/23(水) 05:52:21
これはAPI系のスレに行った方がよさそうですな。
逝ってきます。
>>479 更新する前に WM_SETREDRAW で画面描画を停止してからいじれ。
向こうに行ったかな?
483 :
463:2005/03/23(水) 15:47:23
>>478 ありがとうございます、
非常に参考になりました。
このスレの皆さんに質問なんですけど、
C#でWebProgrammingと云ったらASP.net、
CGIに使う言語と云ったらPerlや一部ではC++などですが、
C#でCGIを作るということに対する需要ってあるのでしょうか?
国内サイトを探しても関連するサイトは皆無のようですが、
C#というJISにも登録された素晴らしい言語をIIS&ASP.netという枠に収めずにCGIとして広く使えたらなっと思っています。
現状はPerlなどに比べて日本語の扱いやHTMLとの親和性などについて環境が整っていませんが、
Perlで云うjcode.plのようなC#のクラスライブラリを率先して作っていけばC#でCGIというものを
普及させることも意外に難しくはないのではと思っています。
叩きでも構いませんのでC#Programmerの皆さんの意見を聞けたら幸いです
>>483 .NETやJavaのように起動に時間と多量のリソースを必要とするものは
リクエストごとにプロセスを起動するcgiには向かない。
どうしても起動したままでリクエストを処理し続ける必要がある。
この問題を解決しないと単純なcgiライブラリを作っても需要は無いと思う。
485 :
デフォルトの名無しさん:2005/03/23(水) 16:45:25
.netではアプリケーションの設定情報にiniファイルを使わずに動的プロパティ設定ファイルを
使えと言うことらしいですが、この動的プロパティ設定ファイルをアプリケーションから
変更するにはどうしたらよいのでしょうか?
SDKを検索してみたのですが、読み出し方法しか見つけられませんでした。
>>485 ms-help://MS.NETFrameworkSDKv1.1.JA/cpguidenf/html/cporiApplicationSettingsInServerComponents.htm
487 :
デフォルトの名無しさん:2005/03/23(水) 16:56:00
>>486 そのセクションには動的プロパティ設定ファイルの手動による変更方法は
書いてあるのですが、アプリケーションからの変更方法は書いてないような
気がするのですが…
>>485 app.exe.configファイルはiniの完全な代替ではないので書き換えは手動が原則です。
app.exe.configは簡易版のリソース程度に思っててください。
アプリケーションから変更したい場合は分離ストレージを使うか、独自のxmlファイルを
作って読み書きするか、DataSetクラスをつくってReadXml, WriteXmlするのが適当でしょう。
489 :
450:2005/03/23(水) 17:23:53
>>488 なるほど。よく分かりました。
ざっとDataSetを作ってXMLを吐き出してみたのですが可読性はあまり良くないですね。
iniファイルは可読性も高く、アプリケーションからの変更もサポートされていて
それなりに存在意義のあるファイル形式だとは思うのですが、今のところ従来の
iniファイルやレジストリの代替手段としてスタンダードな物は無いと言うこと
なのでしょうか?
>>489 XML は次世代のスタンダードだと思うけど……
あ、改行されないのが可読性が低いと?
491 :
デフォルトの名無しさん:2005/03/23(水) 18:01:46
>>491 コンストラクタで何かやりたかったら書けーってこと
つまり、コンストラクタで行うロジック。わかりにくい
493 :
デフォルトの名無しさん:2005/03/23(水) 18:39:01
HttpWebRequestとHttpWebResponseでhttps(ssl)サーバーとやり取りする場合
暗号化などは勝手にやってくれるんですか?
POSTメソッドでユーザーIDとパスワードを送る必要があるんですが
盗み見されたりしないんでしょうか?
勝手にやってくれる。
495 :
493:2005/03/23(水) 18:58:58
そうなんですか、どうも。
VisualStudio2003.NETのプロジェクトにアイコンを新規作成で作って
プロジェクトのプロパティで指定したんだけど、ちゃんと反映されません。
ちなみにdirextx.icoで試してみたら上手くいきました。
どうやらちゃんとしたアイコンファイルが出来てなかったみたいです。
どのようにしたらdirextx.icoみたいなちゃんとしたアイコンファイルを
作れるのでしょうか?
498 :
496:2005/03/23(水) 22:20:30
出来たアイコンを他の画像ビュワーで見たり、
プロパティの全般タブではちゃんと反映されてるんだけど、
.icoファイル自体のアイコンや、それを指定してコンパイルした
実行ファイルのアイコンに反映されません。
>>496 デフォルトの32x32 16色です
だから16x16のイメージを見てみろよ。
>>499 意味わかりました。禿しくありがとうごさいました。
501 :
デフォルトの名無しさん:2005/03/23(水) 23:57:36
若干すれ違い的な質問失礼します。
現在、C#をメインにプログラミングをしているのですが、
C#の長所でもあり短所でもあるCLIは完全なネイティブではないので(少し変な言い方ですね)
簡単にソースを見られてしまいます。
通常は問題のないことなのですが、暗号化や認証などでは致命的な問題です。
ですので、,netの長所でもある複数の言語を扱えるということを生かして、
プログラムの一部を別の言語で書きたいと思っています。
現在、VisualStudio.net2003Proを使用しておりまして、一部をC++などで記述したいと思っています。
VisualStudioのC++のところにはWin32というものや、MFC、C++.netなどがありますが、
win32というものは.netを必要としないVC6.0と同様のものなのでしょうか?
またC++.netはCLIでないネイティブなプログラムにコンパイルできるのでしょうか?
> win32というものは.netを必要としない
必要としない。
> C++.netはCLIでないネイティブなプログラムにコンパイルできる
できる。
>>501 あなたが仰る「CLIでないネイティブ」にコンパイルした場合、
「複数の言語を扱える」長所を享受する事は出来ません。
C#からC++で作ったネイティブな関数を呼びたいということじゃないの?
501の書き方では/r:hoge.dllを考えてるように見えるねぇ。
たしか共通言語を難読化するソフトがあったはず。
509 :
501:2005/03/24(木) 07:43:05
VC++.netのwin32で作ると共通言語ではないようで、ソースを見ることができませんでした。
ただ、C++の.netで作ると普通に見れてしまう(泣
>>502さんはどうやってC++の.netをCLIでなくコンパイルしているのでしょうか?
やはりCLIも一長一短ですね(泣
私の場合、一長よりも一短の方が痛手になっていますが・・・
暗号化や認証はソースを見られても簡単には見破られないようなものを
選択するべきだと思うのですが。
win32プロジェクトはネイティブイメージを作るので当然ソースは見られません。
見たければ逆アセンブリするなどの手段しかないでしょう。
.netプロジェクトはMSILを作るのでC#等と同様、容易にソースが復元できます。
あとはngenなるツールでマネージアセンブリからネイティブイメージを作成する
ツールもあるようですがよくわかりません。
511 :
501:2005/03/24(木) 08:18:01
512 :
501:2005/03/24(木) 08:28:49
どうもngenというのはCLIをネイティブにコンパイルしたファイルをキャッシュしてくれるプログラムのようですね、
インストール時などにngenでキャッシュを生成しておけばネイティブで起動されるとのことです。
ただ、ネイティブのexeを生成できるということではなく、あくまでキャッシュだとか・・・
けど、CGIなどで起動時間が特に重要性を帯びるプログラムでは良いことかもしれませんね、
少なくともC#で作ったプログラムがC++CGIと同様に動くのですから・・・
そんなこと誰でもしってるぞ
それとngenはPCのスペックによってはかってに起動する場合もある。
>>501 それとうざいから死ね
春厨なんだろうがな。みたところ春休みの学生か?
CLIの勉強してからこいや
515 :
デフォルトの名無しさん:2005/03/24(木) 09:21:04
サービスアプリのような、要求待ちもしくは終了条件待ちの為の無限ループを
低負荷で行うにはどうしたらよいのでしょうか?
リファレンス嫁
while(true) などでぐるぐる回している中で Thread.Sleep(1) とかやっておくと
負荷が下がったような気がしましたが気のせいかもしれません。
見当違いなことを言っているかも知れません。
518 :
501:2005/03/24(木) 09:39:59
>>571 ギャクかよ。
普通にやるならプロセス通信かネットワークサーバーを書く
WindowsサービスをしたいならServiceBase クラス を使う
SDKリファレンスで検索すればすむ話だ。
まぁその文章じゃあと1年はサービスアプリなんてかけないだろうなw
521 :
デフォルトの名無しさん:2005/03/24(木) 10:36:47
素朴な疑問なのですが、
あるクラスのフィールドに別のクラスがあるときに、newするのは、
フィールド宣言するときと、コンストラクタでやるのと、
どちらが良いでしょうか?
public class ClassA {
public ClassB b = new ClassB();
と書くのと、
普通にClassAのコンストラクタでnewするのと、何か違うのでしょうか?
もう1つ、stringの初期化を""でやるのと、string.Empty()でやるのも同じですか?
>>521 > 普通にClassAのコンストラクタでnewするのと、何か違うのでしょうか?
フィールド宣言時に初期化するオブジェクトは、必ずコンストラクタよりも先にインスタンスが作られる。
ただし初期化の順番が保証されない。普通は問題ないが、馬鹿なクラス設計してれば問題が起こりうる。
> もう1つ、stringの初期化を""でやるのと、string.Empty()でやるのも同じですか?
空文字列は初期化とは言わないと思うがどうか。
""とString.Emptyは、まあ同じと考えて良いんじゃない?
""は必ず空文字列のシステム参照を返すが、
String.Emptyは初めて呼ばれた時には空文字列の新しい参照を返す……なんてこともあるけど。
>>522 有難うございます。特に、
> ただし初期化の順番が保証されない。
ここ1年ほどのモヤモヤしていたものが晴れました。
本当にどうも有り難うございました。
>>519-520 あーすみません。
脊髄反射で適当な事書き込みました。
あと1年はサービスアプリ書かなくて済みそうなので
ググルことから勉強シてきます。
525 :
515:2005/03/24(木) 11:14:35
すいません、誤解を受けてるようなのですが
>>517は別の方です。
特にサービスが作成したいわけではなく、ループ脱出条件を満たすまで無限ループを
低負荷で行わせるためにはどうしたらいいのかで悩んでいます。
安易に「サービスアプリのような」という言葉を出したのが悪かったと思います。
おまいら、教えてください。
エアエッジとかCFに刺さる通信カードを
制御するようなクラスは.netフレームワークにありますか?
ぐぐったりMSDNみたけどわからなかったぽ。
フレームワーク上でやるような事じゃないと思うんだな。どういう制御か知らないけど。
ポケットPCでアプリつくんだけど、
プログラムで電話かけてネットワークに接続したりしたいのよ。
制御ってほどじゃないよね・・・・
>>525 ループ内で何をやらせたいのか何を待機するのかで方法が変わってくる。
System.ThreadingのEventやMutexなどを使うか、
Thread.Sleepで一定時間おきにポーリングするかのどっちか。
530 :
デフォルトの名無しさん:2005/03/24(木) 16:51:03
ASP.NETのC#でABCpdfという製品を使っています。
ひとつ問題が発生し、日本語を表示させると文字化けが起こります。
おそらく文字コードの問題で、SJISにする必要があると考えています。
そこで
string str1 = "あいうえお";
System.Text.Encoding sjisEnc = System.Text.Encoding.GetEncoding("Shift_JIS");
byte[] bytes = sjisEnc.GetBytes(str1);
string str2 = sjisEnc.GetString(bytes);
と変換してみたのですが、str1とstr2は同じ物になります。
最後の行はSJISのバイト配列のデータから文字列(UTF-8)を
作成していると考えると納得できます。
では、bytesのままで文字列として扱おうと思い
string str3 = bytes.ToString();
をすると、str3は"System.Bytes[]"が設定されています。
どうしたら、SJISも文字列を作成できるのでしょうか?
System.Stringは内部では必ずUnicode(UTF-16)。
System.Stringを引数にとってるのに化けるならメーカに文句を言え。
532 :
530:2005/03/24(木) 17:30:27
531様、ありがとうございます。
ずっと文字コードの問題だと考えていたため、
無駄なことに囚われていました。
531様の一言で、もっと基本的な問題ではと思うことが出来、
「フォントの指定」が抜けていたことに気が付きました。
ありがとうございます。
( ゚д゚)ポカーン
( ゚д゚)ポカポカーン
( ゚д゚)ポカポカポカーン
C#の言語仕様についてなんですが、
case文ってCとかJavaみたいにフォールスルーできなくなってますよね?
それなのに、breakが必要になってるみたいですが、
こうなった経緯や理由をご存知の方いらっしゃいますか?
どうでもいい話ではあるんですが、気になってしょうがないので。
多分C++からの移行者がフォールスルーを期待してコーディングする事を危惧したんだと思う。
元々C#はC++の後継たることを期待されていたんだし。
フォールスルーされない事が当たり前な人にとっては邪魔なだけだけど。
case A:
case B:
break;
のためじゃないの?
default:が先頭にあっても動くことに結構驚く。
542 :
536:2005/03/25(金) 00:00:32
>>537-541 ありがとうございます。これでぐっすり眠れます。
特に
>>540は、その他に色々気になってたことが載ってたので、
これからじっくり読んでみます。
543 :
デフォルトの名無しさん:2005/03/25(金) 00:29:26
string.Replace("文字列","変更文字列");
を使って文章の一行を置き換える場合、
変更文字列がなかったら、文字列を完全に
消すようにしたいのですがどうにかできないでしょうか?
以下のように改行だけ入ってしまいます。
aaaaaaaaaa
cccccccccc
わけわからん。
改行だけってそりゃ文字列変数の問題じゃなくて表示部分の問題じゃないか?
>>544 すいません;;
string.Replace("文字列","");
MessageBox.Show(string);
こうしたときに以下のようにしたい
という意味です。
aaaaaaaaaa
cccccccccc
Replace("文字列\r\n", "")
にすればいいだろ。
>>546 あっ、確かに....
情けない質問にご回答頂き
ありがとうございました。
548 :
480:2005/03/25(金) 04:36:07
だれか たのむ
一行の高さってどうやって取得すればええんでしょうか?
キャレットの高さでもいいんですが、キャレットは位置しかわからないもんで。
フォントの高さ=行の高さではないですよね?
Graphics.Measureなんとかじゃだめ?
普通はフォントの高さに等しいけどな。
553 :
デフォルトの名無しさん:2005/03/25(金) 10:52:45
インタフェースを、プロジェクトとして外出しにした場合の出来事なのですが、
VSで、以下の3つのプロジェクトがあります。
ProjA.Interfaces
ProjB.Core
ProjC.Sample
ProjB.CoreがProjA.Interfacesの中身を継承したクラスライブラリです。
ProjCでそのProjBで実装したクラスを使いたい場合に、
参照設定にProjBを加えて、ソース内でもUsing宣言すれば良いと思っていました。。
しかし、
「ProjBは参照されていないアセンブリ内で定義されたインタフェースを持ってます、
ProjAへの参照を追加してください。」というエラーがでます。
実際に、追加すると解決するのですが、何か腑に落ちません。
クラスライブラリを使う時にそのインタフェースのdllも必要になるなら、
インタフェースだらけになるような気がします。どうなんでしょうか?
>>553 ライブラリからインターフェイスだけ抽出する意味ってあんまり無いんじゃない?
> クラスライブラリを使う時にそのインタフェースのdllも必要になるなら、
> インタフェースだらけになるような気がします。どうなんでしょうか?
インターフェイスだらけって何が?
555 :
553:2005/03/25(金) 11:54:14
>>554 >ライブラリからインターフェイスだけ抽出する意味ってあんまり無いんじゃない?
確かに、微妙なところですが、大きなソリューションで似たクラスも持つプロジェクトが複数ある時に、
(例えば、中の人用の詳細クラスと、外の人用の簡単なスタブクラスとか)
同じインタフェースを使えば、間違いが少なくなるのではないかと・・・
>インターフェイスだらけって何が?
説明不足ですみません。
クラスライブラリを使う時に、そのクラスの実体のdll以外に、そのクラスが使っているインタフェースのdllまで
必要になるなら、何か、隠蔽してる意味が無いような気がしまして・・・
そういうものなんでしょうか?
>>555 実装したクラスにインターフェイスの情報を含めるとすると、実装したクラスが
2つあってそれぞれ別のdllの場合にどちらの情報を使うかって問題が発生します。
メタ情報をモジュールに含んでいる以上こういう仕掛けなのは仕方ないんじゃないかな。
プロジェクトで共通のインターフェイスを使う場合は、VSSやCVSをつかってソースレベルで
共有するようにしてますよ。
557 :
553:2005/03/25(金) 13:33:44
>>556 どうも有り難うございます。仰る通りですね。
今後精進します。
本当にどうも、有難うございました。
Windows.Forms.Control.DateTimePicker で、ボタンを押した時に
カレンダが表示されますが、このカレンダの表示をやめて独自のカレンダ
を表示したいと思っています。
カレンダを表示する時に押すボタンが押されたイベント、カレンダの表示を
中止する方法がわかりません。
このあたり御存知の方がいらっしゃいましたらアドバイス頂けませんでしょうか?
>>551 >>552 なぜかわかりませんが、例えば文字のサイズごとに横に線を引いていっても全然合わないんです。
しかもフォントのサイズ毎にそのずれ幅が違う。なのにそんなプロパティ等は見当たらない。
>>551でサイズを取得してるんですが、「一行」の幅ではないようなんです。
>>559 MeasureString でサイズ測ったら、Ascent と Descent をごちゃごちゃして云々とか?
キャレット云々って事は(リッチ)テキストボックスだよな。
GetPositionFromCharIndex/EM_POSFROMCHARで取得するとか?
リッチテキストボックスはGDIだから、GdiPlusベースのGraphics関連のナニでは
テキストのジオメトリ等をきちんと求めることは不可能だと思う。
P/Invoke でEM_POSFROMCHAR使うとか、GDIのAPIを呼び出す等が必要では?
563 :
デフォルトの名無しさん:2005/03/26(土) 00:03:52
コンソールアプリでファイル変換のソフトつくってるんすけど
MemoryStreamの開放のしかたおしえてくだせえ〜〜!!
MemoryStream ms = new MemoryStream();
msをつかってWriteしたりする
ms.close();
と、これでストリームはとじれるけど
肝心のリソースはどうやって開放すればいいんでしょうか。。。
放置。
参照が無くなればそのうちGCがお片づけ。
565 :
デフォルトの名無しさん:2005/03/26(土) 00:17:24
ガベレジコレクションがやってくれるのって、メモリがなくなってきた時とか
その内ってかんじなんすけど、
すぐに開放して!ってことはできないんでしょうかのぉ。。。
MemoryStreamにDisposeってないっすよね。。。
とりあえずGC.Collectしてみる。
リッチテキストボックスで&hearts;や〜;(〜は任意の数値)などのエンティティを
表示したいのですが、これらのエンティティをrtfに変換するにはどういうロジックを
組めばいいのですか?
&hearts;とかは変換テーブルを考えましたが、〜;は変換テーブルでは
対応しきれないんです。
System.Web.HttpUtility.HtmlDecode
NASAが開発した、WorldWindという地球儀ソフトがありますが、
あのソフトで、worldwind://URL〜とブラウザに打つとソフトが起動し、
URLで指定された文字列で動作するようになっています。
これはどのように実装されているのでしょうか?
571 :
567:2005/03/26(土) 01:14:24
>>568 ありがとうございます。HtmlDecodeで何とかなりました。
572 :
569:2005/03/26(土) 01:16:08
>>570 WorldWindがC#で作ってあるようなので、.NETなら簡単に実装できるんじゃないかと思いまして・・・。
.NETとは関係なくレジストリをいじるんですね。
ありがとうございました。
573 :
デフォルトの名無しさん:2005/03/26(土) 01:20:53
すいません、C#初心者です。どなたか返答お願いします。
例えば、フォーム上にひとつのパネルがあるとして
そのパネル内にラベルが10個あるとします。
ラベルのデフォルトバックカラーは黒として
各ラベルをクリックすると、クリックした以外のラベルは黒に
クリックしたラベルのバックカラーは白にする
という処理を組む場合、バックカラーを黒にする処理を
foreachなどで組むとして、各ラベルのクリックのメソッドができますよね。
その時に、それぞれのメソッドに各ラベルのバックカラーを変える処理を
書くのではなく、クリックしたラベルの(つまり自分自身を)バックカラーを
変える書き方ってあるのでしょうか?
label1.BackColor...
label10.BackColor...
ではなく、this.backColor... (me.BackColor)みたいな感じで。
ちなみにthisを用いるとフォームのバックカラーが変わるのです。
よろしくお願いいたします。
>>575 何度読んでも理解できない。
特に「クリックしたラベルの(つまり自分自身を)バックカラーを」のあたりが
ArrayList labelArray;
labelArray = new ArrayList();
labelArray.Add(label1);
labelArray.Add(label2);
・・・
label1.Click += new EventHandler(anyLabel_Click);
label2.Click += new EventHandler(anyLabel_Click);
・・・
void anyLabel_Click(object sender, EventArgs e){
foreach(Label l in labelArray)
if(l==sender) l.BackColor=Color.White;
else l.BackColor=Color.Black;
}
>>575 何のためにイベントハンドラにsenderオブジェクトが渡されると思っているんだい?
579 :
デフォルトの名無しさん:2005/03/26(土) 20:58:56
>>579 乙。
しかし私はユーザエージェントを書き換えて素のIEにしているので問答無用でfalseが返ってきたぜw
581 :
デフォルトの名無しさん:2005/03/26(土) 21:12:05
>>580 (+。+)アチャー。
やっぱ判別をするのにユーザーエージェントの環境変数使うのは駄目ですかねぇw
他に判別する方法で良い方法がありましたらご教示願いたいです。
582 :
575:2005/03/26(土) 21:40:38
レスありがとうございます。
>>576 すいません。説明不足でした。
「クリックされたラベルから見て、自分がクリックされた、クリックのイベントが
開始された」ということを書きたかったのです。すいませんでした。
>>577 ありがとうございます。やってみます。
>>578 プログラムやり始めたばかりなので、senderの使い方がよくわかってませんでした。
>>581 簡易チェッカとしては十分じゃない?
IE5.5以上(だっけ?)以外は無効である旨は書いておくべきだと思うけど。
UA書き換えするようなのは諦めても良いと思う。
あ、返すHTMLで、scriptでチェックしてCGIの結果テーブルを書き換えるとかどうだろう。
script無効ならCGIの結果をそのまま表示するようにして。
一番良いのはノータッチデプロイメントで.configのsupportedRuntime要素を任意バージョンに限定して実行させる事かなぁ。
これも.NET1.0のSP次第とかでSecurityExceptionが発生しうるからその警告も必要だけど。
//あと何故かFileLoadExceptionが発生したりするけど……。ノータッチデプロイメントは仕様がよく分からないなぁ。
584 :
デフォルトの名無しさん:2005/03/27(日) 00:01:19
あぁ〜
やっぱIE以外では無理でした(;>_<;)ビェェン
ノータッチデプロイメントも含め、色々検討してみますね♪
うちのサイトでもIEユーザー以外が15%もいますから・・・
585 :
デフォルトの名無しさん:2005/03/27(日) 17:20:52
動きました
HttpWebRequestで
>>585を取得するとWebException(ServerProtocolViolation)が返ってくるんですが
588 :
587:2005/03/27(日) 20:19:37
squid(プロキシサーバ)を使ったら取得できた。
予期しないエラーが発生しました。
つきましてはバグ改善の為に御報告をお願い致します。
エラーの内容:オブジェクト参照がオブジェクト インスタンスに設定されていません。
>>585 ノートンのFWをオンにしているとまともに表示しないんだけど何で?
>>587 どうも返ってくるヘッダの一行目が200 OKじゃなくて200 Document followsになってるからのような感じがする。
TcpClientでやったら普通にできるし。
NullReferenceExceptionはUser-Agentが未設定の場合に発生するようだね。
nullチェックもしなきゃね〜。
591 :
デフォルトの名無しさん:2005/03/27(日) 23:38:28
皆さん動作確認本当に有り難う御座います!
>>589 exeだからですかねぇ・・・
ウィルスのたぐいではないので御安心を、
>>590 明日早速試してみますね
592 :
デフォルトの名無しさん:2005/03/27(日) 23:44:46
マウスカーソルを自由に動かす方法ってないですかね?
Point AからPoint Bまで移動させてクリックイベントを発行させるとか
System.Windows.Forms.Cursor.Position
594 :
デフォルトの名無しさん:2005/03/28(月) 00:05:53
マウスカーソルをPoint AからPoint Bへ移動させてクリックイベントを発行する方法は
どのようにするのでしょうか?
人に見える形でオペレーションを記録・再生したいのですが
そう言う用途ならWin32APIのmouse_event/SendInput関数の方が良いかもね。
すいません、2度書き込みしてしまいました。
ありがとうございます。
//while(true)Cursor.Position=p;ってやったら ちゃんとカーソル使えなくなりました・・・
597 :
デフォルトの名無しさん:2005/03/28(月) 00:29:41
Webサービスで、WebサービスクライアントのIPアドレスポート番号はどのように取得したらよいのでしょうか?
ホストネームだけなら取得することができるのですが
過去ログ見てたら、structがガベコレされるかされないかでの議論がありました。
途中で終わってたので結論が分からないのですが、
structはガベコレされるのでしょうか、されないのでしょうか。
される。
え?structってスタックに積まれてるんじゃなかったっけ?
自分で作成したForm以外(デスクトップとか他のアプリケーションのFormとか)で
マウスカーソルの下にToolTipを表示させたいんだけど何か方法ありますか。
へなちょこなんでサンプルを提示して頂けるとありがたいです。
age
テキストボックスのプロパティいじって表示させればいいだけな木ガス
606 :
デフォルトの名無しさん:2005/03/28(月) 14:36:00
はい質問!
上の方にあるC#のCGIってなんてファイル名がないの??
607 :
デフォルトの名無しさん:2005/03/28(月) 14:36:54
>>602 グローバルフックを仕掛けて何とかしろ。
なぜか、C#では使えないはずのグローバルフックなのにWH_MOUSE_LLは動いてしまうから。
なんで動くのか理由を知りたいところ。
611 :
デフォルトの名無しさん:2005/03/28(月) 15:09:00
MSNメッセのログファイルをC#で扱いたいのですが、System.Xml.XmlExceptionが発生してしまいます。
XMLファイルを確認したところ、バイナリが混ざっていたみたいなのですが
バイナリ部分を消す、エラーが起こるファイルを無視する 以外の対処方法はありませんか?
バイナリ部分をスペースや中点に置換えてもいいです。
----------
ハンドルされていない例外 : System.Xml.XmlException: '' (16 進数値 0x12) は無効な文字です。 行 579、位置 12596 です。
string logFile = "[ログファイルのフルパス]";
XmlDocument doc = new XmlDocument();
doc.Load(logFile);
→ XmlNodeReader reader = new XmlNodeReader(doc);
文字列に読み込んで置換してdoc.LoadXmlするとか。
613 :
611:2005/03/28(月) 15:29:40
バイナリを全て置換えるにはどうすればいいでしょうか?
XMLで使えないUnicode範囲を調べて、Regex.Replaceで\u0000-\u0004\u0008-\u001fとかを置換すればいいんじゃね。
一つ言っておくけれど、何がバイナリ何がテキストって別れてる訳じゃなくて、
バイトの列で考えればバイナリ、文字の列で考えればテキストってだけだぞ。
615 :
611:2005/03/28(月) 17:01:52
おかげさまで解決しました。
"[\u0000-\u0004\u0008-\u001f]"だとタブや改行も消してしまったり、無効文字の取り残しがあるので
"[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]"とすると無事に通りました。
要するにタブ・改行以外のASCII制御文字を取り除けばよかった話でしたorz
616 :
デフォルトの名無しさん:2005/03/28(月) 19:08:52
HashtableをXmlSerializerでシリアライズしようとしても失敗するのですが。
どのようにするのがよいのでしょうか
>>616 XmlSerializerを諦めてSoapFormatter/BinaryFormatterを使うか、
Hashtableを諦めてIDictionaryを実装しない独自のテーブルクラスを作るか。
あくまで個人的にだが、Webサービスで使用しないのにSOAP形式にするのはなんか嫌だ。
見通しがめっさ悪くなるな。
621 :
602:2005/03/28(月) 21:03:46
>>605 IMEWatcherとか
>>608 グローバルフックで他のアプリケーション上でもマウスカーソルの位置の取得はできるようになりました。
Tooltipはどうやったら表示できますか?
TabContorol で Appearance を Normal 以外にしたときに
3回クリックしないと DoubleClick イベントが発生しません。
Normal なら 2回で DoubleClick になります。
これって Windows.Forms のバグですか?
バグなら MS に報告したいと思います。
なお .NET 2.0 March CTP でもなおってませんでした。
つーかまじで TabControl 使いもんになんねぇ。
BackColor とかもないし。
みんな自作でもしてるのか。
UserControl を継承して独自のコントロールを作る時、
例えば、UserControl の上に、TextBox を1つ配置した場合、
TextBox で発生したイベントを、この UserControl で使う側で
処理したい場合、UserControl.TextBox のように TextBox そのものを公開
するしか方法はないでしょうか?
できれば、UserControl 自身のイベントとして TextBox のイベントを
扱いたいと思っているのですが。そうでないと UserControl に
のっている TextBox のイベントは Visual Studio のデザイナで
イベントの割りつけができないので、全て自分でやらないと
いけない気がします。普通そういうもんでしょうか?
何かアドバイスがありましたらよろしくお願いします。
>>624 独自イベントTextClickを宣言して、TextBoxのClickイベントでTextClickを発生させる。とか。
>> 625
それも考えたのですが、必要なイベントを全て列挙していくのが
大変かな、と思いまして。
複数のコントロールをまとめて 1 つのコントロールとして扱いたいので
UserControl を継承するしか方法がないのですよね。。。うーん。
>>626 そのTextBoxのスコープをpublicにするとデザイナ上からイベントの割付とかできるけど、お勧めしない。
625の方法で必要最低限のイベントだけ公開するのが無難。
628 :
デフォルトの名無しさん:2005/03/29(火) 01:46:37
プログラム上から動的にメニューを作成した場合、
作成したメニューのClickイベントなどに対して処理を埋め込むのはどうやればいいですか。
とりあえず、デザイナ上でメニュー作って
InitializeComponent 見てみたら?
>>625をサンプルで示すとどんな感じになるの?
簡単なコードで教えてほしいな m(_"_)m
>>630 public event EventHandler TextClick = null;
private TextBox textBox;
UserControl()
{
// 略
this.textBox.Click += new EventHandler(textBox_Click);
}
protected virtual void OnTextClick(EventArgs e)
{
if(this.TextClick != null)
{
this.TextClick(this,e);
}
}
private void textBox_Click(object sender, EventArgs e)
{
this.OnTextClick(EventArgs.Empty);
}
632 :
デフォルトの名無しさん:2005/03/29(火) 10:22:52
EXEとDLLを同じフォルダじゃない所に置きたいのですが
EXE から見て bin\ というディレクトリに DLL を置いた場合は
.configに<probing privatePath="bin"/>を書けばいいのはわかったのですが
EXEからみて上の階層にDLLを置いた場合はどうしたらいいのでしょう?
認められないんじゃなかったっけ。
今作っているアプリが、最近コードがでかくなったせいか、立ち上がりがやたら遅くなってきてちょっと困ってます(5-6秒くらい)
おそらく実コードへの変換の時間が掛かっているのだろうと思うのですが、これ以上長くなると嫌な感じです。
起動時間の増大防止のノウハウとかどこかにないでしょうか?
最長でも三秒くらいで立ち上がって欲しい……
>>636 ngenでもしてみたら。気休め程度。
アセンブリを更新するときに面倒になるからあんまりやりたくない。
>>631 ありがとうございます。
次に作ってみようかなと思っているツールが
簡易表示とメイン表示の二つに分かれていて
共通するコントロール群をUserControlで
まとめた方が良いのかなと考えていたところだったのです。
ちょっとよく分かってなかったりしますが、参考にさせてもらいます。
AというプログラムからBというプログラムが実行されたことを取得したいのですが、
ポーリング以外に方法はありますか。イベントのような形で取得できれば良いのですが。l
AもBも自作のプログラムです。
640 :
デフォルトの名無しさん:2005/03/29(火) 18:01:54
他のアプリからPostMessageされたメッセージを処理したいのですが、
ユーザー定義のメッセージと、フォームのメソッドを結びつける仕組みって
ありますかね?
VCのMFCのON_MESSAGEみたいなやつです。
PreProcessMessage
WndProc
DefWndProc
このあたりを調べれば、メッセージの処理はできそうだと思いますが、
こういうことをするのに定石があれば教えてください。
>>640 WndProcをオーバーライドして、.Msgでswitchさせる、でいいんじゃない?
>>639 Aがウィンドウ(厳密にはメッセージループ)をもってるなら、起動時にBがHWND_BROADCASTにPostMessageするとか。
キョロキョロ
643 :
639:2005/03/30(水) 07:19:56
>>641 ありがとう。それでいけそう。APIは奥が深いなー。
>>636 表示するものと、内部処理のクラスの初期化場所をずらせばいいだけだと思フ。
645 :
デフォルトの名無しさん:2005/03/30(水) 14:10:34
Video編集ツール等によくあるタイムラインってどうやって作るんですか?
写真のサムネイル等も時系列に沿って載せたいのです。
写真ファイルの作成日付にでも沿って並べれば?
647 :
645:2005/03/30(水) 14:28:46
あたりまえだろ・・・orz
>>649 一度全部コピペしてコンパイル&実行してみろ。
その後一行ずつ消していってみろ。
>>649 .NET Framework上で動作するプログラムから、従来形式の(.NETアセンブリなどではない)DLLファイルがエクスポートしている関数を呼び出すには、
DllImport属性(System.Runtime.InteropServices名前空間)を利用し、その関数が外部にあることをあらかじめ宣言しておけばよい。
これは、Win32 APIを呼び出す場合にも同様である。
653 :
ハゲ:2005/03/30(水) 14:58:23
654 :
645:2005/03/30(水) 14:58:31
最後に、Adobe系ソフトをC#(.NET frame work)の機能で作れますか?
API呼び出しとか有りです。
って書いてありましたが日本語読めないんですかねぇ:P
dateTimePicker1
dateTimePicker2
と配置して
それぞれの日付を引き算して
textboxにdateTimePicker1からdateTimePicker2までの日数を求めたいのですが
どのようにすればよいのかよくわかりません。
解説しているサイトなどあればアドバイスいただけないでしょうか?
>>657 割とそのままだと思うんだが、何が分からないんだ?
ComboBox や DateTimePicker に表示される
ドロップダウンボタンと同じボタンを自前のコントロールにはりつけたいの
ですが、Button を継承するなどして自分で書くしかないでしょうか?
どうも通常のボタンとは、XP Style にした時の描画が違っているので
Button をはるだけじゃ同じようにならないんですよね…。
普通のボタンでいいだろ
662 :
660:2005/03/30(水) 16:48:51
>> 661 いいだろって…。
あきらかに VisualStyle の時の描画が違っているのですが。
ComboBox の時などはボタン全体の色が明るくなるのみですが、
普通のボタンだと枠の色がついてしまいます。
また、下向きの > の記号を画像ではりたいのですが FlatStyle を System
に変更すると画像が貼れませんよね?
Combobox や DateTimePicker と見た目が同じボタンをどうにか
作る方法があれば教えてください。
ComboBox.Width = 18;
一番簡単なのは
ComboBoxのWidthを20ピクセルにすることだよな
665 :
660:2005/03/30(水) 17:52:47
>> 663,664
ありがとうございます。目から鱗でした(^^;
やってみたのですが、あと1つ、ComboBox の ドロップダウンボタンを
クリックした時に空のリストが開いてしまうのですが、
これを開かないようにする方法があれば教えてください。
ドロップダウンボタンがクリックされた事は検知しつつ、
ドロップダウンリストが開かなければ希望の動作になります。
よろしくお願いします。
>>665 いやいやいやまてまてまて。
大人しくButton継承して下向きarrow描画しとけって。
どうしてもComboBoxのVisualStyle版に似せたいなら、
できるだけそれっぽく見えるようにOnPaint弄くるのがよろし。
667 :
660:2005/03/30(水) 20:04:36
>>666 うぉ。まじですか。
OnPaint で、ってボタンの描画を全部自前で処理しないと
いけないって事ですか…。とほほほ。
あと、下向き arrow の描画って、もしかしてこれも自分で座標計算をして
2本の線を引くイメージで描画するって事ですか?
敷居がたかいな…(^^;;;
ControlPaint.DrawComboButton
669 :
660:2005/03/30(水) 21:27:06
>> 668
こんな便利なメソッドがあったんですね。ありがとうございます。
で、早速、Button を継承して OnPaint をオーバーライドして
ControlPaint.DrawComboButton を書いてみましたが、
FlatStyle が Standard の時はドロップダウンが描画されましたが
FlatStyle を System に変更すると、Windows.Forms.Button が
VisualStyle で描画されてきてしまいます。
VisualStyle の場合、オーバーライドするのは OnPaint ではなく
別のところになるのでしょうか?
いろいろすみませんがよろしくお願いします。
FlatStyle.Systemだと描画はOS丸投げになるはず。
671 :
660:2005/03/30(水) 21:50:24
>> 670
という事は、Button を継承して、FlatStyle.System にした場合
ControlPaint.DrawComboButton とかで描画しなおす事ができないって
事になりますでしょうか?
FlatSytle.System な状況の、ドロップダウンボタンを描画する方法は
ないのでしょうか。。。。。
FlatStyle.Systemにしなきゃいいじゃん。
673 :
660:2005/03/30(水) 22:07:45
>> 672
おっしゃる通りなのですが…、本末転倒な回答をもらっても
せつないですねぇ。
やりたいのは FlatStyle.System で描画されるドロップダウンと
同じボタンを自前のコントロールにはりたいって事なのです。
簡単には無理なことなのかしら…。
そもそもたしかControlPaint.Draw...でVisualStyleの描画はできなかったはず。
.NET 2.0で...Rendererクラスが色々追加されてるし。
ま、私はVisualStyleなんてクソ食らえとしか思ってないからどうでも良いけど。
676 :
デフォルトの名無しさん:2005/03/31(木) 00:07:48
Cookieが取れない。
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.CookieContainer = new CookieContainer();
myHttpWebRequest.Timeout =5000;
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
CookieCollection myCookieCollection = myHttpWebResponse.Cookies;
GoogleではCookieがちゃんと取得されてるのに
他のサイトでは取得できませぬ・・。
Set-Cookieがsecure指定だと取得できないのでしょうか?
>>676 取れないところのURL例を示せる? 試してみたい。
678 :
デフォルトの名無しさん:2005/03/31(木) 00:17:40
>>678 ん〜、確かにCookiesじゃ拾えないねぇ。
取りあえず代替策としてmyHttpWebResponse.Headers["Set-Cookie"]を提案しておこう。
自力で分解しなきゃいけないけど。
680 :
デフォルトの名無しさん:2005/03/31(木) 01:01:18
質問というか、C#プログラマの同志達に少し意見を聞きたいんですけど、
現在、MSとかも(表向きは)次世代言語として(Javaとの軋轢もあるんでしょうけど)C#を推してますよね?
確かに.net構想やOSの仮想化などは非常に素晴らしい技術ですし、
.net下のC#によるプログラミングは強力かつ非常に効率がよく、
これから是非普及してもらいたいと思っています。
ただ、現状として.net環境で作られた商用プログラムというのは殆ど存在しません。
理由は単に動作できる機種の問題だけではなく、
中間言語と使うという特徴の為にソフトウェアの内部構造が
容易に解析できてしまうというのが原因ではないでしょうか?
そこで現在のC#プログラマの皆さんは今後、商用ソフトウェアが普及する
余地があるのかどうか?またその為の技術への予想などについて
ご意見頂ければと思います。
長文失礼w
ユーザがランタイム入れるの嫌がるから。
.NETの焦点は飽くまでWebプログラミングだから。
Longhorn が出れば勝手に普及すると思ってる。
683 :
デフォルトの名無しさん:2005/03/31(木) 01:34:53
けど、C++を超えれるとは思えん
もとも.NETってエンタープライズ分野をターゲットにしたもの
だと思うんだよね。実際そっち方面では徐々に普及が進んでるし。
商用アプリみたいなものまでC#で作られるようになるのは、言われてる
ようにLonghornしだいのような気がする。
685 :
デフォルトの名無しさん:2005/03/31(木) 01:40:43
つか、商用アプリをC++を使わずにC#を使うメリットってある?
普及の問題はLonghornで解決すると思うが、ソースの可読性の問題はなあ。
このスレで前にも問題になったがシリアル認証のロジック部とか見られたらアレだし。
法人なら難読化ソフト買えるのだろうが、日曜プログラマに取って英語版でも高杉。
C#先がみえたな フッ
マイクロソフトなんてくそだ フッ
688 :
デフォルトの名無しさん:2005/03/31(木) 01:53:10
ソースごと配ってるような個人たちにも普及してないよね
689 :
デフォルトの名無しさん:2005/03/31(木) 02:37:47
C++をガシガシ使える人には全然魅力無いと思う
C#なんて所詮C++挫折組みが使うんでしょうね
690 :
680:2005/03/31(木) 08:51:03
>>689 C++プログラマにもC#は非常に魅力的に感じていますよ、
実際、私は現在でも職場ではC++しか使用しませんけど、
趣味の範囲では極力C#を使用しています。
>>685 今後、64bit対応OSやCPUなどが普及すると思われますが、
.Net環境で作られたソフトウェアは32bit下では32bitソフトウェアとして、
64bit下では64bitソフトウェアとして動作させることができるようです。
つまり、プログラマとしては32bit版と64bit対応版を作らなくても
1つのソフトで32bit動作も64bit動作も可能になるわけです。
商用アプリは生産性が非常に重要ですからこれは素晴らしいアドバンテージではないでしょうか?
実際、Javaが普及したのもLinux環境などへの移植が容易だということが
非常に大きいと思いますので・・・
>>686 そこが一番の心配なんですよね、
やはり当分はセキュアな動作の求められるロジックはC++などで書くことになりそうです。
セキュアて?
安全なとかだったっけ(うろおぼえ)
ぐぐれ、あるいは辞書を引け
てーかだな、C++アプリだって逆汗すれば認証のロジックは普通にわかるし
認証を潰すのだって大抵難しくない。
おいらがC#に魅力を感じているのは、何でもかんでもマクロでグチャグチャ
やるような汚さがない所。
Win32 API の関数名がいちいちマクロだったりするしなぁ……
認証ねぇ…。
まぁC#を使うことで良くはならないけど、今更悪くもならないよ。
発売前にクラックパッチが出てしまうご時世ですから。
他のアプリケーションを
calc.exe
などで指定して実行はできるのですが
特定のファイルなどを実行するさいはどうすればよいのでしょうか?
たとえばデスクトップに置いてあるファイルを実行するには
どのようにすればよいのかアドバイスいただければと思います。
calc.exeを実行するように実行すればいいんじゃね。
何が論点なのかわからんよ。
>>697 たぶん
System.Diagnostics.Process proc =
new System.Diagnostics.Process();
proc.StartInfo.FileName = "notepad.exe";
proc.Start();
感じでやってるんだと思う。
当然ここでnotepad.txtをc:\hello.txtとかに変更すると
うまくいかないから
どうすればいいのかって感じで聞いてるんだと思う。
System.Diagnostics.Process.Start("C:\test.txt");
が失敗します。
その前にのーとぱっどは普通に出てるのかな。
エラーが出てだめなのか、のーとぱっどしか出ないのかわがんね。
System.Diagnostics.Process.Start("notepad.exe", @"C:\test.txt");
えぇ
test.txt は実行可能じゃないから Process.Start じゃ起動できん罠
えーと、普通関連づけられたプログラムで起動するんだけど。
Process.Startに渡されるProcessStartInfoのUseShellExecuteがfalseにされてない限り。
705 :
デフォルトの名無しさん:2005/03/31(木) 18:41:37
コンソールアプリを初めて作ったのですが、
起動するとファイルをダウンロードして同じフォルダのデーターを最新にアップデートするという
単純なソフトですのでコンソールウィンドウなんて表示させたくないんです。
ウィンドウを表示させない方法ってありますでしょうか?
/t:winexe
VS/VC#ならプロジェクトのプロパティ>出力の種類:Windowsアプリケーション
707 :
デフォルトの名無しさん:2005/03/31(木) 19:24:26
即レス有り難う御座います。
設定のみで出来たのですね。不覚でした。
ありがとうございます。
>>686 >ソースの可読性
おまえは何の話をしている。
確かにソースの可読性じゃないなw
リバースエンジニアリングのしやすさか
そんな前の事いちいち引っ張り出して...
よっぽど暇なんだね
711 :
デフォルトの名無しさん:2005/03/31(木) 20:45:12
スタートアップフォルダを取得するにはSystem.Windows.Form名前空間のApplicationクラスを使うしか方法がありませんかね?
System.ReflectionのAssemblyらへんでは無理でしょうか?
>>694 > おいらがC#に魅力を感じているのは、何でもかんでもマクロでグチャグチャ
> やるような汚さがない所。
禿同。あの仕様はうんこすぎる。
>>711 ILDASMでSystem.Windows.Forms.dllのSystem.Windows.Forms.Applicationクラスの
get_StartupPathやget_ExecutablePathの動作を見てみるといいよ。
ILなんて分かるかという人でも、呼んでるメソッドを見るだけでも色々分かる。
714 :
デフォルトの名無しさん:2005/03/31(木) 21:29:14
EnableVisualStylesをしてflatstyleをsystemにすれば
buttonなどもVisualStyleに対応しますが、
フォームにMS Web browserを貼り付けると
VisualStyleではなくなってしまいます。
こういうものなんですか?
ウェブブラウザ貼り付けて、かつビジュアルスタイル対応にするにはどうしたらいいの?
>>711 EnvironmentクラスのCurrentDirectoryとか、
AssemblyクラスのGetEntryAssembly()から取得とか、
ProcessクラスのMainModuleとか。
GetEntryAssemblyはAppDomainが分かれているときに取得できないので使わない方が無難。
CurrentDirectoryは作業フォルダだったと思う。MainModuleの場所と違ってたりするわけで、どっちが欲しいのかわからないけど。
716 :
デフォルトの名無しさん:2005/03/31(木) 22:46:04
そういうもんなの
717 :
デフォルトの名無しさん:2005/03/31(木) 23:31:41
ねぇ、ぶちゃけ業務でC#使ってる人いる?
WindowsクライアントアプリはVC++ってのが常識みたくなってるからな〜
719 :
デフォルトの名無しさん:2005/03/31(木) 23:41:29
そうですか
VC#のVC++に対する優位性がないためだれも使おうなんて言い出さないんですよね
Webアプリ(ASP.NET)の業務でなら使ったけど、クライアントアプリでは使ってないなあ。
つうか業務アプリ開発でWindowsなら今は.NETが当たり前だと思うが。
もしくはVB6でしょ。生産性考えなさいよ。
723 :
デフォルトの名無しさん:皇紀2665/04/01(金) 00:15:46
VB以外は生産性が低いなんていってる奴は結局
力不足が殆どなんだよね
意味わかんねw
論点の摩り替えだろ。
725 :
デフォルトの名無しさん:皇紀2665/04/01(金) 00:25:18
ところで今年は何年?
726 :
デフォルトの名無しさん:皇紀2665/04/01(金) 00:29:06
↑
年賀状もこない淋しい奴
時計も付いてないパソコン使ってるの?
728 :
デフォルトの名無しさん:皇紀2665/04/01(金) 00:34:19
おまえばか?
今日は何月何日だ?
ほんと氏ねよ
プッ すぐ釣れたよ春厨
皇紀2665年ですがいまさら何を?
よくわからない暦をおいときますね。
ヒジュラ紀元後第48周期第16年 Safar月
C#が存在する今、.netが使える環境でC#以外の言語使うやつはウンコ
C++のほうが自由でやりやすくね?
マイクロソフトもC#よりC++/CLIに全力を注ぐらしいよ。
資源が豊富だからっていう理由で。
735 :
デフォルトの名無しさん:皇紀2665/04/01(金) 02:13:22
愚問ですがC#って簡単に言うとC++とどう違うんでしょう
マニュアルらしきものを見てもいまいちよく分からなくて
C++はある程度理解していますがまだ使えるレベルではないので
C#を学習したほうが将来的に有利なのでしょうか
C++のポインタを見えなくし、メモリの管理をプログラマの手から奪い去ったもの。
将来の事なんか分かるか。
クライアントアプリならC++、サーバアプリならそうでないもの。
.NETの世界でやるならC#で十分。
739 :
デフォルトの名無しさん:皇紀2665/04/01(金) 02:46:50
>>736 レスありがとうございます
えっそうなんですか
ポインタがなくなるのはうれしいことですが(頭痛のたねがひとつへります)
速度的にはあまり期待しないほうがいいと解釈していいのですね
例えばC/C++では、文字列の3番目に何回もアクセスしたい時は
文字列アドレス+2バイトのアドレスを変数に持っておいたら
アドレス計算はいらないというのがポインタの利点だと
教わった事がありますけど
C#は添字方式でアドレスをその都度計算すると理解していいのですか...ね
文字列の3番目に何百万回アクセスするんだ?
741 :
デフォルトの名無しさん:皇紀2665/04/01(金) 02:52:01
レスありがとうございます
>>737 .NET買えませんw
貧乏ですので
>>738 できればそうしたいのですがあまり覚えいい方ではないので
楽したいなあってw
742 :
デフォルトの名無しさん:皇紀2665/04/01(金) 03:03:44
>>740 えっと...わかりません。教わった事そのまんまです
だみだこりゃ
>>741 .NET Framework自体は無料なんだが…。
勉強にVSはいらんよ。
以下、チラシの裏。
よく「どれやればいいですか」みたいなこというやついるけど…
手当たり次第やれよ。
C#やっててもP/Invoke周りでC++の知識バリバリに必要だし、
C#でGenericsあたりは関数言語からの流入だし(C++Templateもな)、
C#, C++で正規表現ライブラリはPerlだし、
逆にC#で使われてるような設計論(Frameworkな)が
C++で役に立たないわけでもないし、auto_ptrとかで自動管理
しだしたりしたら、GC周りの知識も役に立つし…。
ま、知識は多いほうがいいのでそれを増やすことに精進しなさいってこった。
746 :
sage:皇紀2665/04/01(金) 04:25:06
JavaでEJBとか今までやってきたんだけど、
WEB鯖のASP.NETアプリからDB鯖のADO.NETアプリを
呼ぶような形にしようとしたら、
WEB鯖とDB鯖の間の通信機能ってもしかして作りこみ必要?
EJBとかだと、EJBの仕様の中で通信ロジックが閉じてたんだけど。
(ていうか、EJBをサポートする製品によって違うのかな?)
よさげなサイトあったらおしえてけれ。
すごいsageかたしてしまったよ。
748 :
デフォルトの名無しさん:皇紀2665/04/01(金) 04:32:41
>>744 レスありがとうございます
えっ無料ですか?知らなかった
先入観だけで10万以上するもんだと思って調べもしませんでした
とりあえずC++、C#ともにやってみます
(正直、P/Invoke辺りからちんぷんかんぷんですが...)
あれ・・・C++で.netするときは、C++もC#と同じ手法でリバースかかるんじゃなかったっけ?
.net使う場合は言語関係なく出来上がるのは同じじゃなかったのか・・・・
コントロールの左端の画面上の座標を得るにはどうしたらよいでしょうか?
Locationプロパティの場合、そのコントロールがのっているコンテナの
左端からの相対位置になってしまうのですが、そうではなく
画面上(Windows のデスクトップ)の左端からみてどの位置にいるかを
取得したいのですが方法がわかりません。
やりたい事はテキストボックスでダブルクリックしたら、そのテキスト
ボックスの下に、別のフォームを表示させたい、という事になります。
よろしくお願い致します。
DesktopLocation
PointToScreen
756 :
753:皇紀2665/04/01(金) 14:50:47
>>754 >>755 ありがとうございます。どちらもうまくいきませんでした。
というのは DesktopLocation はフォームの位置が取得できるのですが
コントロールの位置が取得できません。その為、DesktopLocation にて
フォームの位置を取得し、コントロールののっているコンテナ(例えばグループボックス)
の位置を取得し、で最後に自分自身の Location を足せばいいのですが、
できれば位置取得はどのコンテナにのっていても自身のコントロールの
左端の位置を取得したいのです。
PointToScreen もコンテナからの相対位置は取得できるのですが、画面から
の絶対位置をコントロールに対して求められないような気がします。
私のコードに問題があるのかもしれません。
例えば
private void ShowOtherForm(System.Windows.Forms.Textbox tb){
Point pt;
// tb に対して絶対座標をを求める
return pt;
}
のような共通関数にしたいので、コントロールから見た絶対位置を
(どのコンテナにのっているかは関係なく)取得させたいと思っています。
お手数おかけしますが、よろしくお願いします。
>>756 ざっくり単純に言って tb.PointToScreen( new Point(0,0) ) でいいと思うけど・・
758 :
デフォルトの名無しさん:皇紀2665/04/01(金) 15:20:17
質問です。
ListBoxにstringを複数表示して、その中の特定の文字列を選択状態にするコードを書いているのですが、
以下のようなコードを書いてみたところ、どうしてもうまくいきません。どこかおかしな所があるか判定してください。
//引数は、情報一覧、選択されている情報。
public InfoDialog(string[] infos, string[] selectedInfos)
{
this.ListBox1.ScrollAlwaysVisible = true;
this.ListBox1.SelectionMode = SelectionMode.MultiSimple;
//とりあえず、情報一覧を表示
this.ListBox1.Items.AddRange(infos);
//全ての選択されているアイテムに対して
foreach(string selectedInfo in selectedInfos){
//ListBox1から探し出して、選択状態に
if (this.ListBox1.Items.Contains(selectedInfo)){
//TODO:なぜか選択状態にならない。
this.ListBox1.SetSelected(EventBox.Items.IndexOf(selectedInfo), true);
}
}
}
追記。
if文のところに、
else
this.ListBox1.SetSelected(EventBox.Items.IndexOf(selectedInfo), true);
と書いてもなぜかArgumentOutOfRangeExceptionが発生しないので、そのあたりが怪しいと思うのですが…
よろしくお願いします。
759 :
756:皇紀2665/04/01(金) 15:20:54
>>757 ありがとうございます。すみません。単純なフォームなら頂いた方法で
できました。
でも、
FormA > TabControl > FormB > GroupBox > TextBox
のように、親フォームの中にあるタブに、子フォームを表示させた場合、
子フォームの中の TextBox にて PointToScreen で座標を取得すると
どうも、TextBox ののっている GroupBox からの相対座標が
かえってくるようです。。。何か他に行なう必要がありますでしょうか?
御教示のほどお願いします。
>>758 > this.ListBox1.SetSelected(EventBox.Items.IndexOf(selectedInfo), true);
EventBoxって何よ。別コントロールのインデックス見たって仕方ないじゃん。
あ、すみません。それは書き込み用に書き換えた時のミスです;
そこはListBox1だと思って読んでください・・・
>>758 困った事に普通に選択状態になってしまった。
> なぜかArgumentOutOfRangeExceptionが発生しない
selectedInfos各要素が必ずinfosのどれかに一致するならそもそも回ってくる事がないが。
IndexOfは何を返してるんだ?
既に"hoge"がListBoxに入って且つ選択状態になっていて、
その上で更に"hoge"をinfos&selectedInfosの要素として与えたとか?
IndexOfは、指定したobjectがListBoxのいくつめに入っているかを返すメソッドだそうです。
また、ListBoxに先に値が入っていることはありません。
なんでならないんだろうなぁ。もうちょっといじってみます。
ありがとうございました。
>>763 this.ListBox1.SetSelected(-1, true);
これって ArgumentOutOfRangeException 出るんだっけ?
>>764 はい。SetSelectedの引数は、0から始まるインデックス番号、との事なので、出ると思うのですが・・・
>>762さん、もしまだいらっしゃったら、どのようにしたら選択できたか教えていただけないでしょうか?
新しいプロジェクトを作り、Form1.csに以下のメソッドを作成して、コンストラクタで呼んでみたところ、やはり選択されませんでした。
private void a() {
ListBox listBox1 = new ListBox();
listBox1.Size = new System.Drawing.Size(200, 100);
listBox1.Location = new System.Drawing.Point(10,10);
listBox1.ScrollAlwaysVisible = true;
listBox1.SelectionMode = SelectionMode.MultiSimple;
this.Controls.Add(listBox1);
string[] infos = new string[]{"test1", "test2", "なんでだろう?", "なんでだろう2"};
string[] selectedInfos = new string[]{"test1", "なんでだろう?"};
//とりあえず、情報一覧を表示
listBox1.Items.AddRange(infos);
//全ての選択されているアイテムに対して
foreach(string selectedInfo in selectedInfos){
//ListBox1から探し出して、選択状態に
if (listBox1.Items.Contains(selectedInfo)){
//TODO:なぜか選択状態にならない。
listBox1.SetSelected(listBox1.Items.IndexOf(selectedInfo), true);
}
}
}
selectedInfosが本当にinfos内にあるのか、別のlistBox使うとかして
printデバッグしてみたら?
ちなみに、if文の中でWriteLineで適当な文章を吐き出させたところ、それはうまくいっているので、分岐が行ってないって事はないみたいです。
たびたびすみません。
>>766 入れ違いになってしまいました。
試してみましたが、とりあえず、それは大丈夫なようです。
おや、コンストラクタじゃダメだね。
まだFormのハンドルが作られてないからかな。
Loadイベントでやりな。
俺もClickイベントで呼んだら選択してたよ
ありがとうございます、上記のテストプロジェクトではうまく表示できました!
これから、元の方でも試してみたいと思います。
コンストラクタの理解が足りなかったようです。
勉強になりました!
重ね重ね、ありがとうございました。
このスレって問題が解決すると止まるな。
相談室ですから
どのタブページ上でクリックされたか知る方法はないですか?
右クリックでコンテキストメニューが出たときに、このタブページを閉じるってやつがやりたいんですが。
>>774 どうやるんだったかな〜
『このタブ閉じる』 の時に選択されているタブを閉じるとか
あとは、クリックされた座標から該当するタブを割り出すとか
ComboBoxのTextChangedイベントでthis.Textを参照すると、
今入力された文字じゃなくて、その前の状態の文字列が返ってくる・・・。
777 :
デフォルトの名無しさん:int 2ch =05/04/01(金) 20:59:28
ググると色々出てきますが、シリアル通信してる人って何使ってますか?
.netでシリアル通信〜にでてたserialport(Formに貼り付ける奴)と
MSCOMMは試しましたが、感覚的にはserialportの方が使いやすいかな?
って感じでした。(独断)
で、みなさんはどんなのつかってますか?
PocketPC(.NET Compact Framework)
でクリップボード操作するにはどうしたらいい?
テキストボックスから文字列をコピーやペーストしたいんだけど。
WEBサービスを使ってoracle10gに接続しています。
しかし、
OracleConnection cn = new OracleConnection();
の行で
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
のエラーが出てしまいました。
どうしたらいいでしょうか?
Web上の画像をPictureBoxに表示させたいのですが皆さんはどのようにコーディングしてますか?
1:HttpWebRequest 使ってダウンロード
2:表示
の手順
……どうでも良いけど、int 2ch = だとエラー起きるからこの板的には int _2ch = の方が良いのではとおもた
783 :
デフォルトの名無しさん:int 2ch =05/04/01(金) 23:11:03
難しいことは良くわからんが・・・
ロングホーンに.NET Frameworkが標準搭載なら
C#を配布しやすくなるということかな?
わざわざLinuxでc#を使うプロジェクトもあることだし、
普及していくんじゃない?
784 :
デフォルトの名無しさん:int 2ch =05/04/01(金) 23:12:46
オブジェクト参照にオブジェクト インスタンスを設定すればいいだけでは?
>>783 最近買った DELL の PC (XPSP2) には最初から入ってました
Win32API がそろそろ限界だから、代替品を .NET Framework に求めて、
ついでに win がこのまま主流を保つならば、普及せざるを得ないと思う
……何年かかるかは分からんが
>>780 オラクルの設定 (DB名とか)再確認
IISの設定 アプリケーションの登録など
787 :
デフォルトの名無しさん:int 2ch =05/04/02(土) 01:18:46
ファイルを読み込んでHexで表示したいのですが(みるだけバイナリエディタみたいな感じに)
とりあえずテスト用に以下のコードを書いたのですが、
using(FileStream fs = new FileStream(this.openFileDialog1.FileName,FileMode.Open))
{
fs.Read(b,0,99999);
}
for(int i = 0 ; i < 99 ; i++)
{
this.textBox1.Text += b[i];
}
がTextBoxに16進数でひょうじさせるにはどうしたらいいでしょうか?
そのままだと10進数に直されてしまいます。
ToString("X2")
789 :
787:int 2ch =05/04/02(土) 01:45:27
多謝。
X2ってなんだよーって感じなのでぐぐってきます。
C#を始めて1ケ月くらいの初心者ですが
MFCにくらべて洗練された.NETFWのメッセージ処理など気に入ってます。
ところで、皆さんは.NETFramewarkのリファレンスは何をお使いでしょうか?
私のPCは古くて立ち上がるのが遅いので、勉強したりするときのために
紙の媒体が欲しいなと思ってたのですが、
先日送られてきた日経BPのカタログに載っていた、公式リファレンスの
約30冊構成、20万円弱の価格に驚愕してしまいました。。
公式のは貧乏人の私にはとても手が出せないのですが、他に紙の媒体で
5冊ぐらいまでの構成で何か手頃なのはありませんでしょうか?
素直にMSDN使っておけ
紙で持ってたっていいことないぞ。5冊で済むわけないしな
起動が遅いなら、本買うお金でPC強化汁
> MFCにくらべて洗練された.NETFWのメッセージ処理
ってなに?
20万出して本買うくらいなら、新しいPC買ったほうが絶対によいよな。
新しいPC買っても解決しないけどな
紙の媒体を買う理由が「古くて立ち上がるのが遅い」というのであれば解決策の1つだとおもうけど。
オンラインのMSDNライブラリの重さは救いがたいよな。
ms-help:// でローカルのを開くのは我慢できるけど。
MSDN2の方は場合によってローカルのより早かったりするけれどなw
798 :
デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 17:10:50
マウスカーソルの左下にツールチップを表示したいんですが
どうやったらいいですか?
ツールチップを表示させるのか、ポップアップウィンドウを表示させるのか
800 :
デフォルトの名無しさん:2005/04/02(土) 17:35:38
TextBoxのようなクラスを自作しようと思っています。
そこでGDI+でDrawStringメソッドを利用して描画することまで
解りました。しかし、画面に入りきらない文字列に関してはスクロール処理
をしたいのですが、どのように行えばいいのでしょうか?
いつもはトランザクション制御とかそんな事ばかりやっていて描画系統は
初心者です。よろしくお願い足マス。
トランザクションがどういうのか気にならなくも無いけど、
・スクロールバー貼り付けて最上位の行数決定
・その行数から下に向かって、はみ出るまで描画
でいいんちゃう?自作したこと無いけど
802 :
デフォルトの名無しさん:2005/04/02(土) 18:03:29
なるほど、その辺はわかるのですが具体的にどうやって作るのですか?
サンプルが欲しいと思っています。
メインがenterprise system構築に伴う開発なので全然グラフィック関係など
解らないことを言いたかっただけです。
ほう、enterprise system構築に伴う開発をするにはヘルプを読んだりぐぐったりする能力は必要ないと。
806 :
デフォルトの名無しさん:2005/04/02(土) 19:21:43
>>805さんどうもすいません。
このソースを参考にがんばってみようと思います。いろいろありがとう
ございました。ソース見る限りそんなに難しいことはないようで助かりました。
807 :
デフォルトの名無しさん:2005/04/02(土) 20:31:36
GoogleDeskbarみたいに
自分の作ったアプリケーションをタスクバーに登録するにはどうしたらいいですか?
808 :
デフォルトの名無しさん:2005/04/02(土) 20:44:26
全部読んだけど、sharpeditってSharpDevelopのエディタ部分DLL化して
利用してるだけだな。
809 :
デフォルトの名無しさん:2005/04/02(土) 21:31:39
くだらない質問なんですが
VisualStudioがcscに渡しているコマンドラインを確認するにはどうすればいいでしょうか?
C++の場合は、プロジェクトのプロパティにあるんですが・・・
810 :
デフォルトの名無しさん:2005/04/02(土) 22:41:01
プロパティの使い方がよくわかりません。
getもsetもする場合、プロパティを使った方がいいのか、
publicな変数にしたほうがいいのか、それとも何かの基準で使い分けるのでしょうか?
まあプロパティに統一しとけ。
初めはパブリックフィールドにしといてあとで必要に応じてプロパティに、と言う手法もあるが、
あとでリフレクション使おうとした時に面倒だ。
812 :
デフォルトの名無しさん:2005/04/02(土) 22:56:59
了解です。
即レスありがとうございます。
VS.NETのテキストエディタっていえば・・質問に優しく親切・・スレでこんな質問してるヤシがいるぞ
47 :デフォルトの名無しさん :皇紀2665/04/01(金) 15:07:35
VS.NET2003のテキストエディタのフォントをCenturyとかにすると日本語が大きなサイズになってしまいます。
英文字はCenturyで日本語はMS Pゴシックにする設定はありますか?
FontLinkで
815 :
デフォルトの名無しさん:2005/04/03(日) 00:56:18
C++Builderを使ったことがある人がいたら教えてください
BCBのStringGridみたいなコンポーネントが欲しくなるとき無いですか?
そういうときはどうしています?
Visual C# を買うとCDが数枚あって面倒なのでDVD化したいのですが、
どこか参考になるところや、DVD化の方法がわかる方いたら
お願いします。
何十回もインストールするもんじゃなし、方法を探して実行する方がよほど面倒だと思う。
すべてを否定したね
CD-ROMのreadme.htmlを読まずに書き込む817がいるスレはここですか?
MSDN サブスクリプションでDVD版も落とせるよ。
823 :
デフォルトの名無しさん:2005/04/03(日) 16:55:28
.Net 2.0のSystem.Windows.Forms.WebBrowserで
Proxyを指定してブラウズする方法について教えてください。
HttpWebRequest httpRec = (HttpWebRequest)WebRequest.Create( "
http://www.yahoo.co.jp" );
httpRec.Proxy = new WebProxy( "localhost", 8080 );
HttpWebResponse httpRes = (HttpWebResponse)httpRec.GetResponse();
this.webBrowser1.DocumentStream = httpRes.GetResponseStream();
上記のように表示させると、トップページのHTMLはProxy経由でアクセスするのですが、
<img>タグなどからリンクされているものに関してはProxyが適用できません。
また、上記の方法での表示ではWebBrowser.Urlに現在のUrlが入らない(空のまま)ため、
相対パスのリンクを踏むと about:blank/hoge/hoge のようなアドレスが返されてしまい、
正常にリンク先に飛ぶことができません。(しかしUrlプロパティにアドレスを入れてしまうと、
WebBrowserがProxy無しで勝手に通信し始めてしまう)
むり。
825 :
823:2005/04/03(日) 21:40:31
そんなこと言わずに。
無理
827 :
823:2005/04/03(日) 21:49:14
そこを何とか。
DocumentStreamに直接流し込まず、imgタグのsrc属性を加工してローカルPC上の画像を読みに行くようにする。
モチロン画像はHTMLを解析して自前でリクエスト投げる。
それがイヤならインターネットオプションの設定を一時的に変更するしかないんじゃないかな。
829 :
デフォルトの名無しさん:2005/04/03(日) 22:41:10
830 :
823:2005/04/03(日) 22:56:40
>>828 oh my god.
諦められそうですよ。
IEコンポ使ってるタブブラウザとかは、
この辺の処理どうやってるんだろう。
System.Windows.Forms.WebBrowserって
axWebBrowserのラッパーの筈だよね。
>>830-831 IEコンポなら普通はAPIですよ。InternetSetOption()だったかな。
要するにインターネットオプションを直でいじると。
834 :
832:2005/04/04(月) 00:22:36
>>833 インターネットオプションではなく、プロセス毎の設定が変えられたはずです。
もう寝ますけど。おやすみなさい。
835 :
823:2005/04/04(月) 10:28:08
836 :
デフォルトの名無しさん:2005/04/04(月) 12:20:58
特定のファイルを実行する方法を探しております。
ネット上で検索するとプロセススタートなどがひっかかりますが
こちらが作成した任意のファイル(テキストやエクセルファイル等)を
実行させる方法が見つかりません。
どのコードを使用すればよいのかいまいちわかりません。
任意のファイルを実行するにはどのようにすればよいのでしょうか?
>>836 System.Diagnostics.Process.Start
838 :
836:2005/04/04(月) 13:52:19
>>837 ありがとうございます。
System.Diagnostics.Process.Start("notepad","c:\\hello.txt");
とすることで実行できました。
多少カッコ悪いですが実行できたので良しとします。
もっとシンプルに出来そうな気もしますが・・・まだそこまでのスキルがないので
今後の宿題にしたいと思います。
ありがとうございました。
え? Process.Start("hoge.txt")で関連づけられたので起動するだろ?
840 :
デフォルトの名無しさん:2005/04/04(月) 14:10:49
いま出先だから確認できないけど
どっちでもOKだと思う。
軽いとか重いとかどちらがいいかは俺にはまだわからんけど。
2回目以降がうまく変わらない orz
[DllImport("urlmon.dll", CharSet=CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(
int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
private const int URLMON_OPTION_USERAGENT = 0x10000001;
private void button1_Click(object sender, System.EventArgs e){
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, textBox1.Text, textBox1.Text.Length, 0);
if(true){//WebBrowserコントロールを再作成
panel1.Controls.Remove(axWebBrowser1);
axWebBrowser1.Dispose();
axWebBrowser1 = new AxSHDocVw.AxWebBrowser();
axWebBrowser1.Dock = DockStyle.Fill;
panel1.Controls.Add(axWebBrowser1);
}
axWebBrowser1.Navigate("h" + "
ttp://www.ugtop.com/spill.shtml");
}
private void button2_Click(object sender, System.EventArgs e){
axWebBrowser1.Navigate("javascript:alert(window.navigator.userAgent)");
}
842 :
デフォルトの名無しさん:2005/04/04(月) 16:16:48
Paintイベントで
e.Grahpics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None ;
e.Grahpics.DrawImage( image , x , y , w , h ) ;
として描画しているのですが、画像がスムースになってしまいます(ドットがクッキリにならない)
どう設定すればドットがクッキリした画像を表示できるようになるか知っている人教えてください。
image は Bitmap クラスのインスタンスです。
どこで聞けばいいのかわからないのですが
とりあえず C# ということで
利用ソフト:Sharp Develop
タブコントロールで、選択状態に関わらず
必ずコントロールを表示するにはどうすればいいのでしょう?
単純にタブ切り替えの見た目だけを利用したいのです
C++Builderでいう、タブコントロールです
>>841 C#あんまり関係無いと思いますよ。
適所は無いのかな。
846 :
デフォルトの名無しさん:2005/04/04(月) 23:06:09
動的に配列のお尻にデータを追加したいのですが、どのようにすればいいでしょうか?
イメージはPerlのpushです。
よろしくおながいします。
初めからArrayListを使えと。
848 :
846:2005/04/04(月) 23:12:32
ArrayListがありましたか。。。スマソ_| ̄|○
>>847 サソクスです。
849 :
デフォルトの名無しさん:2005/04/05(火) 00:23:13
非同期デリゲートのBeginInvokeで非同期実行してる時に
現在の非同期実行をやめさせる方法ってどうすればよいのでしょうか?
ThreadStart ts = new ThreadStart(method);
IAsyncResult ar = ts.BeginInvoke(null,null);
while(!ar.IsCompleted && _isAlive){
Thread.Sleep(1000);
}
のようにポーリングを使ってとめたい時に_isAliveをfalseにする方法ならできたのですが
WaitHandleを使う方法があったらその方がよいのかな.と思うのですが
850 :
844:2005/04/05(火) 00:42:59
>>844 とりあえずは、タブのページ毎に
コントロール委追加することで対処
これが正しいかどうかはわからないが
C#歴3日の俺にあったスレがほすぃ
初歩的なことで申し訳ないが、
P/Invokeを使った際に、ポインタのポインタとはどのように処理すればいいんだろうか?
自分は無理矢理unsafeでポインター使いまくりで解決できると思ったんだが
どうもうまくいってない模様。
意見求む。
852 :
デフォルトの名無しさん:2005/04/05(火) 01:53:10
Invokeでデリゲートを渡して処理をメインスレッドから分岐するのと
Threadを起してインスレッドから分岐するのではどう違うの?
どちらでも良さげだが・・・
RictTextBoxにBOMつきのUTF8データ表示させようとすると
先頭の1文字目の表示がおかしくなるのはなぜなのでしょうか?
854 :
デフォルトの名無しさん:2005/04/05(火) 02:00:09
Invokeでデリゲートを渡して処理をメインスレッドから分岐するのと
Threadを起してインスレッドから分岐するのではどう違うの?
どちらでも良さげだが・・・
>>850 俺も最近VB→VB.NET(変更点を学んだだけ)→C#に乗り換えたので
そういうスレほしい。開発環境はSharp Develop使ってる。
>>853 UTF8EncodingクラスにBOMの解析能力がないから。
StreamReaderはできてるって?
StreamReader内のメソッドがBOMコードを静的に埋め込んでチェックしてるのさ。有り得ない事に。
.net2.0では下記のような処理で
System.InvalidOperationExceptionが発生します。
スレッド内から別のコントロールを弄っちゃいけませんよ、
というような理由なのはわかったのですが、
これの代替となる処理はどう記述すればよいのでしょうか?
public class TestForm : System.Windows.Forms.Form {
public TestForm() {
}
private void CreateThread() {
Thread T = new Thread( new ThreadStart( ThreadTest ) );
T.Start;
}
private void ThreadTest() {
this.Controls.Add( new Button() );
}
}
>>859 今まで(.NET1.0/1.1で)別スレッドからコントロールをいじってたのか?
Invoke/BeginInvokeを使う。
データバインディングが MS Access 並に使いやすくなって、
コントロールも機能強化されれば、.NET + C# 最強なんだけどなぁ・・・
>>860 delegateとInvokeで少しお行儀良く別スレッドのコントロールを触ることができました。
ありがとうございます。
IISの設定が悪くてオラクルがうまくうごかないです。
WEBサーバーからメソッドを呼び出してoracleconnection()をnewするとオブジェクト参照エラーになってしまいます。
864 :
デフォルトの名無しさん:2005/04/05(火) 23:41:15
独自ユーザーコントロールを作る時に
Baseクラスとしてabstractで共通処理を書いたのですが
サブクラスをデザイナーで編集しようとすると、できなくなってしまいました。
Baseクラスをabstractで実装するのは無理なのでしょうか?
>>861 Forms 2.0 からそんな感じの機能が強化されてた気が
いつも思うんだがInvokeって最低だよな、まったく誰だよこんな設計にしたアホチンは
Windowsの制限なのは確かだな。
他のOSのウィンドウシステムはどうなんだろ。
JavaもGUI部品操作は単一スレッドを強制するらしいけど。
ListBoxをマルチカラムで表示させたいのですが、
どうやったらデフォルトの単一カラムからマルチカラムにきりかえれるんでしょうか。
どうしてもListBoxじゃなきゃやだというのなら、
一度プロパティに一通り目を通せ。
AutoScaleBaseSizeって何のために使うんだ?
ぐぐると5,12と5,13の二パターンが出てくるが、どっちが正しいのかもよく分からん。
>>864 俺も今ちょうど同じ症状が出た。どうしたもんかね。
873 :
デフォルトの名無しさん:2005/04/06(水) 10:19:41
技術的に可能なのか?の質問です。
ブラウザ(IEorネスケ)からWebサーバへ要求を出し、サーバは独自のMIMEタイプのデータを
ブラウザへ応答します。
サーバからの応答を受信したブラウザはMIMEタイプを認識し、
独自のアプリケーション(以下独自AP)を起動します(コンソールアプリ)。
いわゆるヘルパーアプリケーションです。
次に独自APは任意の処理をした後に結果をサーバへ送信します。
この時サーバへ接続しようとする際に独自APから「呼び出し元ブラウザを介して」サーバへ
要求を送りつけることはC#で可能なのでしょうか?
このブラウザがブラウザコントロールで作られたものであるならば可能だとは思っていますが
ん〜任意に開かれたブラウザを制御するのは無理そう。。。
Local ProxyというかGatewayというか、
そんな感にネットワークを監視するタイプのアプリとフックで……できるようなできないような。
まぁ、とりあえず.netだけじゃ無理ぽ。
875 :
デフォルトの名無しさん:2005/04/06(水) 11:58:25
めっちゃでかいXMLからいろいろ値を取り出すのに
XPathDocumentとXMLDocumentってどっちが速い?
自分で試せよ。
やっぱ XmlTextReader っしょ
XmlDocumentで開くと、そのXMLのサイズ分 + αメモリ喰うよ。
1Gのファイルを云々ってのは大袈裟だけど。
案の定エラーの内容は書かないと。
詳しく知りたければ自分で書いて確認してみろって事ですか?
>>882 書くというか、このページをさらっと読んでみてもらえれば分りますが、
System.Runtime.Remoting.RemotingConfiguration.ConfigureかApp.Config
(どちらも内容良く分からないです)
で接続するための多分クラスを作るなり、なんなりしていると思うのです。
ただ、プログラムにはStep7.MyRemoting.EmployeeFactory を宣言している場所は無いので
エラーは当然だと思うのです。
>>884 ひょっとしてStep7シリーズって1-7まであるんでしょうか?
すんません、Step1って何処にあります?
一番最初の項目であれば、アトリビュートは一応付けたし・・・
さっぱり分らないです。
コンパイル通んないのか、実行時にこけるのか、それすら書いてないんだな
コンパイルタイムです
>「その 1 : リモート処理で利用できる型の作成」および
>「その 2 : リモート処理が可能な型の作成」で作成したソリューションを開きます。
>このソリューションに、新しいプロジェクトを追加します。
>手順は、 [ソリューションエクスプローラ] で、[ソリューション]を右クリックし、
>[追加]−[新しいプロジェクト]メニューをクリックすると、
>以下の [新しいプロジェクトの追加] ダイアログボックスが表示されます。
もちろん全て同一ソリューションで開発しています。
は?
その2:リモート処理が可能な型の作成はどこに行った?
Step5は?
どこでなにが起こってるのかさっぱり掴めない。
なにしも自分も分ってないので・・・
Step5ってどれですか?
なにしろ自分も分ってないので・・・
Step5ってどれですか?
後出し祭りだな
自分が参照してるページも見えない人がいるスレはここですか?
説明まったく分りません、とりあえずヘルプ見ながら頑張ります、どもすみませんね。
>>884 >>888 と言う流れでStepが何を指してるかなんかすぐ分かると思うんだが……。
あれか、春って事か。
>>896 そのベージの説明をみて分らないから質問してるのでは?
ならやったことを箇条書きで書いていくぐらいの事をして貰わないとな。
今のところ[参照の追加]ダイアログを出したかどうかすら定かじゃない。
一応書いておきますとして有ります。
しかし関係なのでは、Step7.HostApplication に参照を追加しても Step7.RemotingClient 側とは無関係ですし、
これを参照すると、リモート処理ではなく自前処理になってしまうような気がします。
>>899 ならStep7.ClientApplicationにもStep7.MyRemotingへの参照を追加すれば良いんでない?
>>900 自前ではなくリモート処理にしたいのですが・・・
参照の追加を勘違いしてないか。
ていうかしてる。
いいから参照を追加して実際にプロセス間通信してみな。
もうDataSet渡しておけばいいじゃん。
セットアッププロジェクトで作った拡張子がmsiのインストーラーを、.netのランタイムが
入ってない環境の人に渡しても、ちゃんとインストールできますか?
あらかじめランタイムをインストールしておくように言わないとだめ?
906 :
デフォルトの名無しさん:2005/04/06(水) 15:33:24
アホな質問かもしれませんが
初めて1週間の私にアドバイスいただければと思います。
しょぼいアプリを作ったのですが
実行時にタスクバーに表示されるのではなく
タスクバー右にある時計の横の
小さなアイコンとして表示されるようにしたいのですが
どのあたりの関数もしくは設定を使うのでしょうか?
2次元のハッシュテーブルを作る事はできませんか?
Console.WriteLine(hashTable[key1][key2].ToString());
のように key1 をもつ中で、さらに key2 をもつ値を管理したいのですが、
他によい方法などあればアドバイスお願いします。
例えば key1 は日付、Key2 は個人ID のような場合、
ある日付の中のある個人ID に設定されている値を読みたい、とか
そのような感じになります。よろしくお願いします。
>>908 keyをstring.Format("{0}{}1}", date, id)
キーを、日付とIDをメンバに持つ構造体にするとか。
二重ハッシュテーブルにするとか。
なんとなくデータテーブルで保持した方が良いもののような気がするが。
class HashHash : DictionaryBase{
public HashTable this[object key1] {get{略}}
}
912 :
デフォルトの名無しさん:2005/04/06(水) 16:30:51
906の質問と被るかもしれませんが
起動したときにアイコンのみ表示させて
タスクバーには起動してないようにしたいのですが
どうすればよいでしょうか?
FormのShowInTaskBarをfalseして、NotifyIconを貼る。
ウィンドウ無しで起動したいって事?
TrayIcon管理クラスを作って、Mainメソッドでそれをインスタンス化してからApplication.Run();
スプラッシュウィンドウを表示させる
これ逆転の発想
参照型の値、例えば自前で作った class の内容を
コピー(参照のコピーではなくて、値のコピー)を行ないたいのですが、
何かよい方法はありませんでしょうか?
class を ICloneable インターフェースを継承するほかないでしょうか?
Clone()実装じゃ何か不満が?キャストが嫌とか?
Objectのprotectedメソッド、MemberwiseCloneを使えば簡易コピーできる。
>>916 それしかないだろうね、中身はMemberwiseCloneで適当にコピーするとか・・・
いや、Clone() の他に何か方法はあるのかな?と。
簡易コピーの MemberwideClone ではなく、
完全コピー? を行なうメソッドを教えて頂けないでしょうか?
探してもみつからない…。
ないですか?
という事は、完全コピーはどのように実装するのが定石なのでしょう??
>>922 自前。メンバを一つ一つコピー
そもそも、どこまで深いコピーを行うかは、場合によりけりだし
924 :
923:2005/04/06(水) 21:45:51
……もしかしたら、シリアライズ→デシリアライズのコンボで完全コピーを作成できるかもしれん
>>922 定石っぽいものはないけれど、僕のやっているケースの場合でよければ・・・
これはobject型とかで中身が分らないケースで、プロパティーとか一部メンバくらいは見えているクラスのコピーに使っています。
まず、正体不明のメンバから object.GetType() を使って型を取得して、
さらにその Type 型から GetProperty() 等で、メンバを取り出して、コピーしていきます。
メンバ列挙関数等も揃っているのでこれを使ってコピーする関数を、各種ポリシーでいくつか作って使いまわしています。
速度が遅いのが欠点ですが、使い勝手はいいです。
ありがとうございます。
自前でゴリゴリ書くしかないんですね。了解しました。
参考にします。感謝!
927 :
デフォルトの名無しさん:2005/04/06(水) 22:12:33
特定のキーを押したら(Enter+Shift等)ContextMenuをにょきっと出すようにしたいんですが
これは可能ですか?
可能ですか? と聞かれると、可能。とだけ答えたくなるな。
ContextMenu.Showを使う。
やさしい
可能、とだけ答えようとした自分が恥ずかしい。
行き詰まってしまったので質問させて頂きます。
System.Diagnostics.Process.MainWindowHandle から取得したウィンドウハンドルから、
コントロールオブジェクトを取得したいのですが、上手くいきません。
以下のようにして取得しようと試みたのですが、control が null になってしまいます。
// notepad のプロセスを取得
Process[] processes = Process.GetProcessesByName("notepad");
// 見つからなかったときは抜ける
if (processes.Length == 0) return;
// メインウィンドウのウィンドウハンドルからコントロールオブジェクトを取得
Control control = Control.FromHandle(processes[0].MainWindowHandle);
MSDN にも何も書かれていなくて困っています。
何か解決法はありませんでしょうか。よろしくお願いします。
別プロセスのハンドルからは無理。
933 :
デフォルトの名無しさん:2005/04/07(木) 09:40:23
会社でC#を使用して開発をしてますが
当然のことながら自分が愛用している分厚い本を数冊横において仕事してます。
中には10日で出来る〜といったものから500の技とかもおいてありますが
主に使用しているのはリファレンス本です。
社長とかに「いつかは本を見なくても開発できるようになれ」とか言われたんですが
普通は開発してるときに本とか見ないんですかね?
>>933 普通は見ないが見たってそれなりのペースで開発できてれば
なんの問題もないと思うが。
C# に関しては見ないが、.NET Framework に関しては時々
>>933 きみはリファレンス本みたいな辞書本だけじゃなくて
本質について説明された本を見た方がいいかもね。
937 :
デフォルトの名無しさん:2005/04/07(木) 13:11:00
そりゃC#の本質か?
933ではないけど俺も本は置いてるよ。
でもまぁMSDNの方でたいていは事足りるけどね。
C#の本質が書いてある本があったら俺も見てみたいよ。
938 :
935:2005/04/07(木) 13:16:08
ああ、MSDN は参考書に数えないのか
「本を見なくても」ってのは、ネットやヘルプを活用しろって意味なのか、
全部覚えろって意味なのか。
誰に聞けば解決できるか知ってれば良いんだよ。
本を暗記しても無駄だよ
941 :
デフォルトの名無しさん:2005/04/07(木) 13:58:14
全部覚えるなんて無理だよ
判らない時に調べる能力があれば
本だろうがなんだろうが問題ない
942 :
デフォルトの名無しさん:2005/04/07(木) 14:03:30
その本は自分で買ったのか会社が買ってくれたのかどっちだ?
会社の金が出ていってるなら「あまり金使うな」という意味かもしれん。
っていうかさ、「いつかは」 ってことは期待されてないんじゃ?
TreeViewについて質問です。
TreeNode node = new TreeNode("a");
this.treeView1.Nodes.Add(node);
これをやるだけで、画面上のツリービューに横スクロールバーが
表示されてしまうのですが、横スクロールバーを消すにはどのように
したらよいのでしょうか?
先々、縦のスクロールバーは必要になるので Scrollable = false には
したくありません。
よろしくお願いします。
ふと思ったんだけど、こういう質問ってさ、
「.NET Framework では出来ないけど、裏技があって、WinAPI を……」
とかいう答えを期待しているの?
VisualStudioC#でWebアプリを作成しています。
ところで、aspxで生成されるHTMLをサーバにファイルとして
保存することは可能でしょうか?
aspxで作成したwebをCDに焼く必要が出来てしまったもので、
単体のHTMLとして保存したいのです。
ブラウザから保存していくには数が多いので・・・
どなたかよろしくお願いいたします。
GetHTMLWとか?
スプラッシュWindow作成しようとして、
dobon.net/vb/dotnet/form/splashwindow.html
これ参考に作ってみたのですが、別スレッドでフォームを表示させた
MainがActivatedになると消えるところまでうまくいったのですが、
なぜかスプラッシュWindowのほうがどのWindowsよりも一番最下位に配置
されてしまい困っています。TopValueやActivate()を使用しても効果が
なく困り果てました。
それは大変ですね、お気の毒に・・・
951 :
872:2005/04/08(金) 00:54:56
abstract class Base : UserControl {...}
class A : Base {...}
class B : A {...}
デザイナでAを編集しようとすると、
> デザイナは型 'Base' のインスタンスを作成しなければなりませんが、
> 型が abstract として宣言されているため、作成できませんでした。
とのエラーが。
Bは普通に編集できる。
baseクラスのインスタンスが作成できないとデザイナは使えないようだ。謎。
なぜかそういう制約があるねえ。
直接の基底クラスはインスタンスかできる必要がある、みたいな。
なんかこのスレに基地外が混ざってるな
httpプロトコルを使うにはどうしたらいいですか?
956 :
864:2005/04/08(金) 07:36:23
>>872 謎ですよね。
しょうがないのでabstractをやめてvirtual化してしまったわけですが..
謎もなにも基底クラスインスタンス化したのがデザイナで表示されてるやつだろ
Graphics.DrawString() で描画する際、
このテキストの行頭から行末までの幅をpx単位等で事前に取得したいのですが、
どのように計算すればよいのでしょうか。
Graphics.MeasureString()
>>957 そういう意味じゃなくって、不便な制約だなぁ。
MSほどの男が信じられん。謎だ。という意味です。
961 :
名無しさん♯:2005/04/08(金) 22:53:51 BE:135427384-
>>961 乙。
しかしこのスレは980辺りでも良いような気もする。
まあいいや、埋め草に.NET2.0/C#2.0のことでも語らないか。
C#2.0で一番使ってるのが無名メソッド。
Expressを使わずSDKでかりかり書いてる身としてはすげえ便利。
デリゲートの引数を使わない場合は省略できるのが良い。
Nullableはデータベースを基本的に使わないのもあって使いどころがない。何か無いか。
ジェネリクスはList<T>, Dictionary<K,V>は使うけど、自分で定義する事がまずない。
実行時解決だから演算子とかほぼ使えないし。
Delegateをwhere指定できないとか。
配列のソートとかに使うとか。結局コレクション絡みか。
yieldはあんまり使わないがあれば便利。
あとなんかあったっけ?
このスレは新スレができてからが本番なんだから。
俺は static class を使いたい。
(゚听)イラネ
>>957 基底クラスがabstractなときデザイナは「何」をインスタンス化すればいいのさ?
abstractじゃなければ基底クラス+InitializeComponent+DesignMode=trueで
済むんだけど。
取り合えず、俺はすぱっときれいな実装思いつかないわけだが。
>>966 966 ではないが、もしデザイナにそのような機能を追加しようと思うならアトリビュートを使って別のインスタンス可能な互換のあるクラスをデザイナに表示すればいいんじゃないかな
そんなことより、デザイナに最後に配置したコントロールが突然消えてなくなるのは何故?
だんだんこのバグ腹立ってきたんですけど
969 :
名無しさん♯:2005/04/09(土) 14:07:21 BE:114266693-
>>962 匿名メソッドは、C#の言語仕様に型推論を認めたという点ですごく大きいと思います。
将来的には、匿名構造体とかもっと過激に型推論をやってくれるかもしれないので。
NullableはCLIのような型システムではあまり効果がないですね。
むしろ、参照型向けにNon-nullableを作ってくれた方がうれすぃですわ。
genericsは文法を取り入れただけで、データモデルがまだまだ足りないですね。
Tuple、Variant、generic Functionとかがコアに入ってくれないと。
iteratorは遅延リストで無限のデータ構造が扱いやすくなるかなと思ったら、
コレクションクラスの実装がとってもeagerなので、正直使いどころがわからん。
> あとなんかあったっけ?
Partial。w
濫用厳禁。
個人的には参照先消滅でファイナライザもしくはDisposeを実行するような機構付きの参照が欲しい
これがあると何も考えずにプログラムできるので・・・
作ってくれないかなぁ
using はいまいち使いずらい・・・
>Non-nullable
これはいいね、欲しい。
初期値は何にするとかちょっと難しい問題もありそうだけど・・・
C++/CLI でできるよ
つーか2.0になったら今までと同じ事をするのに
今までと同じ文法の書き方で作れるの?
それとも一から勉強し直し?
おまいはWindowsがバージョンアップするにつれ
「一から」覚えなおすのか?
互換性はあるはず
975 :
デフォルトの名無しさん:2005/04/10(日) 02:08:41
2003で2.0使えるようにはならない?
2005使え