1 :
1000 :
2007/08/08(水) 14:28:24
,、‐;;;;;;;;;ヽ、 /:::::;;-‐-、:::ヽ _,,,,,,,_ l::::::l _,,、-‐"iiiiiillllllllllliiー-、__ゞ:::::::::::`ヽ, ヽ::`/: : : : iiiiiilllll||llllliiiiii : : ヽイ〜`ヽ::::::i /;,..-‐、: : : : : l|l: : : : : : : : : : : : : \ ノ::::} /: /: : : : :`.: : : : : : : : :/´ ̄\ : : : : : ヽ:::ノ !: : : :iflllli、: : : : : : : : : : : : : : : :ヽ: : : : : :.! |: : : :llllf l: : : : : : : : : : :.iflllli、: : : : : <iiii| |: : : :|llll |: : : : : : : : : : .llllf l: : : : : : : : :.| |: : : :.!lllll!' : : : : : : : : : : |llll |: : : : : : : : :i /: : : : : ▼ : : .!lllll!' : : : : : : : :.i / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |: : :" | : : : : : : : :.<iii/ | l / ゞ、__,. -ーヘ、 . :.:〃:: : : ヲ,イ < C#厨はクズ。以上。 ゙i i __ `i. :.:. :ノ:: : し'´ ::| | ゙i ``''ー==='''^ . ! :.:.:.:i: :: : |: : : :| \_____________ l ー‐-´ .. . . :.::,': :: :: |: /|\ l i "'' : :../::/: :: :/ ,イ::::::\ `、j . :.::./::// ,.'´/::::::::::::::\ _, .イ¨|ヽ、 . . :.:::_ィ‐'´ ,. '´ _,/:::::::::::::::::::/`ー-、_ ‐ ´:::::::::/:::::|\ハー一イ´_,.‐'´ ,.‐'´/:::::::::::::::::::/:::::::::::::::::
3 :
1000 :2007/08/08(水) 14:34:15
4 :
前スレ912 :2007/08/08(水) 14:46:16
前スレ912です。 if (int.Parse(listBox1.Items[e.Index].ToString()) == 値1) を試してみましたが 入力文字列の形式が正しくありません。 とエラーが出てしまいました。
int.TryParse
6 :
前スレ912 :2007/08/08(水) 15:15:16
'int' に 'TryParse' の定義がありません。といわれました・・・
.Net1.1か?
8 :
前スレ912 :2007/08/08(水) 15:39:17
1.1です・・・
だったらint.Parseはtry...catchの中で使う
10 :
前スレ912 :2007/08/08(水) 15:56:29
try { if(int.Parse(listBox1.Items[e.Index].ToString()) == A1) { myBrush = Brushes.Red; } e.Graphics.DrawString(listBox1.Items[e.Index].ToString(),e.Font,myBrush,e.Bounds,StringFormat.GenericDefault); e.DrawFocusRectangle(); } catch { } こんな形であってますでしょうか?
つーかintにキャストでいけるんじゃね
>>4 そういう場合は
listBox1.Items[e.Index].ToString()の結果をどこかに表示したりして原因を考えるもんだよ。
プログラマが考えることを放棄してはいけない。
14 :
デフォルトの名無しさん :2007/08/08(水) 20:21:39
マイクロソフトのペイントに、SendMessageで値を送りたいのですが、 どうすればいいでしょうか? (メニュー)色→色の編集で出てくるダイアログで、色の作成ボタンを押したときに、 右側に出てくるRGUに値を送りたいです。 分からないことはFindWindowEXに入れる値? MSのメモ帳なら、 hWnd = FindWindowEx(hWnd, 0, "Edit", null); のEditの部分 とSendMessageの値 メモ帳なら SendMessage((System.IntPtr)hWnd, 0x000C, 0, msg); に入れる値です。 メモ帳は↑で文字列を送れるのですが、ダイアログに送る方法がいまいち 分からなくて・・お願い致します。
そこまで到達するのに一苦労じゃないか。 spy++つかえ
16 :
デフォルトの名無しさん :2007/08/08(水) 22:13:08
>>15 すげーーーーーーーーーーー!
Spy++って使ったことなかったので・・
クラス名とか分かるんですね。
やってみます。ありがとうございました。
17 :
14 :2007/08/09(木) 01:24:41
オートメーションに無いかなあ 色の編集ダイアログを出すだけならメニューのID送ればいいべ
19 :
前スレ912 :2007/08/09(木) 09:40:30
>>13 メッセージボックスなどにも表示させてみましたが、「System.Data.DataRowView」
と表示されるだけで・・・とりあえず、表示をちゃんとしないとだめですかね。
20 :
前スレ912 :2007/08/09(木) 10:36:11
とりあえず、ListBoxの中の表示は直せました。 あとはどうやって、色を変えればいいかな・・・
>>20 表示させるんじゃなくて、ブレークポイント設定してクイックウォッチで
中身が何なのか確かめろよ
22 :
前スレ912 :2007/08/09(木) 10:57:26
中身はTextで見た場合、表示のまま、Items[e.Index]を見た場合は インデックス番号が取得できました。
だったらその表示のままの部分と値1を比較してブラシをかえればいいべ
コンストラクタで初期化して、以降は変更しないフィールドはreadonlyを付けた方がいいの?
openFileDialogで選択したファイルのパスを、テキストでファイルに書き込みしたいのですが、書き込めません。 パスは正しく取得できています。 openFileDialogをどうしても使いたいのでよろしくおねがいします。 //openFileDialogで選択したファイルのパスをテキストでファイルに書き込む private void button1_Click(object sender, System.EventArgs e) { string text; if(openFileDialog1.ShowDialog() == DialogResult.OK) { text = openFileDialog1.FileName; //ここでtextをファイルに書き込む } }
いや、書き込むとこのコードが無いと、どこが間違ってるのか指摘できないよ
・OpenFileDialogでパスを取得 ・そのパスをファイルに書き込む これらは互いに全く関係ないから落ち着いて分けて考えろ
28 :
デフォルトの名無しさん :2007/08/09(木) 15:29:07
クリスタルレポートを使ってるんだが、レポートの印刷を押したときに イベントを発生させるようにしたいんだが、どうすればいいかな?
31 :
25 :2007/08/09(木) 16:49:52
>26 >27 すいませんでした。 ちゃんと書き込めていました。 自分が意図したところにファイルが無かったので、質問しましたが、OpenFileDialogで開いたフォルダにファイルがありました。 書き込みのところで、相対パスを使ったのが問題でした。 以後気をつけます。
OpenFileDialogはカレントディレクトリも変わるからなあ
ところで単に興味で聞くんだが、 なんでファイルに書き込むとこの ソース書かなかったの?
処理が複雑だったんじゃないの?
恥ずかしかったんじゃないの?
ここにも書き込めてなかったんだろ
ざぶとん1枚もっていけ
ざぶとんが欠けた。
39 :
14 :2007/08/10(金) 03:06:12
>>18 メニューのIDってどれでしょう?
ずっとSpyで探しているのですがめぼしい物が見つかりません。
「無題 - ペイント MSPaintApp」の直下にありますか?
Spy持ってたら教えて欲しいです。
private void hoge() { 処理; innerHoge(); 処理; innerHoge(); private void innerHoge() { } } みたいに、hoge()の中でしか呼ばれない繰り返し行う処理をinnerHoge()にまとめたく、 かつ、innerHoge()はhoge()の中からしか呼ばれないので、hoge()の中で定義するなどして 他からは気にしなくてもよいようにしたいのです。 でも、C#はメソッドの入れ子はできないようなので、こういうことがしたいときの 冴えたやり方を教えてほしいのです。 よろしくお願いします。
>>40 冴えてるかどうかは置いといてdelegateを使うというのはどう?
private delegate void F();
private void hoge() {
F innerHoge = delegate { innerHoge相当の処理; };
innerHoge();
innerHoge();
}
>>41 delegateって使ったことないんですが、これって宣言した引数の数とあってれば、
なんどでも定義し直して使えるんですかね?
たとえば、hoge()の中ではinnerHoge()相当の処理を定義して、hage()の中では
同じ宣言に対してinnerHage()相当の処理を定義してって感じで
しかしそうやってみると、無名オブジェクトを作るところで名前をつけるような
ちょっとしたもっさり感を感じなくもないですね
hoge( new Hige() );
とすればいいところを
Hige temp = new Hige();
hoge( temp );
みたいな
Action!これだ!ありがとう!
>>39 スパイあるんなら、メッセージ監視して自分でメニュー選んで
流れたメッセージIDを拾う、という手がある
ツール使って直接リソースを覗くのでもいいけど
>>42 >しかしそうやってみると、無名オブジェクトを作るところで名前をつけるような
>ちょっとしたもっさり感を感じなくもないですね
2回以上呼ぶのにもっさり感のないやり方ってどうやるんだ?
そもそも2回以上全く同じ動作するならforループとかで何とかなるんじゃね?
んな
gotoを使えばいいんだよ
クラスまたはインタフェースSingletonを実装または継承するSingletonChildを (名前の通りシングルトンパターンで)作りたいと思っているのですが、一つ問題があります Singletonで、自分を実装または継承するものには、あるメソッドmethod()を実装させたいのです 従ってabstractではその実装を強制できないため、Singletonはインタフェースとなります しかしインタフェースではコンストラクタの実装を定義できないため、実装クラスの 記述によってシングルトンパターンとなりえなくなります ポリモーフィズムを許し、特定のメソッドの実装を強制させるシングルトンパターンは どのようにすれば実現できるのでしょうか?
private interface ISingleton でvoid method(); public abstract class Singleton : ISingleton でコンストラクタ定義 public class SingletonChild : Singleton でmethod()実装 かな?でもSingleton定義した時点でISingletonにmethod()がないって怒られそうな気がする private interface ISingleton でvoid method(); public abstract class Singleton でコンストラクタ定義 public class SingletonChild : Singleton, ISingleton でmethod()実装 が正解でしょうか?クラスとインタフェースで分かれてたら多重継承できたはずだし でもクラス図にするとすべてのシングルトンパターンのクラスの頭に2つ箱がつながるのは あまり綺麗じゃないなあ…
>>49 >従ってabstractではその実装を強制できないため
質問の意図がつかめてないのだけど、何でそう思ったの?
public abstract class Singleton {
public abstract void method();
:
で強制できてない?
Singletonの派生クラスがAとBの2つあったとして、 AのインスタンスとBのインスタンスは同時に存在してもいいの?
ファクトリは継承先で実装しないとしょうがないよな。インスタンスを保存するクラス変数も。
//Singletonクラス private static Dictionary<Type, Singleton> instances; public static T GetInstance<T>() where T : Singleton, new() { Singleton i; Type t = typeof(T); if (!instances.TryGetValue(t, out i)) { i = new T(); instances.Add(t, i);} return (T)i; } こういうのは?
普通にnewできてしまうだろうがよっ
protected Singleton(){ if (instances.ContainsKey(this.GetType())) throw new InvalidOperationException(); } とか
>>57 コンストラクタに触られたくないからprotectedにしといてリフレクションで無理矢理っていうのは
いくらなんでもやっちゃダメだろそのリンク先
ちょっと手の込んだファクトリとか作ろうとしたらリフレクションが必要になるのがC#
だからって
>>58 を認めたらシングルトンなんか根底から崩壊するよ
しかも
>>57 のリンク先
>.NET Frameworkではstaticなメンバに対してはスレッドセーフであるそうなので、lock等は使っていません。
って・・・
まずいだろそれ
SingletonClass 第二のインスタンス = (SingletonClass)System.Activator.CreateInstance(typeof(SingletonClass), true); あっさり崩壊w
最後の行がそのまま問題
C#2.0なら
>>54 みたいに GetInstance<T>() where T : Singleton にしといた方がいいよ
new()も付けたくなるけど
そんなに無茶でもないように見えるがな。 まあもっといい実装はあるとしても。 ただ、おかしなことも書いてるので注意は必要。
ライブラリならコンストラクタをinternalにするとかでいいんじゃね どんな凝ったことしてもリフレクション使われたりしたらどうせ死亡だし
崩壊するのは一般的によくあるシングルトンの実装の場合だろ。 だがリフレクション使えばかなり何でもありだから 大抵は想定外で済むだろうってか済ますだろう。
コンストラクタ側にリフレクションで呼ばれてるかどうか判定する術はないの?
ないよ。
>>72 どういう使われ方をするかというと、そのクラスのインスタンスをグローバル変数的に全クラスから
アクセスできるように、また、そのクラスの実装は外部のXMLファイルに定義して、
XMLにかかれているクラスのインスタンスを作るにようにしようとしています。
後々サブクラスが増えても、既存のソースは直さずに、増やすクラスの追加とXMLファイルの
修正だけですむようにと
あまりまともな方法は無いと思う。 ので特殊な事情がない場合は最初からあきらめる。
>>76 そういう場合はリフレクション使うしかないよ。
こういうのはどこかで妥協が必要になるのだろう。継承したクラスに生成のコードを委譲してみた。 abstract class AbstractSingleton { static object syncRoot = new object(); volatile static AbstractSingleton instance = null; protected delegate AbstractSingleton RegistrationCallback(); protected static AbstractSingleton Registration(RegistrationCallback callback) { if (instance == null) { lock (syncRoot) { if (instance == null) instance = callback(); } } return instance; } public abstract void MustOverrideFunc(); }
つづき。 継承したクラスがInstanceプロパティを細工してしまったら終わりだが、 継承したクラスの作成者は信用することで妥協。 sealed class SingletonImpl1 : AbstractSingleton { private SingletonImpl1() {} public static AbstractSingleton Instance { get { return Registration(delegate{ return new SingletonImpl1(); }); } } public override void MustOverrideFunc() { Console.WriteLine(this); } } sealed class SingletonImpl2 : AbstractSingleton { // 省略 class Test { static void Main() { AbstractSingleton singleton = SingletonImpl2.Instance; singleton.MustOverrideFunc(); singleton = SingletonImpl1.Instance; singleton.MustOverrideFunc(); } }
それはそれでよくできてると思うけど、話と違う方向に行っちゃってるな
こうなるともはや違うイディオムな気がするな… クラスがシングルトンなんじゃなくて、コンテナが管理すると言う。 DIじゃないけど、DIでのシングルトンの考え方に近い。
static class SingletonManager<T> where T : class, new() { public static T Instance = new T(); } 自作のインスタンスなんかしったこっちゃないわ。
ああすまんreadonlyつけ忘れた
遅延評価の必要が無ければなんでもいい感じですなぁ。
遅延評価したけりゃstaticコンストラクタつければいいだけ。 そも、ジェネリックの場合はジェネリックの具象クラスがコンストラクトされたタイミングになるだろうから、 事実上知見評価に近い気もするが。
じっさいのとこ、本物のシングルトンじゃなきゃ困ることってそんなにあるんかな。 ルールにのっとった方法で取得したインスタンスは、唯一、同一であることが保証されれば、 たいていの場合は困らん気がするのだが。
C#ってIF(A & B)みたいな使い方できないのか なんか便利なんだか面倒なんだか
何が言いたいのかわからない
Cとかと違ってC#は型付けが強いからね
新しい言語ほど、バグを作りそうな仕様を減らすものだよ。
94 :
90 :2007/08/11(土) 04:00:39
>>91 文字列操作とか面倒な作業に煩わされない強力な言語だなって
驚いてたんだけどこんなこともできねぇのかって話し
まあわざとそうしているんだろうけど
プログラム人口が減っている昨今、確かにシンプルな方がいいんだよね
AとBが何のつもりか知らんがそんなことができてもたいしてうれしくもない。
それはお前の意見だろうが!ひとそれぞれやり方が違うんだよ
何が言いたいのかよくわからんが >こんなこともできねぇのかって話し これもお前の意見じゃないのか??
いやべつじんだったらすまんのう
C++のMSのソースにもそのような判定は腐るほどあるからな 自分達でもバグの温床になると判断してなくしたんだろ
>>90 A B ともbool型なら & はショートサーキット評価なしの論理ANDになるけどね。
大文字のIFが使えないって事じゃないのか
VBへようこそ!
そもそもIF(A&B)って何の言語だよ
if文にbool型しか取れないってことを言ってるのかな。
class Boolean{ public static implicit operator Boolean(int value){...} public static bool operator true(Boolean value){...} public static bool operator false(Boolean value){...} } if ((Boolean)(A&B))
あるObject oが、あるインタフェース Hoge.Interfaceを実装したものかどうかを知りたいのですが、 やり方としてはoのType tを取得して、t.FindInterfacesでType[]を取得して、 そのFullNameがHoge.Interfaceに合致するか見ながら回す、とかしかないんでしょうか? もっとかしこいやり方がありそうな気がするけど、t.IsImplemented( "Hoge.Interface" ) みたいなメソッドは無いようなので
Type.IsAssignableFromを使うのが定番
インスタンスがあるなら as か is で充分だろ
109 :
107 :2007/08/11(土) 18:23:59
ああ、Typeとか言ってたから適当にレスしてしまった
>>108 に同意
110 :
デフォルトの名無しさん :2007/08/11(土) 21:07:51
2.0のBinaryFormatterでシリアライズしたものを1.x系でデシリアライズ可能でしょうか?
可能としてもやりたくねーな なんでそんな要求が出てきたの?
>>111 ASP.NET1.xで動いてる環境があって、
そのコンテンツ管理システムを2.0でつくろうかと思っているんですが
更新頻度が少ないマスタ的なデータをそのコンテンツ管理で作って
1.x系に読ませたいなと。(DBを経由せずに)
バイナリ形式って、きっちりとした仕様決められてたっけ。 まあ、それだけ限定的な使用方法なら実際に試してみればいいと思う。 たぶんシリアライズ対象のオブジェクトのアセンブリが同じなら問題ないはずだけど……。 どうしても不安なら、シリアライズ部分だけ外部プロセスにやらせる手もある。
XMLにしとけよ なんでそんなことでバイナリにしたがるわけ?
バイナリ形式はプログラムレベルで対応しないといけないだろう。 明確に仕様があるものならば、フレームワークレベルで定義しないと 使い物にならん。
116 :
110 :2007/08/11(土) 21:58:09
>>113 いますぐは試せないのですが、
シリアライズ対象のアセンブリが同じであればいけそうとのことですね。
ありがとうございました。
117 :
110 :2007/08/11(土) 21:58:51
たしかにXMLは遅い
>更新頻度が少ないマスタ的なデータをそのコンテンツ管理で作って >1.x系に読ませたいなと。(DBを経由せずに) こんな処理になんでそんなにパフォーマンスが必要なんだ? もちろんそりゃパフォーマンスがいいに越したことはないが。 ついでに、確か1.1と2.0ではバイナリシリアライズ形式に 互換性がなかったんじゃなかったっけか? これはちとうろ覚えですまんが。
リモート処理についてに質問です。 どのサンプルを見ても、クライアントからリモートオブジェクトのメソッド呼び出して 結果をクライアントに返す感じなんですが、クライアントからの要求をサーバーで処理 するようなのは無理なのでしょうか? クライアントから"AAA"送信→サーバーで"AAA"受信といった具合に
>>119 すまん、互換性がないのは1.0→1.1のようだ。
1.1→2.0は互換性あるらしい。
>>120 >どのサンプルを見ても、クライアントからリモートオブジェクトのメソッド呼び出して
>結果をクライアントに返す感じなんですが、クライアントからの要求をサーバーで処理
>するようなのは無理なのでしょうか?
何言ってんだかさっぱりわからん。
クライアントからサーバのメソッド呼び出してるってことは
クライアントからの要求をサーバーで処理してるってことだろうがよ。
>クライアントから"AAA"送信→サーバーで"AAA"受信といった具合に
引数で渡せばいいだけではないのか?
一般的なリモート処理のサンプルでは、リモートオブジェクトをDLLとして作っておき、 サーバー側ではDLL参照したメソッドを呼び出ししています。 クライアントからはサーバーのメソッドを呼び出しているのではなく、DLL内部の メソッドを呼び出ししているわけですので、サーバー側で受信を確認する手段が分かりません
124 :
デフォルトの名無しさん :2007/08/11(土) 23:15:41
StringBufferで生成可能な文字列ってどれくらいなんでしょうか Appendしまくりで限界がくるとOutOfMemoryの例外が発生します。 どうも空きメモリ量によって処理可能なサイズが変わっているような気がします。
おまえはいったい何を言っている? ってかそもそもリモート処理ってのがどういうものか理解してるのか?
>どうも空きメモリ量によって処理可能なサイズが変わっているような気がします。 そりゃそうだろ、たいていは。
>StringBufferで生成可能な文字列ってどれくらいなんでしょうか まさにメモリを無事確保できる限り、としかいいようがないな。 仕様上の上限はMaxCapacityだがその前にメモリでアウト
インスタンス生成を抑えるのがオブジェクト指向の基本原則だろうが。
寝言は寝て言え いや言うな
NotifyIconのMouseClick時にマウスの絶対座標を取得する方法を教えて下さい。 MouseEventArgsのe.Locationやe.X,e.Yではどれも0という数値しか返してくれません・・・
132 :
131 :2007/08/12(日) 00:20:08
Cursor.Positionでうまくいきました。 お騒がせしました。
えぇ、こんなに騒がしかったのはミレニアム以来でしたよ。
131はクライアント座標とスクリーン座標の区別が付いていないんじゃないだろうか? と余計な老婆心に一瞬とりつかれた
あるクラスHogeのConfigファイルを作ろうとしています(Config.xmlとする) また、同時にHogeの終了時状態もシリアライズ/デシリアライズしようとしています(State.xmlとする) たとえばHoge.Nameは設定項目としてユーザがXMLファイルの値を書き換えて良い Hoge.Stateは単に復元されるべき終了状態だから、ユーザが触る必要はない という感じです 自分用のプログラムなので、State.xmlを変更できなくする機能とかはつける必要はないのですが、 後々わかりやすくするために、Config.xmlとState.xmlは最低限ファイルを分けたいです 今のところXMLSerializerで行けないかと思っているんですが、方法が見つかっていません State.xmlはXMLSerializerで作る、Config.xmlは別のConfig作成用クラスで作るとかでもいいので、 良い方法(.NETで丁度いいクラスとか)があれば教えていただけますでしょうか。 最悪自作でクラスを作るしか無いんでしょうが… ただ、アプリケーション構成ファイルはあまり使いたく無いと思っています。 特定のクラスごとに別々のConfig.xmlを吐かせたいというのと、設定を吐かせるクラスが 増えたり減ったり変更になったときに、ちょっと構成ファイル変更に関する作業が大きそうなので…
ああ、Hogeの中にHogeConfigクラス作ってそこにHogeのConfig.xmlに吐きたい フィールドだけを定義しておいて、シリ・デシリの時にHogeのフィールドと同期させてやればいいのかな
137 :
デフォルトの名無しさん :2007/08/12(日) 04:58:58
「クリップボードからデータを貼り付けようとしている時」に 呼ぶイベント?みたいなのは、ないでしょうか? textBoxにデータを貼り付けるとき、クリップボードを調べて、 その文字によってmaxlengthをいじりたいです。 Ctrl+Vからの貼り付け、コンテキストメニューからの貼り付け、と 一括で設定したいので何か良い方法があったら教えてください。 宜しくお願いします。
WM_PASTE
140 :
137 :2007/08/12(日) 06:10:37
>>138 、
>>139 朝早くからありがとう。
なんとなく分かったんだけど、別のクラス間でtextBoxのメソッド?
いじる方法がイマイチわかんねー。
もうちょい調べてみます。ありがとうございました。
前回のB()終了後、ある時刻になるとメソッドA()を呼んで、 今回のメソッドA()終了後、ある時刻になるとメソッドB()を呼んで… という処理を繰り返すことを考えています ベタなやり方だと、 while ( true ) { while ( 現在時刻 < ある時刻 ) {} // 不等号の使い方は便宜上 A(); while ( 現在時刻 < ある時刻 ) {} // 不等号の使い方は便宜上 B(); if ( メインループの終了条件を満たす ) { break; } } みたいな感じになると思うんですが、C#ではもう少しマシなやり方があるのではと思う次第です どういうやり方がベストプラクティスでしょうか?
*.Timer ブロックしていいならThread.Sleep
>>142 前者はSystem.Threading.Timeクラスのことでしょうか?
それでもSystem.Windows.Forms.TimerでもSystem.Timers.Timerでも 場合に合ったものを適当に選んでくれ
145 :
137 :2007/08/12(日) 07:56:34
いろいろやってみたが別のクラスにあるoverrideのとこ?が全く呼べない! どうすれば・・? Form1.cs //インスタンス private Class1 class1 ; //コンストラクタ this.class1 = new Class1(this); Class1.cs //インスタンス public Form1 f1; //コンストラクタ public Class1(Form1 f1) { this.f1 = f1; } private const int WM_PASTE = 0x0302; protected override void WndProc(ref Message m) { if(m.Msg == WM_PASTE) { IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataFormats.Text)) { this.f1.textBox1.MaxLength = 7; return ; } } base.WndProc(ref m); }
compact framework2.0で保存したHTMLファイルを閲覧するところでつまづいています。 保存したHTMLをWebbrowser.navigateで開いているのですが、Aタグのname属性で指定した 名前にジャンプすることが出来ません。 ウェブ上のHTMLファイルであれば、普通にURL#fragmentという形式で期待する動作をするの ですが、クライアントに保存したHTMLで同じ事をしようとすると、 「ページを表示できません。名前を確認して、もう一度やり直してください。」 というエラーが出て読み込めません。 (#以下(fragment部分)を削除すると、普通に読み込めています) compact frameworkではfragmentの指定はできないのでしょうか。
テキストボックス内の文字列の検索についての質問です。 private void button5_Click(object sender, EventArgs e) { string kensaku = textBox6.Text; int find = textBox5.Text.IndexOf(kensaku); if (find > -1) { textBox5.SelectionStart = find; textBox5.SelectionLength = kensaku.Length; } } この後、button5をクリックすると次の文字列を検索させるようにしたいのですが、 どうすればいいんでしょうか。textBox5.Text.IndexOf(kensaku)の開始位置を後ろにすれば よいのだと思うのですが、誰か知恵をお貸しください。
じゃあ開始位置を指定すればいいんじゃね?
>>149 質問の仕方が悪かったです。その開始位置の指定をどうすればよいのかわからなくて…
string.IndexOfのオーバーロードをMSDNで調べればいいんじゃね?
そのオーバーロードをどういう風にすれば次を検索していけるようになるのかというのが質問です。
SelectionStart+SelectionLengthから始めればいいんじゃね? もしくはインデックスをフィールドにして覚えとくか
>>148 textBox5の内容を変数に入れて、次に検索するときは前回検索した後のデータを代入する
string data = textBox5.Text;
二回目以降は
data = data.Substring(find + kensaku.Length);
みたいな感じで、検索がヒットしたら前回の位置をプラス。
なんかめんどくさいな・・・
じゃなくてwebサーバーが入ってないだけだな。
すみません、教えてください listView1.Items.Containsで既にアイテムがある場合は追加しない って処理がしたいのですが項目(カラム)が複数ある場合は 全てマッチを判定するんですよね? まったく同じアイテムでも追加されてしまうのは 制御構文のほうが間違ってるのか。。。
ListViewItem 自体を比較してたりしてないか? 中の Text を比較しないと駄目だぞ。
>>159 あっ。。。そうなんですか。
恥ずかしいです。項目全て比較するんですね。
ありがとうございます
あるサーバ上で稼動しているプログラムでエラーが発生した場合、 別のPCにエラー発生したことを知らせたいのですが、どのような 手法がありますか?
電子メールを送信
通信だろうね。え、礼はいいよ
164 :
137 :2007/08/13(月) 01:19:49
>>146 ありがとう!TextBoxを継承したユーザーコントロールを作って
maxLengthをいじることができました。
しかし、貼り付け時にデータがmaxlengthを超えて貼り付けられてしまいます。
なぜか、貼り付けた後にMessageBoxを表示させると、maxlength内に
納まります。どう対策すればよいでしょうか?
//Form1.cs
public void maxLengthChange()
{
userControl1.MaxLength = 7;
}
public void copyFromClipBoard()
{
userControl1.Text = Clipboard.GetDataObject().GetData(System.Windows.Forms.DataFormats.Text).ToString();
//ここにMessageBoxを表示すると、maxlength内に納まる。
}
//UserControl1.cs
protected override void WndProc(ref Message m)
{
const int WM_PASTE = 0x0302;
if(m.Msg == WM_PASTE)
{
IDataObject iData = Clipboard.GetDataObject();
if (iData.GetDataPresent(DataFormats.Text))
{
f1.copyFromClipBoard();
f1.maxLengthChange();
return ;
}
}
base.WndProc(ref m);
}
165 :
137 :2007/08/13(月) 01:25:22
すみません、 //UserControl1.cs の f1.copyFromClipBoard(); f1.maxLengthChange(); の順番は逆です。 しかも return すると、>MessageBoxを表示させるとmaxlength内に納まる・・・ が再現しなくなるのでreturnもなしです。失礼しました。
クリップボードからTextBoxに入れるのにTextプロパティ使ってるよな。 MaxLengthの解説読んでみ?
167 :
137 :2007/08/13(月) 02:35:32
>>166 ありがとう。そこは分かったけど、MessageBoxを表示させると、
maxlength超えてる部分削られて納まるのは何でですか?
168 :
137 :2007/08/13(月) 03:17:40
色々テストしていたら、 1回目貼り付け→maxlengthを超えてもそのまま表示される 2回目貼り付け→maxlengthに納まる 3回目貼り付け→maxlengthを超えてもそのまま表示される 4回目貼り付け→maxlengthに納まる : : の繰り返しになる事が分かりました。 原因が分かりません。 なんか気持ち悪いので、考えられそうな原因を教えてもらえませんか?
それはあなたです
あなたを、犯人です。
あな、人です。
Express Editionは条件付コンパイル出来ませんか? #if DEBUG #endif で囲っても無視されます。 プロパティの[ビルド]でDEBUG定数の定義にチェックを付けても変化ありませんでした
メソッド定義を書くときに、引数の型名が長かったり、引数の数が多かいとき どこで改行しますか。
おカンマ区切りが定石
>>172 囲まれてるところの文字色は普通のコードの色になってる?
>>175 なってます。
#else
で囲むとグレーアウトされます。
ソリューション構成はDebugになってる?
178 :
172 :2007/08/13(月) 18:49:55
ツールバーの「デバッグ開始」アイコンの右にあるドロップダウンボックス もし表示されてなかったら、オプションを開いて左下の「すべての設定を表示」にチェックを入れて、 「プロジェクトおよびソリューション」−「全般」の「ビルド構成の詳細を表示」や「常にソリューションを表示」 あたりにチェックを入れてみて
180 :
172 :2007/08/13(月) 19:15:11
>>179 以前はそこにDebugとかReleaseとかプルダウンで表示されていたような気がしますが、
今はコンボボックスがグレーアウトして表示されているだけで操作できない状態です。
10区切りで切り上げた値を求めたい場合、どのようにすればいいかなー? 3 なら 10 24 なら 30 47 なら 50 な具合に。
ふらっと以下だろ・・・。10−下一桁を+すればいいだろ
>>182 5足して切り上げの方がスタイリッシュじゃね?
184 :
183 :2007/08/13(月) 20:56:02
発想って大事だよね
3 / 10 +1 47 /10 +1 全てint
10かけるの忘れた。
190 :
デフォルトの名無しさん :2007/08/13(月) 22:40:08
「指定した精度の数値に切り上げする」でググれ
マイナスは無視ですか?
マイナス時の挙動は偶数丸め以外は基本的に要求次第じゃない?
ListViewのヘッダーは色変えられないのですか
2.0 ならオーナードローで
Formsはいらない子。 WPFに食べられて排泄される運命
まあ俺にはまだ必要だが…
DateTime.Now.ToString("yy/MM/dd HH:mm:ss.ミリセカンド") このような表記で表示したいのですが、文字列でミリセカンドは表記できないのでしょうか? やっぱりDateTime.Now.Millisecondで取るしかない?
ヘルプで書式指定文字列を引け
16進文字列を解釈してlong型整数を生成したいのですが、どうすればいいのでしょうか。 VBでいう、CLng( Hex( バイト型変数 ) ) みたいに…。 たとえば、String str = "0D"; からは13が生成させるはずです。 BitConverter.ToInt64( Encoding.Unicode.GetBytes( str ), 0 ); を考えていたのですが、GetBytesの時点でstrがエンコードされてしまい、{ 48, 0, 68, 0 } となってしまうようで、うまくいきません。 よろしくお願いします。
Convert
202 :
デフォルトの名無しさん :2007/08/14(火) 09:14:02
答えなんじゃないのか?
>>198 はかなり的確な回答だろ
その場限りの答えより遥かに役立つ
構造体Aのメンバ変数が全部publicで宣言されてるとき、初期化は A a = new A(int x, int y, int z); のようにコンストラクタを呼び出すより A a; a.X = 1; a.Y = 2; a.Z = 3; みたいに平べったくした方が速かったりする?
207 :
206 :2007/08/14(火) 10:04:47
上の方はA a = new A(1, 2, 3);の間違い
試してみれば
微々たる違い
その程度の速度を気にするより、オブジェクトの再利用やキャッシュの効率性を考えろ。
int[]等の各要素を定数として使用するとき、 誤って要素の値が書き換えてしまうことができないようにするにはどうすれば良いですか?
プロパティ知らないの?
ReadOnlyCollection<T>
ふらっとだった。ちょい追記しとこう。 static readonly ReadOnlyCollection<int> PrimeNumbers = new ReadOnlyCollection<int>(new int[] { 3, 5, 7, 11, 13, 17, 19, }); こんな感じ。
215 :
デフォルトの名無しさん :2007/08/14(火) 19:05:20
初心者的な質問ですみません。 Visual Studio2005 .Netでプログラムをしています。 TabContorolの中にボタンを配置した場合、そのボタンはどのように指定すればいいのでしょうか? 名称をTabControl:TabCon ボタン:Buttonとした場合 TabControl.Buttonと指定はできないんですよね?(できなかったです) すみませんがどなたか教えてもらえないでしょうか? TabControlについての参考URLも教えていただけたら幸いです。
>>215 普通にButtonだと思うけど・・・
そのボタンをダブルクリックしてみては?
ある変数が初期化されているかどうかってどうやって取得すればいいんでしょうか? DateTime dt; if ( dt == null ) { } だと、到達できないコードがあるって怒られたので、nullではないようですが…
UIのオブジェクトは配置したFormに属している。 Tabに属しているわけではない。
DateTimeは構造体だったよねたしか。
ローカル変数は初期化すんでない時触ったらコンパイルエラー。
本当だstructだ… クラスの時は何にも入ってないよっていう意味の初期化でnullを入れられますけど、 構造体の場合はどうするのが普通なんですかね?
Nullable
223 :
デフォルトの名無しさん :2007/08/14(火) 21:21:04
任意の整数型の任意の位置から任意のビット幅の値を取得するメソッドを定義したいです なんとなく書いてみましたが、コンパイルエラーになります エラー 1 演算子 '>>' を 'T' と 'byte' 型のオペランドに適用することはできません public static byte GetByte<T>(T val,byte shift,byte bits) where T : struct { return (byte)( (val >> shift) & ((1 << bits) - 1) ); } 型に対して、「整数型かつ右シフト可能である」という制約はかけられませんか? 1 そもそもそんな事はできない 2 where以下が間違っている
演算子オーバーロードの制約は where ではかけない
C# ジェネリックは、C++ テンプレートほど柔軟ではありません。 たとえば、C# ジェネリック クラスでは、ユーザー定義演算子は呼び出すことができますが、 算術演算子を呼び出すことはできません。
左シフト演算子 (<<) では、2 番目のオペランドで指定されたビット数だけ最初のオペランドが左に シフトされます。 2 番目のオペランドの型は int です。
プログラムっていうやつを生まれて初めて弄る超ド素人(このスレ読んでもチンプンカンプン)なんだけど、 C#のお勧め参考書や入門書ある?
ない
>>229 その本は、プログラム初心者にはきついと思う。
ごめん 独習c#と勘違いした
Cライブラリのtime(NULL)と同等のメソッドはどれですか? 具体的にはファイル名"1186550904.txt"から拡張子を抜き、現在時刻との時間差を求めて、TimeSpanにする処理です。 DateTime.Now.ToFileTimeでは1601年をゼロとしているようで合いませんでした。
DateTimeのメンバを調べて考えなさい。
>>229 thx
そのサイトのオススメ参考書を本屋行って目通して見るよ
236 :
232 :2007/08/15(水) 01:36:01
とりあえず、File.GetCreationTimeでお茶を濁すことにしました。
>>233 お前こそ頭を使ったレスをしろ。
>>234 適当に答えただろ。
求めるものが見つからない場合は回避手段を探すってのはまあ基本だよな
>>238 おっ、これは簡単だ。
わざわざC++/CLIのDLL作ってC#から呼び出してたのにorz
どんだけー
241 :
215 :2007/08/15(水) 08:53:31
>>216 アドバイスありがとうございます。
確かにダブルクリックしたらButtonでした!!
なんて無駄な時間をすごしてしまったんだ・・・
>>229 でもそのリンク先みたいに言語の基本事項をだいたいカバーしてる
良い入門サイトはVB.NETでは少ないよな
どこ見てもOOPすっとばして「使い方」ばっかり
>>242 それでもいい場合があるからな。
で、ある日突然悟りを開く…
Textboxから入力されたテキストをSecuerStringに入れたとき、文字コードはどうなるんでしょうか? 自動的にUnicodeに変換してくれるなら事前の変換処理が必要なくなって楽なのですが…
SecuerString って何だ? ググっても出てこない。
SecureString
247 :
244 :2007/08/15(水) 12:52:29
>>245 SecureStringでした。
typo…orz
textboxの文字もunicodeじゃないのかい?
249 :
244 :2007/08/15(水) 13:18:40
>>248 そうだと思ってEncoding.Unicode.GetBytesしたのを戻したら見事に化けてたことが
あったので多分システムに依存するんじゃないかと思ったのですが…
>Encoding.Unicode.GetBytesしたのを戻したら ここのあたりが怪しいと思わないのか?
何でバイト列だと思ったんだ
そうじゃなくて。 自前の処理に問題があると思わないの?
TextBoxに普通にキー入力したものをTextで取り出したら Stringだよ。
そうだね。 Stringだね。
SecureString自体も文字セット関係ないしなー 使うのCharだし
>>244 どこが質問のポイントなのかよく分からないが
1. TextBox.Text は String、なのでUnicode
2. SecureStringの内部は暗号化された非公開情報
文字列として保持されているわけではないのでUnicodeとか意識するだけ無駄
3. SecureString と string は直接変換できない(双方向)
これはSecureStringの存在意義にかかわる問題であり、仕様。
4. どうしても相互変換したい場合、例えば以下のようになる
SecureString ss = new SecureString();
ss.AppendChar('a');
ss.AppendChar('b');
string s = Marshal.PtrToStringUni(Marshal.SecureStringToBSTR(ss));
5. しかし、4.のようなことはするべきではない
ttp://akari.kabe.co.jp/MagSite/Content.modf?id=20060713110548 どうしても変換する状況が避けられないなら、そもそも SecureString を使うことに意味はない
ということで、Textboxから入力されたテキストをSecuerStringに入れるのはダメ
おーい、4. でリークしてるぞー ところでunsafe使えばString書き換えられるんだけど、メモリ上どうなってんだろ
SecureString使い道なし。
>>257 ごめん、面倒になって意味なく端折りすぎた
×
string s = Marshal.PtrToStringUni(Marshal.SecureStringToBSTR(ss));
○
string s;
IntPtr bstr = Marshal.SecureStringToBSTR(ss);
try {
s = Marshal.PtrToStringUni(bstr);
}
finally {
Marshal.ZeroFreeBSTR(bstr);
}
260 :
デフォルトの名無しさん :2007/08/15(水) 21:58:29
C#でVBのRedim関数と同様の関数ってありますか?
そんなの忘れろ。 可変長リストなら List<T> や ArrayList 使え。
普通に初期化するだけで動的配列(確保)になる int[] array; array = new array[5];//Redim int[] array = new array{]{1, 2, 3, 4, 5}; こんな風に初期化したとしても、arrayは動的配列になる
262は動的配列だよ。実行時に要素数を決定できるのが動的配列。 可変長とはまた別の概念。
動的配列はただの動的に確保された配列とは異なる。
267 :
262 :2007/08/15(水) 22:24:53
わかると思うけど間違い ×new array ○new int VBでは宣言時にサイズを指定しない配列を動的配列と呼ぶみたいだからそれに従った。
Preserveなら違うだろうけど、Redimなら
>>262 でいいんじゃない?
>>262 それ動的じゃないよ。
静的。
実行前に決まってるし、サイズの自動拡張できないし。
ここってレベル低いっすね 動的すらわからないなんて C#って入門者向けなの?
yes 全ての人に門戸は開かれています。 ありがたや、ありがたや。
さすが大人の切り替えし
c++の間口の狭さは異常。
VB7以降のRedimはほとんど互換で残ってるようなものだけどな。
>>260 の質問じゃなくて、
>>262 の「動的」に食い付いているのか
>>260 はこれで良いと思うけど
使用する前にサイズがわかって、以後サイズは変更されない
Redim →
>>262 (
>>267 )
使用した後にサイズが変更になる
ReDim Preserve →
>>261 たしかにVB6だと、宣言時にサイズを指定しないのは「動的」って見かけるね
276 :
デフォルトの名無しさん :2007/08/15(水) 23:54:30
質問してもよろしいですか? C#に限ったことではないとは思うのですが、 ,NETのプログラムでデータベースからデータセットを取得した後に、 データセットと同じプロパティ名を持つクラスにデータを放り込んだりするプログラムに よく出くわします。 照会画面や印刷物を出力するためのSQLを発行するたびに 問い合わせ結果を保存するためのクラスを作るのはいかにもしんどい作業なのですが、 こういうものなのでしょうか? データセットの値を直に画面や印刷物に出力するのはよろしくないのでしょうか? また、データセットを取得するためにビジネスロジックと呼ばれるクラスを作って、 そこから呼び出すのですが、フォームから直にデータセットを取得するのは問題があるのでしょうか? 長くなりましたがどなたかご教示ください。
フォームとビジネスロジックを別にできる。 ↓ 作る人を別に出来る ↓ 完成が少し早くなる。
↑ 嘘でした。
コンマネット
280 :
デフォルトの名無しさん :2007/08/16(木) 00:24:09
>>277 早速のご回答ありがとうございます。
なるほど。そういうメリットがあるのですね。
いわゆる3階層というものでしょうか?
データを保存するクラスを作っておくのも
実際にデータベースからデータを取得するプログラムが完成しなくても、
個別に紹介画面などを開発できるというわけですね?
ひとりで作ってると目の前に材料があるのにお預けくらってるようでもどかしいのですが・・・
>>278 他にも理由があるのですか?
281 :
244 :2007/08/16(木) 00:41:43
亀レスすいません。
>>256 文字コードを変換するためにSecureStringを使うわけではないのですが、
それでもTextBoxのTextを突っ込むのはまずいですかね?
283 :
244 :2007/08/16(木) 00:59:49
SQLもXMLで記述するべき。 LINQ、iBATIS
>>281 誰も文字コード変換するためとは思ってないし、
まずいのではなく、意味がないと言っている。
SecureString っていうのは動作中のプロセスのメモリイメージを
そのまま他人にぶっこ抜かれて調査された場合でも該当のメモリ上に
認識可能な文字列が残らないことを保証するためのもの。
例えば、サスペンド中のノートパソコンを盗難されて解析されるとかの状況。
TextBoxの文字列を入力するということはSecureStringに格納する前に
メモリ上に可読可能なString型文字列が存在することになる。
この状態でメモリを解析されたら、たとえSecureStringの内容は読めなくても、
代入元のStringの文字列がそのまま見えてしまうので、意味がないといってる。
だから使い方(使いどころ)が非常に難しくて、
>>258 のような発言になる
286 :
デフォルトの名無しさん :2007/08/16(木) 01:58:38
>>284 レスありがとうございます。
なるほどこういうものがあるのですね。
データベース上のテーブルと1対1でクラスを作っておくのであれば
他のプログラムでもなにかと利用する機会もあるのかもしれないのですが、
参照系などはSQLを投げればデータセットが必要な項目を勝手に用意してくれるという
恩恵にあずかれないのはやはりもどかしく感じられます。
よく使う参照項目を持ったデータセットが何パターンもできてしまい
しかもそれらが元になるテーブルとの関連が分からなくなってしまうのを避けるために、
トランザクション系のテーブルに参照項目をすべて持たせ冗長化させたりで、
なんだかCOBOLのデータファイルみたいなテーブルばかりで・・・
どうもしっくりこないのですが、そういうものなのでしょうか?
フォームが作られるときに実行して欲しい処理は フォーム1ロードに書けやゴルァみたいな解説があったんですが public Form1() { InitializeComponent(); } ↑の中に記述しちゃっても違いがないみたいなんですけど なぜにロードがあるのですか? インスタンスがはじめて作られるときだけ実行されるみたいな解説があったようななかったような
Load イベントはフォームが最初に表示されるとき
初期化はコンストラクタに書いちゃっていいよ
初期化する内容による。 FormのGUI要素にアクセスするなら、Loadまで待つ必要がある。
そういえばLoadイベントは派生クラスでOnLoadをオーバーライドしたら潰せるよね 仕方ないのはわかるけど
292 :
287 :2007/08/16(木) 10:26:02
>>288-290 なるほど。ありがとうございました
form1road{}書いてもまったく反応なくて
それでそこに記入したんですよね。
まさかフォームをダブルクリックして作ってもらわないといけないとはね
ダブルクリック・・・?
あ、デザイナってやつをです。こういうの使ったことねえからわかんね
form1roadって・・・
>>292 デザイナ触るのが面倒だったらOnLoadをオーバーライドでもおk
不覚にも笑ってしまった
雷マークのほうが分かりやすいのでは
button.Click += [Tab][Tab] は快感だよな
そうだね
Rubyは業務で使ったことも言語仕様を研究したこともないから なにもいえないな。 ひとつ言える事は、普及するまで研究しようとは思わない。
>>300 根拠なく言われても。このスレで言われても。
>>300 悔しさがにじみ出てる・・・
がんばれ・・・
そりゃ作者は自分のがいいと言うでしょうよ
306 :
デフォルトの名無しさん :2007/08/16(木) 14:40:22
構造体(classでもよいです)の静的な初期化を したいです。 C++では、こうやって書いていたもの。 struct A { int x; char *str; }; const A tbl[] = { {10, "one"}, {20, "two"}, }; C#ではどうやりますか?
コンストラクタ
308 :
306 :2007/08/16(木) 14:50:06
struct A { public A(int x, string str) { _x = x; _str = str; } int _x; string _str; } A[] tbl = { new A(10, "one"), new A(20, "two"), }; これでOK? A[]に、constするとエラーになるな。
C/C++ と違ってメモリに皮かぶせただけのものではないしねー。
310 :
306 :2007/08/16(木) 14:59:08
なるほど。 なんか、データがソースコードに埋め込まれている感が強くなるね。 こーゆー、データっぽいやつは、xmlなんかで 外においとけってことなのかしら。
constの部分を無理やり生かそうとするならこんな感じかのう。 struct A { public int x; public string str; public A(int x, string str) { this.x = x; this.str = str; } } class Test4 { static readonly IList<A> a = Array.AsReadOnly(new A[] { new A(1, "one"), new A(2, "two")}); static void Main() { ... } }
川俣の相手をしているようじゃ松本もゴミだな
C#3.0をまて
C#はオブジェクト指向。 データはクラスに属するからソースコードに埋め込まれている感が強く感じるのは当然だよ。
>>313 これはこれで一体何の言語だって感じだ。
var ss = new [] { new { x=1, str="one" }, new { x=1, str="two" }};
ただマップ系の初期化がサポートされないのは残念。
=> はラムダ式で使っちゃったしな。
そこまでするのに動的型は導入しないのは逆に不自然なような
317 :
デフォルトの名無しさん :2007/08/16(木) 18:07:57
あるオブジェクトを参照しているオブジェクトの一覧を 取得することなんてできないでしょうか? 参照を全部外したつもりでGC.Collect()してるのに、 一向に破棄されないオブジェクトがあるので、 どこから参照されてるのか知りたいのです。
CLR Profiler使えば
319 :
317 :2007/08/16(木) 18:15:27
ありがとうございます。 さっそく試してみます。
>>315 var dic = (new [] {
new { x=1, str="one" }, new { x=2, str="two" }, new { x=3, str="two" }
} ).ToDictionary(s => s.x, s=> s.str);
321 :
317 :2007/08/16(木) 18:43:34
CLR Profiler使ったけど NullReferenceExceptionですぐおちるよ。 なんじゃこりゃ。
.NET2.0には2.0用のバージョンがあるけどそれは確認した?
323 :
317 :2007/08/16(木) 19:01:42
Releaseだとアプリケーションエラーで落ちるんだけど、Debugならエラー無し。 どこ見ればいいの?
よくあることさ
最適化関係 スレッドまわり ディレクティブ
アバウトな質問にはアバウトな回答ですかw しかし、アプリケーションエラーってw 投げやりなのか頭悪いのかそれともその両方か
ふらっとスレだからまあそんなのもいていいんじゃない
便乗質問いいですか。 ネイティブなWin32アプリなら、リリースビルドでもデバッグ情報と クラッシュダンプがあれば、後からデバッガで解析(ポストモータムデバッグ) できますよね。 C#(というか.NET)の場合、客先で運用中に落ちたときの一般的な解析方法 みたいなのはあるんでしょうか。
質問させてください。 Visual Studio 2005 .Netでプログラムしているのですが、 「インクリメント検索」の機能を実装したいのですが、 どうやればいいか悩んでいます。 テキストボックスに文字 正規表現でリスト内のデータを検索 リストボックスにマッチしたものを表示 くらいしか思いつきません。 みなさんはどのようにしていますか? よろしくお願いします。
333 :
330 :2007/08/16(木) 23:38:12
>>331 まさにズバリの情報です。
どうもありがとうございました。
アプリケーションエラー以外の情報はどうやって探ればいいの?
意味が分からんわ 以外のってどんなのだよ 適当にログ書きだしてろ
アプリケーションエラー発生した際の詳細情報の確認方法教えてください><
なぜかあるプロジェクトのみReleaseでビルドしても実行ファイルが releaseフォルダに出力されないんだけど、原因わかる人いませんか?
Releaseの出力先を別のところに指定してるんだろ
それも確認したんですけど、初期設定のまんま変更してないです。 "bin\Release\"で。 ソリューション構成リストボックス?でRelease選択するだけで、 以前は一個のファイル化されたリリース版が出力されたと思うんだけど。。
>>337 コンパイルするとき、以下のような情報は表示されていないの。
パスの情報は正しくなってる?
...
コンパイルの完了 -- エラー 0、警告 0
test1 -> E:\test1\test1\bin\Release\test1.exe
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========
form2を表示させるときに 何枚も表示させたいのでループさせて 同じインスタンス名で作ってみたんですけど エラーもでないようですしこれでいいんですかね?
バグを自分で埋め込むようなコードを作るなよw
インスタンス名とはこれ如何に
>>341 for(int i=0;i<length;i++)
{
Form form1 = new Form();
.....
form1.Show();
}
こんな感じ?
>>344 Form form2;
.....
for(int i=0;i<length;i++)
{
form2 = new Form();
.....
form2.Show();
}
いやこうかな?
ループ中で最後に生成したFormのインスタンスしか制御できなくなるけどそれでもいいならいいよ
どっちかっていうと344さんのが近いかな そこまであからさまにループさせてるわけではないのだけど 表示する関数を呼び出すたびに実行されるようにしてるので。 制御できなくなるだけですか ならポップアップのように情報をちょっと出すだけなので問題なさげですね
>>345 みたいに書くんだったら
>>344 にすれ。
どうせ最後のインスタンスだけ使えても意味ないんだし。
どっちにしろ、何時破棄されるかわからない作りにするなよw メモリの無駄遣いなだけ。
配列に入れとけよ
modeless fromなら、Closeボタンでclose(dispose)されるんだし 作り捨てでいいと思うけどな。 オレなんて new Form1().Show(); とかやってるぞ。
>>350 modeless form*
Application.Run(new Form1()) ももろ作り捨てだったり
Application.Runはステップがそれより先には進まないから別だろ
メッセージループが終了したら戻ってくるお
でもその時点でフォームは破棄されてるんだから放置にはならないお
先生、放置はいけないと思ったので修正したらフォームがすぐ消えてしまいます。 using (Form2 form2 = new Form2()) { form2.Show(); }
List<> の2つの要素を入れ替えるにはどうしたらいいですか?
配列の要素入れ替えるのと変わらん
T item1 = list[index1]; T item2 = list[index2] list[index1] = item2; list[index2] = item1;
Visual Studioに関数のアウトラインを表示する機能ってないの? 最近の秀丸みたいな。
コンポーネントを作成して、ツールボックスの「アイテムの選択」から exeファイルを選んだのに、「ツールボックスに含めることの出来るコンポーネントは何もありません」 と表示されます。 どこが間違っているのか検討がつきません。 どのあたりが怪しいでしょうか?
>>359 秀丸は知らんけどクラスビューは?
>>360 そのコンポーネントはpublic classになってる?
362 :
359 :2007/08/17(金) 21:25:40
>>361 ありがとう。
今見てるソース内の関数が列挙されてるとかだと見やすくていいんだけどねぇ。。
ごちゃごちゃしててあんまみやすくないね。
規定のテキストエディタを起動して string変数の内容を表示したいのですが どのようにすればいいのでしょうか?
365 :
360 :2007/08/17(金) 21:45:00
>>361 さっそくの回答ありがとうございます。
class TestListenerってなってるからprivateなんですよね?
明日会社に戻ったら試してみます。
ちなみに↑は私の家の古いソースを見ました。
でもツールボックスにはあるのが不思議。
前任者はどうやってツールボックスに追加したんだろう???
既定のテキストエディタというのが .txt に関連付けられたアプリという意味なら、 いったんstringをファイルに出力してそれをProcess.Start
367 :
359 :2007/08/17(金) 22:04:12
>>363 ありがとう。
これ(Ctrl+M+L)を良く使ってたんだけど、やっぱり別ウインドウで常に表示しててほしかったので。
プラグインでそれっぽいのなかったけか? Source Outliner SDKのサンプルかな??
コンポーネントもexeなんだね。 勝手にDLLだと思ってた。
普通はDLLにする
オブジェクトブラウザ知らんのか?
アレとは別もんだろ
リージョンの事か?
そうじゃにか
375 :
デフォルトの名無しさん :2007/08/18(土) 03:45:41
知識ゼロの初心者なんだけど、おすすめの書籍ってある? 入門とか初心者でもたくさんあってよくわからないんだけど
初心者の最初の課題はサーチエンジンで必要な情報を探すこと。 アマゾンでC#で検索してよさそうな本をピックアップして書店で立ち読み。 プログラミング関係者はみんなこんな感じで調べてる。
377 :
デフォルトの名無しさん :2007/08/18(土) 04:37:28
>>376 近くの本屋行ってきて見たんだけど、品揃え悪いんだよ・・・
開発環境って本来数万円するものだから そのあまった金で手当たりしだい本買えばいいと思うYO
品揃え悪いのか、MS関連の本では、最初に日経BP本から調べてるな俺は。
380 :
デフォルトの名無しさん :2007/08/18(土) 05:03:07
>>378 え?Visual C#2005じゃだめなの?
>>380 ExpressEdition?
入門にはベストな選択だと思うよ
382 :
デフォルトの名無しさん :2007/08/18(土) 05:08:18
383 :
デフォルトの名無しさん :2007/08/18(土) 05:11:26
384 :
デフォルトの名無しさん :2007/08/18(土) 05:17:16
ちなみに最終的にシュミレーションゲーム(戦闘の指示出して見とく感じ) のゲーム作りたいんだけど、最初は何がおすすめかな? 普通に”ひと目でわかるMicrosoft Visual C# 2005 アプリケーション開発入門”とか?
シュミレーションゲーム それは難しいw
386 :
デフォルトの名無しさん :2007/08/18(土) 05:40:21
388 :
デフォルトの名無しさん :2007/08/18(土) 05:55:42
>>387 DirectXってプログラミング言語なの?API群って書いてあるんですけど?
391 :
デフォルトの名無しさん :2007/08/18(土) 06:17:05
>>380 ん?十分でしょ
C#も少し前までは有料だったんだってさ
その分本かえるでしょ
逆引き500とかって本眺めてればリファレンス代わりになるんじゃね
393 :
デフォルトの名無しさん :2007/08/18(土) 06:43:07
>>392 リファレンスって見ても難しいんじゃない?
ブール型を文字列型に入れるのはそのままいけるのに 逆にそこで得た”True”を文字列型にいれられない・・・ if分で判別しなきゃだめでしょうか?
いやまず > ブール型を文字列型に入れるのはそのままいけるのに そのままはいけないから。型をなんだと思ってる。
え?じゃあチェックボックスが返すbool値はプログラムが勝手に変換してくれてたのか キャストむずかしす
>>384 XNA使えばC#でバリバリ作れるよ
とてもじゃないけど入門には向かないがw
普通にGDI+でガリガリ書いてもよかろう。
DirectXに行くのはGDI+の遅さに我慢できなくなってからでいいだろうね
シミュレーションゲームだったらコマンド入れるとテキストベースで 戦況が一覧される系のプログラムを作って、 ある程度出来てからグラフィックに取り掛かれば十分。 そのグラフィックに必要な環境やライブラリはその時期になると自然と決まってくる。
たぶん
>>384 はRTSじゃね?
ビジュアルとマウス操作前提だと思うけど
402 :
デフォルトの名無しさん :2007/08/18(土) 12:04:49
>>401 あ〜そんな風に言うんだw
そんな感じのやつです
403 :
デフォルトの名無しさん :2007/08/18(土) 13:12:18
他のアセンブリから参照する必要は無い限り、 クラスのアクセスをpublicにする必要は無いですか?(internal) あるいは他の理由でpublicにしなければならない場合があるんでしょうか
いや別にないが
405 :
デフォルトの名無しさん :2007/08/18(土) 13:36:01
>>403 javaで他から利用されるクラスをプライベートに変更し、
そのクラスだけコンパイルし直したら他クラスから利用出来た。
他クラスごとコンパイルするともちろんエラー
これを使えばアクセス不能のライブラリが作れる!と思ったが
職場のlinuxではコンパイル出来ず。
処理系の問題か…
.netは同じ事出来るのかなぁ
スレ違いですみません。
フレンドアセンブリ
internal interface を実装するときにメンバを public にしなければいけないのはなぜなんだ internal じゃあかんのか
すいません。今、XML に XSLT を適用しようとしているのですが、XML 中に DTD の 宣言が入っていて、XmlException が発生してしまいます。 別に DTD の Validation をする必要はないので、無効にしたいのですが、無効になりません。 コードはこんな感じです。 XmlReaderSettings readerSettings = new XmlReaderSettings(); readerSettings.ProhibitDtd = true; readerSettings.ValidationType = ValidationType.None; XmlReader reader = XmlReader.Create(xsltFileName, readerSettings); XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load(reader); XmlTextWriter tw = new XmlTextWriter(outputFileName, Encoding.GetEncoding("shift_jis")); xslt.Transform(sourceFileName, tw);
409 :
405 :2007/08/18(土) 14:06:27
System.MethodAccessExceptionがでた…
そもそもそんなのロードできないようにバージョンつけとくべき
>>366 やはりそれしかないですか・・・
レスありがとうございました
412 :
405 :2007/08/18(土) 14:47:51
>>410 レスありがとうございます!
バージョンですか調べてみます。
XNAはシェーダープログラミングがレイトレーシング、それにモデリング技術がないと使いこなせない。
いあそれはちょっと話がずれてると思う…
2Dでスプライトしか使わないなら簡単
SpriteBatch も BasicEffect もあるからシェーダは書かなくてもなんとかなると思う。 固定機能で今までは作っていたわけだし。 モデルとかコリジョンとかその他はまあ頑張れとしか言えんが。
ToolStripMenuItemsにファイルから読み込んだ文字列をAddで追加していって、 Addされた文字列をクリックしたときに発生するイベントはどのように指定したらよいでしょうか? Addされる文字列などは起動時にファイルから読み込まれるので動的な生成?って感じになるのですが・・・
とりあえず MSDN で event とかのキーワードから調べてみる?
>>418 すみません、ググってきます(´・ω・)
420 :
デフォルトの名無しさん :2007/08/18(土) 22:26:12
多次元配列とかジャグ配列って使うことあるんすか? 使用頻度は少ないよね。
なくはないけど
>>420 多次元配列は基本中の基本。
画像データや音声データを扱うときに良く使います。
いや使わんね。 少なくともC#では。
多次元配列はメモリ量が少ない組み込み系には使えるが、 メモリ気にしないですむシステムで定義する理由がない。
本気か?
どうかな?
まあ.NETの多次元配列は実際あまり使わないほうがいいかも。
Array クラスの多次元配列の冷遇っぷりは異常……でもないか。 自分は使わないし。
悪代官「良いではないか良いではないか」
コレクションとかってのに朝鮮しようとして リストボックス型にaddで追加して実際のリストボックスに入れてあげようとしたけど 項目ありすぎてわかんないお(´・ω・`) 入力補助みたいなので一覧みたいなの表示されるけど ちんぷんかんぷん。みんなどうやって覚えたの
あるクラスのメンバ変数から、自分の他のメンバ変数って呼べないんですか? private string info = "メンバa=" + this.a; みたいに… インタフェースOyaでString Infomationというプロパティを宣言して、それを実装するクラスKoでは メンバ変数という形でもつ設定値等を説明文付きで返したかったんですが。 上の例みたく、info変数に入れ込んで…
>>429 >>431 (・∀・)ジサクジエンデシタ
>>430 だいたいListBoxとかListViewとかComboBoxとかは
Itemsプロパティがコレクション取得/設定のためのプロパティだよ
listBox.Items.Add( object ) みたいな
>>432 >private string info = "メンバa=" + this.a;
はある意味、略記法。
実際はコンストラクタで初期化される。
その時点では this.a が初期化されてるかわかんないでしょ
>>434 んで、
>>432 のようなことをしたい場合、Infomationのgetの中で初めて
this.aを呼んでやる、つまりthis.aに関する説明文はその中で書いてやるというのが
普通なんでしょうか?
information のスペルが間違ってる
infoにクラスのインスタンスを作った時点のthis.aを使いたいのか、
プロパティが呼ばれた時点のthis,aを使いたいのかわからないな。
後者なら
>>435 の方法になるし、
前者なら
class Hoge {
string a = "foo"; string info;
public Hoge() { info = "メンバーa=" + a; }
後者なら特に理由がなければメンバ変数にしないでそのつど文字列作って返すのが普通
439 :
デフォルトの名無しさん :2007/08/20(月) 00:23:28
VISUAL C#を仕事で使うことになったので、今日参考書を見て回ったのですが、 最初の参考書としてお勧めのものがあれば教えてください。 自分では「独習C#」という本が見やすく、詳しそうに感じたので、この本を買おうか と考えているのですが、VISUAL C#での開発なのでVISUAL C#を題材に絞った 本のほうがよいのかとも思っています。 業務はVISUAL C#を使用するのは画面の制御周りで、細かな内部処理は別言語 を使用するため、そこまで掘り下げた内容でもいいのかとも思ったりもしています。 ちなみにプログラミング経験はCOBOLだけあります。
化石だな
>>439 VISUAL C#は大文字小文字を区別する言語なのでVisual C#と書いたほうが良い。
参考書は自分がわかりやすいVC#の本を買えば良い。
>441 その前に全角半角の区別を…
プログラミング言語は本1冊読んだ程度では、初歩的なコードしか書けない。 最低でも数冊は読まないとな。 言語知識は独習C#で間に合うが、画面の制御と言うならば、 Forms、WPFなどの本を使わないと身に付かない。
>>443 Forms の本でいい本はありますか?本屋で見てても Dobon を上回るような本がみつからなくて・・・
ありません
446 :
デフォルトの名無しさん :2007/08/20(月) 10:01:31
C#を学ぶ前にオブジェクト指向について軽く勉強しておくべきですか?
Wikipedia読むくらいはしといてもいいかもね
448 :
デフォルトの名無しさん :2007/08/20(月) 10:06:42
お返事ありがとうございます。 その程度で十分なんですね。早速、Wikiを読んでみようと思います
ちゃんと勉強するのは、だいたい一通りコード読めるようになってからにした方が早い
450 :
デフォルトの名無しさん :2007/08/20(月) 10:15:29
お返事ありがとうございます。 一通り勉強してからの方がいいですか。それもそうですね。。。 しばらくはC#の勉強だけにしようと思います。オブジェクト指向について 勉強するのは当分、先ですね
451 :
デフォルトの名無しさん :2007/08/20(月) 10:38:11
オブジェクト指向というのは今後廃れていきます プログラムを複雑化させた諸悪の根源なのです
でたらめ言うなよ
すいません、現在の月の二ヶ月後の末日を取得するのってどうやってますか? たとえば今日なら8月なので2007年10月31日というDateTimeの値がほしいのですが。。。
ヒント 自分で計算する
>>454 DateTimeにTimeSpanを足す
>>454 現在が8月なら8月1日に月3つを足して1日引く。
DateTime twoMonthsLater = DateTime.Now.AddMonths(2);//今から2ヵ月後の日時
>>457 と同じだがコーディングするとこう
DateTime ct = DateTime.Now;
DateTime td = new DateTime(ct.Year, ct.Month, 1).AddMonths(3).AddDays(-1);
>>454 DateTime dt = DateTime.Today.AddMonths(2);
int year, month, day;
year = dt.Year;
month = dt.Month;
day = DateTime.DaysInMonth(year, month);
string date = String.Format("{0}/{1}/{2}, year, mount, day);
MessageBox.Show(DateTime.Parse(date).ToString("d"));
書き間違いを訂正 --- DateTime dt = DateTime.Today.AddMonths(2); int year, month, day; year = dt.Year; month = dt.Month; day = DateTime.DaysInMonth(year, month); string date = String.Format("{0}/{1}/{2}", year, month, day); MessageBox.Show(DateTime.Parse(date).ToString("d"));
464 :
461 :2007/08/20(月) 17:06:42
カスが内容も把握せず、冗長な糞レスつけるなよなww
氏ね^^
>>465 は463->464を見て461も勘違いしてると思ったんだろ
どう考えても461は勘違いだろ・・・
↑どこが?
474 :
デフォルトの名無しさん :2007/08/20(月) 20:54:54
すんません、教えてください。 環境はVS2005 C#です。 UserControlを継承したプログラムを作成したんですが、 ツールボックスにそのコントロールが追加されません。 VS2003のVBでは自動的に追加されていたので、 ツールボックス右クリック→アイテムの選択から追加する以外に、 自動的に追加する方法があると思って 調べてみましたがわかりませんでした・・・。 よろしくお願いいたします。m(_ _)m
コントロールのコードがFormと同じプロジェクトならプロジェクトをビルドすれば 表示されると思う。 別のプロジェクトならプロジェクト参照すれば表示されるよ。
自動的に追加されません
自動的に追加されます プロジェクトにカスタムコントロールを新規作成してビルドしてみれ
478 :
デフォルトの名無しさん :2007/08/20(月) 21:46:13
>>475 それが追加されないんです・・・。
新しい項目の追加→ユーザーコントロールから作成したんですが・・・。
>>477 それでもダメでした・・・orz
なんでだろう・・・?
もしかして作成したコントロールのデザイナを表示したままになってないか? フォームのデザイナとか開いてみたか?
480 :
デフォルトの名無しさん :2007/08/20(月) 21:55:23
>>479 う〜ん、全部閉じて開きなおしたり、
再起動したりしましたがダメでした・・・。
設定も特に変更してないのですが・・・。
1番上に出ると思うが。 ツールボックスの (ソリューション名)コンポーネントは開いてるのか?
>>480 まあ、まず間違いなく(表示されてるのに)見落としてるだけだw
ムラサキの歯車のアイコンが最上段に表示されてるでしょ
新規作成でwindowsアプリを選ぶ。 新しい項目の追加→ユーザーコントロール ユーザーコントロールをいじる。 ビルド form1のタブをクリック ツールボックスに歯車のアイコンが…
ツールボックスを右クリック→ツールボックスのリセット
折りたたんで見えてないなんておちじゃないだろうな…
486 :
デフォルトの名無しさん :2007/08/20(月) 23:17:38
>>481-485 アドバイスありがとうございます。
書き込みも含め、色々と試行錯誤してみましたがダメでした・・・。
VBプロジェクトで同じことやってもダメでした・・・。
折りたたみも確認して、リセットも行いました。
こりゃもう、再インストールしたほうがよさげですかね・・・orz
487 :
360 :2007/08/20(月) 23:23:32
C#のボタンでクリックした時に凹んだ状態になりますが、 KeyDownで押しっ放しにしてるときに、その表示にするにはどうしたらいいですか? いろんなところくぐってみましたが、解決策が見つからなくて。 お願いします。
>>486 何個かコントロール作って同じこと試して、
原因がそのコントロール自体にあるのか確かめてからにしたら?
サービスパック適用してないからじゃないか? 結構VS2005はバグあるぞ。
491 :
360 :2007/08/20(月) 23:44:08
>>488 checkboxってコントロールのですよね?
どうやったらボタンの表示が変わるか教えていただけないでしょうか。
関連付けできなくてすみません。
>>491 質問自体が曖昧・情報が欠落しすぎでワケワカメ
(まあ488も分からんが)
Buttonコントールのことだと想定して
りふれくたーでみたら分かるけどOnKeyDownオーバーライドしたら
いけるんじゃね?
spaceキーなら普通に押しっぱなしでへこむだろ
493 :
491 :2007/08/20(月) 23:55:29
>>492 ありがとうございます。
Speceキーならたしかに凹みました!!
リフレクターでのオーバーライド、、、これをもう少し調べてみます。
(リフレクターって言葉初めて聴きました)
メンバ変数とフィールドの違いを教えてください
プロパティ
497 :
486 :2007/08/21(火) 00:37:18
>>489-490 アドバイスありがとうございます。
サービスパック適応してませんでした・・・。
いまインストール中です。明日には終わるかな?
とりあえずそれで試してみようと思います。
ありがとうございました!
とてもくだらないかと思いますが、承知の上質問しますw C#のコマンドラインプログラムなんですえけど、WriteLineメソッド 実行後ウィンドウがものすごい早さで消えるんですけど、 例えば、ユーザーがEnterキーを押して始めて終了するというようには できないでしょうか。
Console.ReadLine(); コマンドプロンプトにプログラムをD&D
何のウインドウが消える?
501 :
500 :2007/08/21(火) 01:24:22
あぁごめん。コマンドラインか。
502 :
デフォルトの名無しさん :2007/08/21(火) 01:38:59
ブレークポイントでしょ? 左端クリックして丸をつけましょう。498ね
503 :
デフォルトの名無しさん :2007/08/21(火) 02:12:46
Hello world!のやり方ってどうやるんですか?
まず右手をあげて
ノ
で、そのあとは?
いえモードに関係なくすぐ終了してしまいます 僕のPCが高性能すぎるからですかね
しかし、質問者は健康的な生活を送ってるなw
510 :
デフォルトの名無しさん :2007/08/21(火) 08:36:17
CheckBoxのプロパティの値について質問なのですが、 Accessのyes/no型でDataGridviewにCheckBoxを表示させているのですが、 そのCheckBoxがチェックされているか、されていないかの情報を取得するには、 どうすればよいか教えていただけないでしょうか。 よろしくお願いします。
普通にCheckBoxのプロパティから取れないか?
512 :
デフォルトの名無しさん :2007/08/21(火) 10:40:19
何時間右手上げてればいいんだよ 続き賭けやボケ!!ヽ(`Д´)ノ
朝礼台に上って
左手を口に添えて
つーかなにこのやる気の無いスレは?
>>510 CellのValue
>>503 using System;
static class Program {
static Program() { Console.WriteLine("Hello world!"); }
public static void Main() { }
}
理解できない。日本語でおねがいします
システムを使用します; 静的なクラスProgram{ 静的なProgram(){Console.WriteLine、(「こんにちは、世界!、」、} 公共の静的な空のMain(){ } }
518 :
デフォルトの名無しさん :2007/08/21(火) 15:05:30
>>511 、514さん回答ありがとうございます。
CheckBoxの値を取得することが出来ました。
現在、取得出来た値がtrueだったら、
他のCheckBoxにCheckを入れるプログラムを作成しているのですが、
if文がtrueの方に処理をしてくれません。
何か良い比較方法はないでしょうか。
よろしくお願いします。
if (System.Convert.ToString(dataGridView1.CurrentRow.Cells[2].Value) == "true")
{
hoka.Checked = true;
}
ブレークポイントを設定して、値を確認する方法を最初に勉強した方が良くないか?
で、DateTimeを質問したにーちゃんは何処行ったんだ?
自己解決しました
>>519 言える
>>518 その行でF9押してF5押して、止まったらその変数の上にマウス乗っけるだけだぞ
Debugの有効活用はプログラミング開発の基本だからな。
form1とform2で共通のグローバル変数にアクセスするときに for文でまわしてるときなど片方からのアクセスを拒否したいんですが スレッドのようにロックだのミューテックスだのって使えるんですか?
普通にlockすればいいよ。
あれ、form1とform2って同じスレッドになるんじゃないの。 ロックは必要?
form1とform2は普通は同じスレッドで動いてるのだからlockしなくてもいい。
別スレッドからの操作ならinvokeすれば良い。
529 :
524 :2007/08/21(火) 20:53:45
うーんロックが効いてるんだか効いてないんだかよくわらん form1でsleep使うとform2も止まってしまうのか 確かに同一スレッド扱いでロックとかいらないみたいですね
扱い……
スレッド=小人さん一人 一人しかいないから片っぽで仕事してるとき他からアクセスされることはない Thread.Sleepすると一人しかいない小人さんが寝てしまうので全部止まる
確かにどうやっても割り込めなかったので同一スレですた
ソース上でラジオボタンを可変個、グループボックス内に作成しました。 これらのラジオボタンにイベントを指定するにはどうすればいいのでしょうか? for (int i = 0; i < t; i++) //tは可変 { RadioButton radio = new RadioButton(); radio.Location = new Point(10, 10 + i * 10); } From上にコントロールを貼り付ける場合は radio.Enable = true; みたいな感じで、「名前.イベント」ですが、 手書きでコントロールを作成した場合はどうすればいいのでしょうか? よろしくお願いします
ソース上でラジオボタンを可変個、グループボックス内に作成しました。 これらのラジオボタンにイベントを指定するにはどうすればいいのでしょうか? for (int i = 0; i < t; i++) //tは可変 { RadioButton radio = new RadioButton(); radio.Location = new Point(10, 10 + i * 10); } From上にコントロールを貼り付ける場合は radio.Enable = true; みたいな感じで、「名前.イベント」ですが、 手書きでコントロールを作成した場合はどうすればいいのでしょうか? よろしくお願いします
なんも変わらんよ。 自動生成されたソースを見れば、イベントがどう追加されてるかわかるぞ。
radio.イベント名 += メソッド名(またはTabキーを2回押す); 解答としてはこれでいいんだけど、いい機会だからちゃんと言語としてのC#を勉強してみたら
勇気を持って書き込みます。 string型の変数strAに"AAA"を代入した後、 strAを引数にして別メソッドを呼び出し、 呼び出されたメソッドで仮引数strBに"BBB"を代入します。 このあと呼び出し側のメソッドでstrAを表示させると、 "BBB"になると思ったのですが、実行したところ"AAA"のままでした。 stringは参照型なので、変数strAと変数strBは同じ実態を参照していると思うのですが、 なぜ違う内容になるのでしょうか。 よろしくお願いします。
いやお前らの書いてることに違和感を感じるよ。
プログレスバーを、バーが伸びていく方法ではなく、バーが端から端へループする方法にしたい場合、どうすればよいですか? こんな感じのものです。 | ||| ||| ||| ||| |
ないものは作るしかない! ないものは作るしかない! ないものは作るしかない!
>>537 同じ実体を参照してたのに、呼び出し先で別の実体を参照しちゃってるじゃんか。
>>539 ProgressBarStyle かな
>>537 「参照型」と「参照渡し」は違う
それはポインタを値渡ししてるだけ
この中に一人、エビアンがおる。
method (string strB) // strB -> "AAA" { strB="BBB"; // strB→"BBB" 参照先の変更 } いくらmethod実行しても strA→"AAA"のまま。
これは酷い
どれがどう酷いの
オマイラ、どんだけふらっとなんだよww
誰も間違ったことは言ってないとは思うけど
やってみればわかる?
537です。
>>541 ,542,543,545
少しの間にたくさんのレスありがとうございます。
よろしければもう少し教えてください。
つまり、変数に新しい値を代入するということは、参照先の実態が変更されるのではなく、
参照先アドレスが変更されるということなのでしょうか。例えば、
strA = "AAA"
strA = "BBB"
この場合、1行目のstrAが参照しているアドレスと、2行目のstrAが参照しているアドレスは
別物ということでしょうか。よろしくお願いします。
>>552 ようやく理解できました。ありがとうございました。
>>539 それって何のためのプログレスバーだよw
どこまで進んだのかわかりにくいじゃん
ちゃんと仕事してるふりをするためだろ。 ユーザーも流れる緑色を眺めてれば気が紛れる。
Marqueeってたしか2003とかでビジュアルスタイルがオンのときしか 使えないんだよな 自前でやるしかないね
>>541 まさにそれでした。ありがとうございます。
>>555 99%で止まってしまうよりマシかと思いまして。
なんで99%でとまるんだ?
終わるまで仕事の総量がわからないからじゃね?
必ずしも進捗状況を明示できるとは限らんだろ。 例えばネット越しの処理を呼び出し中とか。
>>557 オフのときは対まで無理やり動かす。
すげー見栄え悪いし辺だけど。
いやなら自作しろってこったな。
対ま?? タイマ
辺?? 変
探せばコントロール転がってるよ。
五児だ辻
ついまで?
何かユーザーアカウント登録とかしなくちゃいけないの?MSDNの
まあ9割の人が2、3回起動して終わるからいらないんじゃね
VS2008β使ってて分かったんだけど C# 3.0だと今まで継承したりインターフェースを実装したりしてたとこの ほとんどがデリゲートとラムダ式に置き換わるぜ 言語仕様としてはそんなに変わってないように見えるかも知らんけど やってることはほとんど別の言語使ってるみたいになる
ラムダ式をさらにExpression<>にすると・・・クォートかよ! ヘルスバーグはじけたと思ってしまった。
あまり拡張しすぎて、C++みたいに気持ち悪い言語にならなければいいが・・・
ラムダ式にfor文のiを入れないとか LINQで作ったEnumeratorは二度列挙しないとか 変なノウハウは必要になったな
Form2を作るとできるForm2型ってなんなの ふつうにForm型で受けようとしてもだめなんすね。不思議
何を言ってるの
Formと2は同じ型じゃないのかなと思って
Formの定義を見てみろよw
Form2はFormを継承してないんじゃないの
public partial class Form2 : Form
たぶん
>>574 はこれを
public partial class Form : Form
と書き換えようとしたんじゃないかなw
580 :
デフォルトの名無しさん :2007/08/22(水) 21:51:14
コンソールアプリを開発しているのですが exeを実行中に同じexeを実行した場合、実行できなくしたいのですが どういうロジックで可能でしょうか?
多重起動禁止とかでググれ
多重起動関連でググれがいくらでも出てくるぞ?
かぶったorz
多重起動大人気
587 :
デフォルトの名無しさん :2007/08/22(水) 22:56:32
よく文字列の前に@をつけてたりしますが これは何の意味があるの?
WYSIWYG文字列
ある。 \\とか書かなくて良くなる。 と混乱させてみる。
お洒落
アドレスだよ。
属性。 俺様@酔っ払い
593 :
デフォルトの名無しさん :2007/08/22(水) 23:07:43
@を付けると"\n"が改行コードとみなされない。 それだけの意味。
なぜほんとのことをいわない
おまえもにゃ〜 verbatim文字列 答えです。
バームクーヘンとかなんとか言うんだよな
ところで、@って何なの? 演算子でもキーワードでもないよね float a=1.0f のfと同じように、文字列リテラルの一部なの?
" の たぐい
そういえばint @if;なんて使い方もあるもんな そりゃそうだ
>>588 """""""""""""""""""""""""""
>>587 "C:\\b\\d\\e\\" を
@"C:\b\d\e\" と書けたり
string sql = @"
SELECT
*
FROM
HageHoge
WHERE
〜 ";
と書ける優れもの。
>>599 それも使った難読化したことがあるが効果絶大
メソッド名とか変数名とか全部C#のキーワードに置き換えるのか。 ちょっと楽しそうだ。 今度やってみるよ。
using @delegate = System; namespace ConsoleApplication1 { class @namespace { static void Main( string[] args ) { @int @foreach = new @int(); @foreach.@static(); } } class @int { static string @public = @"Hello! "; static string @private = @"World"; public void @static() { @delegate.Console.WriteLine( @public + @private ); @delegate.Console.ReadLine(); } } }
>>605 このソースについて会話したらすごいことになりそうだな。
>>605 そそ そんな感じ
コンパイルしてリフレクタで逆コンパイルしてみて
namespace ConsoleApplication1 { internal class @int { private static string @private; private static string @public; static @int() { @public = "Hello! "; @private = "World"; } public @int() { } public void @static() { Console.WriteLine(@public + @private); Console.ReadLine(); } } internal class @namespace { public @namespace() { } private static void Main(string[] args) { new int().@static(); } } } どうみても読みやすくなってます。本当ん(ry
あら、前は@付いてなかったような・・・ もしかして対策された? でもnew int().@static();はいい感じ
そこまでするなら.ilにして記号混ぜまくれよ
611 :
デフォルトの名無しさん :2007/08/23(木) 13:35:03
いちいちコードを書くのが大変なので プログラムにプログラムを作らせればいいことに気がつきました C#で可能でしょうか?
マスターメンテナンス画面自動生成PGを作ったことがある C#で
可能
別にC#で機械語生成することも Cコンパイラ造ることも出来るしな
実行時にIL書き下せるのはびっくりする
まあそういうのはインタプリタ言語のソースコード生成した方がいいだろうけど
いや、機械に機械が直せるか! そんなことは可能なのかって事だと思う
可能だよ。予め全ての故障に対する対処法を書いておけばいいだけ。
故障に対する対処法が書いてある部分が故障したらどうするんだ
その部分の直し方を知っている機械が他にあれば直せる。
そしたら別の機械がその部分を・・・ 機械が機械を生産して 修理までしだしたら人間は必要なくなって 社会がのっとられるんじゃ((((;゚Д゚)))ガクガクブルブル
HAHAHA
笑い事じゃねー 今まで人手が必要だったものがコンピューターに取って代わられ 失業者が増える一方だってのに、社会まで乗っ取られようとしているとは! 全てお前らプログラマーのせいじゃ こうして2008年 プログラマー抹殺命令がでるのであったデデンデンデデン
C#の話をするべきではないだろうか
それなんていうB級映画
プログラムを作るプログラムってつまり プログラミング言語のことだよな
スレタイを見て欲しい ここはそんな話をする場所だろうか
全て人手が要らなくなったら 人間は遊んでるだけでいいのでは
631 :
デフォルトの名無しさん :2007/08/23(木) 18:20:39
ピクチャーボックス上にマウスカーソルがある時に、キーダウンイベントを発生させたいのですがうまくいきません なにか特別な方法があるのでしょうか?
まじめな質問が来ると途端に過疎る
>>631 意味わからんw
一体何がやりたいんだろうかw
>>631 ピクチャーボックス上にマウスカーソルが来たらフラグ立てて外れたら下ろすようにしといて
falseの時にキーダウンイベントが発生したらメソッドの頭で抜けるのは?
それかキーダウンイベントが発生したらマウス座標を取得して
ピクチャーボックス上にあるか判定するとか
キーダウンイベントを発生させれば? くだらないコードになりそうだが。
マウスカーソルが上に載ったらキーダウンイベントがぼんぼん発生するんじゃないの 何のキーかわからんけど
そう書かれてるけど本当はマウスカーソルが載ってないときの キーダウンイベントは無効にしたいのかと思った 違うならすまん
複数のイベントに対して共通のイベントハンドラを指定したい の類じゃね?
640 :
デフォルトの名無しさん :2007/08/23(木) 19:31:36
すみません 説明がおかしかったみたいです ピクチャーボックスにフォーカスがある時に数字キーを押されたらピクチャーボックスのキーダウンイベントを発生させたかったんです マウスクリックイベントやマウスリーブイベントは発生出来てるのにキーダウンイベントだけ発生しないんですよ フォームのキーダウンイベントにすればいいって事ですかね? とりあえず今は出先なので実験出来ないんですが
PictureBoxはデフォでは入力フォーカスもてないぞw 継承してSetStylesで入力フォーカス持てるPictureBoxExを作りなされ
>>641 もしかして、プロパティにイベントはあるけどそのままじゃ使えない、ってことですかね?
>>642 ピクチャーボックス.Focus()ってのはありますよ
>>643 選択できない Windows フォーム コントロールの一覧を次に示します。これらのコントロールから派生したコントロールも、選択できません。
Panel
GroupBox
PictureBox
ProgressBar
Splitter
Label
LinkLabel (コントロール内にリンクが存在しない場合)
というわけでこれらはFocusをもてないんだ
詳しくはリンク先を参照
度々すみません
>>642 のリンク先読みました
フォーカスのメソッドはあっても、呼び出しても実行されないんですね…
結果キーダウンイベントもあるけど自分で呼び出さないと実行されない、と
勉強になりました
Focus()メソッドを呼んでやれば普通にキーイベントも発生はするようだね。 だからキーで操作したい人間を無視するとすれば、とりあえずClickイベントか何かで Focus()を呼んでやればとりあえずは解決するんじゃないの?
ピクチャーボックスくらい自分で作った方が早いんじゃないの?
今家に戻って、見てみました PictureBox にはKeyDownイベントありませんでした Formのイベントと間違えていたようです。ごめんなさい。 それでもKeyDownイベントが発生しなくてぐぐってたら Form の KeyPreview が False になってると動かない というのを見つけて、true にしたらやっと動きました!! ご迷惑おかけして申し訳ありませんでした
>>649 あるよw
ただデザイナのプロパティグリッド使ってハンドラを自動で作れないだけ。
コードエディタで自分で紐付けすればいい。
WindowsアプリにはXmlReaderみたいなコントロールが ないけどXMLからドロップダウンリストの 項目をバインドすることってできますか? WebのほうだとXmlReaderみたいなコントロールでできました。
なんでもかんでもコントロールと言うの禁止。旧VB上がり? つか「みたいな」ってなんだよ。 DataSet(or DataTable)のReadXmlでDataSet/DataTableに取り込めばいいんじゃない。
System.Xml.XmlReaderのことを言ってるなら使えるはずだけど。 単に using System.xml; が抜けてるだけとか。
デザイナからなんとかしたいと思ってるんだろ。
質問です。 ねとらじなどのmp3などのストリーミングデータを取得するには、どうしたらいいでしょうか?
mp3はストリーミングデータではない
まずJASRACに許可をもらいなさい
>>656 すいません。
しかし、中身はmp3みたいです。
>>657 聞く側なので許可はいらないはずですが・・・
開発環境が手元にないので試せませんが、HttpWebRequestとかでいけますか?
いけるかもしれないしいけないかもしれない。 サーバがどんなプロトコルを使ってどうデータを流してるかによる。
>>659 多分HTTPだと思います。
アドレスの頭にhttpがついてるので
661 :
651 :2007/08/23(木) 23:50:38
すみませんでした。 自宅PCにVSが入ってなかったので名前を思い出せませんでした。 インストールして確認してみたところXmlReaderじゃなくてXmlDataSourceでした。 Windowsアプリのほうにはこのコントロールが無いようですが 他のコントロールを使うかプログラムを書くことで XMLの要素をドロップダウンリストのアイテムに バインドは可能でしょうか? って意味でした。 DataSetかDataTableでできそうということですね。 サンクス。
SSLページにIDとパスワードをPOSTして、そこで取得したクッキーを基に 同一ドメイン・ホスト名内のSSLページにリファラを付けてGETして そのレスポンスヘッダに含まれるクッキー情報を取得したいと考えているのですが これを実現するにはどのようなキーワードで検索したら良いでしょうか。 今のところググった感じではHttpWebRequest/HttpWebResponceで HTTP通信での情報の送受信はできることとCookieContainerでクッキーを 扱えることまではわかったのですが、ヘッダ情報のセットと取得の方法で 躓いている状態です。 具体的には、上記のやり取りにより、会員用ログインページの情報を取得、 その認証情報を基に別のクライアントソフトを起動するためのランチャーを作りたいと考えています。 (そのクライアントソフトは毎回ウェブサイトの会員ページにログインしないと起動できない) C#の勉強も兼ねて作っているため、もしかしたら敷居が高すぎたのかもしれませんが・・・ どなたかご存知でしたらご教授よろしくお願いします。
>609 Reflector試したら普通に@が付いててがっかりしたよ。 もっと混沌としたソースが展開されるのを期待したのに…
C♯とC#の違いを教えて下さい。
片方で検索すると片方が引っかからない
667 :
デフォルトの名無しさん :2007/08/24(金) 14:58:23
ジェネリックデリゲートのAction<T>のTにvoidを指定する方法ってありますか? もしあれば教えてやってください。
ありません。
public delegate void Action(); こんなのを作って使いましょう
670 :
667 :2007/08/24(金) 15:44:43
FormsだけどMethodInvokerでいいじゃん
C# 3.0だとAction,Action<T>,Action<T1,T2>,Action<T1,T2,T3>,Action<T1,T2,T3,T4> まで標準であるから自分でこれと同じの作っとくといい Func<TResult>,Func<T1,TResult>,...,Func<T1,T2,T3,T4,TResult>も必須だぜ
スレッドを多重化して使う時 ・最大同時実行枚数を指定できるqueueによるスレッドの管理(スレッドプール) ・スレッドの進捗を通知するためのコールバックと、スレッドの終了時に実行されるコールバックがある(BackGroundWorker) を併せ持つスレッド管理をするにはどうしたらいいでしょうか。 作ろうとしてるものはListViewのレコード毎に1スレッド生成されるプログラムです。 つまるところよくあるダウンローダーです。 現状ListViewItem.Tagに実行状態を持たせたListViewを監視スレッドで監視し、 最大同時実行枚数を超えない範囲でBackGroundWorkerでダウンロードスレッドを起動しています。 が、もっとすっきりした管理方法があれば教えてください。
なんでUI側に管理させるわけ?
普通にクラス作って分けようよ。
>>674 Form上のコントロールに別スレッドの管理情報を乗せた事ですか?
それが自然で簡単と思ったからです。
こういうところは場数踏んでよりブラッシュアップしていきます。
>>675 すでにあるものをそのまま使ってできるだけ手を加えずにって思ってたんですけど
ThreadPool+BackgroundWorkerみたいな都合のいいものは無いですよね。
他のアプリケーション使っててありがちな処理かなと思ったので定石みたいなのが
あればと思ったのですが、本見て勉強してみます。
ありがとうございました。
ありがちな処理だ。 c#では知らないが、実習JAVAと言う本に同じ様なものが載っている。
C#だとデリゲート使うから、スレッド管理あまり使わないんだよ。 スレッド間同期とかね。
679 :
デフォルトの名無しさん :2007/08/25(土) 06:07:00
2008のβが取れたらすぐに移行しなきゃいけないの?
680 :
デフォルトの名無しさん :2007/08/25(土) 08:47:43
今まで2003で開発してたものを2005に移行するとバグるから嫌だ。 2005で開発したものを2008に移行するのも難しいかな。
2005->2008はランタイムはほとんど変わらなくて変わるのはライブラリだけだろ 今回は大丈夫じゃね
潜在バグが顕在化しただけだ 初めから行儀よく書かんのがいかん
VSTOってC#でも開発できるんだよね どこかに評価版ないかな・・・
自分のやり方が悪かったのか確認できなかったんだけど、HGlobalAllocしたのをFreeしたらすぐに メモリ使用量って減る? GCされるまで減らない? って、明らかに.NETスレ向けだよな orz
非マネージドなメモリをどうやってGCが関知するってんだ
>>685 だよなぁ・・・
どうなってるんだろこれ
メモリ使用量って何? どうなってるって何が?
ランタイムが一定領域メモリ確保するから、それを超えない限り気にすることはない。
メモリなんてのは架空の存在 やつらはただ電荷を保持しているだけにすぎない 記憶なんて夢のまた夢
まさかメモリが架空の存在だったとは
691 :
デフォルトの名無しさん :2007/08/26(日) 17:48:57
.Netframeworkにwinsockのような通信を行うようなライブラリってありますか? まだC#を勉強し始めたばかりなんですが、WindowsアプリでMSNメッセンジャーのようなアプリを作りたいと思っています。
ある
SOCKETクラス調べてみればいい。
>>693 Socketクラスですね。
ありがとうございました。
C#はまだ触り始めたばかりなのですが本当に面白いです。
今まではC言語の開発ばっかりやってたのですが、今後はC#に移行したいと思ってます。
>C言語の開発 すごい人がいたもんだな、おい。
本ならTCPネットワークプログラミングを読めば簡単な通信プログラミングならマスターできるようになる。 本格的に通信プログラミングできるようになりたいなら、英語のページや本を探さないと難しいけど。
車輪を再発明しちゃうの?
C言語の開発は分野が多すぎるから一概にはなんともいえない。 制御系からUnix-Cまであらゆる分野で使われている。
>>695 すみません。
C言語での開発という意味です。間違えました。
でも文章読めば分かる気が・・・
わかるよ からかっただけでしょ
C言語 の 開発 ≠ C言語での 開発
左は文脈によってどっちともとれるだろ
>>700 わざとだったんですね。
本当に勘違いされたのかと思いました。
Cからの移行者なら、C#の便利さが良くわかるはず、関数ポインタの代わりにデリゲートつかったり、 非同期スレッドのかわりにデリゲート使えたり、ソケット通信の制御に使える技術で かなりのコードがライブラリやC#の機能で省略できるから。
705 :
デフォルトの名無しさん :2007/08/26(日) 18:16:52
自作のUserControlのプロパティを Visual Studio 2005のプロパティービューの 「表示」カテゴリで表示させたいんだが、 [Category(L"表示")] ってやると言語が変わるとまずい気がする。 いい方法ある?
でもね。 cで10行でできたsocket通信が20行になったとぼやく人がいるんだよ。
そのソースを張ってもらわないと何も反論できない。
708 :
デフォルトの名無しさん :2007/08/26(日) 18:21:20
どうせエラー処理何もしてないんだろ
うん、そーっす
Cの10行でコールバックのエラー処理が出来るとは思えないしな。
>>705 L プリフィクスってなんだ
CategoryAttribute の解説みれ
基本的に定義済みカテゴリ名使えばOK
>>711 トンクス
本当はC++/CLIのコードだったんだが
Lを抜き忘れたw
.NETならこっちのほうがいいかなと思って。
>>706 今、ちょっとメタプログラミング的なことに興味あって、
F# の勉強してみてるんだけど・・・
行数少なく書けりゃいいってもんじゃねぇぞ。
F#ってC#3.0のラムダ式みたいな言語か?
関数型言語 Ocaml に、手続き型パラダイムと OO パラダイムを注入した感じ。 まあ、関数型言語がキモいってのよりも、 F# が言語的に汚いんだと思う。 MS リサーチで生まれて、それなりにファンもいるのに MS が本腰入れてプロモーションしないのもうなずける。
関数型言語じゃ金にならんからでしょ
SizeChangedとResizeってどう違うんだ
ぜんぜん違う。
>>715 関数型言語なのに手続き型パラダイムも持ってるってのがOCamlの特徴だぜ
「OCaml 副作用」でぐぐってみそ。
副作用を極限まで嫌うならHaskell。
VC#で、SELECT文のヒット件数を、COUNT関数を使わずに集計する方法ってありますか? SELET * FROM test1 みたいに取得して、5件ヒットしたデータがあった場合に 5という数字を取りたいのですが。。。 一件以上ヒットしたデータがあればデータを取得、そうでなければ別処理 みたいな処理をしたいのです。 よろしくお願いします。
コレクションの件数を取得すればいいじゃん。
それは反則です
どっちにしろDBと使うドライバ次第だろう。
724 :
720 :2007/08/27(月) 16:51:21
おとなしくcount(*)使って二回DBにアクセスすることにしました。 ありがとうございます。 今、スプラッシュウィンドウをがんばってVC#で作っているのですが、 なぜかJPEGやBMPを背景にすると、一瞬ノイズ?みたいなのが表示された後に 正しい画像が表示されます。 なぜこんなことになるのでしょうか・・・
バッファリングや塗りつぶし処理してないんじゃないか?
スプラッシュウィンドウくらいならGraphics取って自分で描けば
>>720 select *,count(*) from table1
ではあかんの?
集計関数を勉強してきなさい^^
いやだ
では、データベースプログラミングをやめなされ。
731 :
720 :2007/08/27(月) 18:55:14
>725 バッファリングとかわかってないです。。。。 何か解決の糸口がわかればうれしいので、よかったらおしえてください。
732 :
デフォルトの名無しさん :2007/08/27(月) 18:56:35
風邪薬じゃないでしょうかね?
Formでやったらダブルバッファリングしたってちらつくだろう
735 :
デフォルトの名無しさん :2007/08/27(月) 21:34:50
SELECT * FROM TST CURSOR.READ() { nCOUNT++ }
>>727 これならありだが
SELECT EMP.*,
(SELECT COUNT(*) FROM EMP) CNT
FROM EMP;
いまいち
>>720 の問題がわからない。
>5件ヒットしたデータがあった場合に 5という数字を取りたいのですが
と
>一件以上ヒットしたデータがあればデータを取得、そうでなければ別処理
>みたいな処理をしたいのです。
が、呼応してないような気がする。
適当だけど、SqlDataReader の hasRows使えないかな
738 :
デフォルトの名無しさん :2007/08/27(月) 21:43:54
>737 カウント取らなくても大体の関数にチェックあるんじゃね?
データベースプログラミングの場合は環境がわからないとなんとも言いがたいんだよな。 ADO.NETだろうけど。
はじめたばかりで、ここで聞いていいのかもわかりませんが 失礼させていただきます。 Microsoft Visual C# 2005 Express Editionをつかっています。 テンキーのそれぞれの数字キーをおしたときに 単にその回数をカウントするプログラムを作りたいのです。 たとえば 「7」「8」「9」 「4」「5」「6」 「1」「2」「3」 とあって「1」を何回押した、「2」を何回押した・・・・ とそれぞれのカウントを表示するというものです。 交通量を調べるとき(車種別)のカウントのようなものです。 このキーを押したら〜という、ショートカットではないですが 似たような処理
わっふるわっふる
宿題か?
? 新手の釣り?
744 :
デフォルトの名無しさん :2007/08/27(月) 23:52:30
VB.NETで組んだロジックと同様のロジックをC#で組んだ場合 C#でコンパイルしたexeの方が処理が早いんすか?
VB.NET と C# のバージョンが同時期のものならほとんど同じコードしかはかない。
どうせ速さが問題になるコードなんか書かないんだろ?
速さが問題になるソフト作らなければいけない場合はサーバーサイドならUnixだし、 クライアントサイドならネイティブで作らないといけないわな。
C#3.0になってから型がわかってる場合でもverを使うサンプル(not DB)をよく見るのですが、 なぜですか?
たとえばどこのサンプルですか
750 :
デフォルトの名無しさん :2007/08/28(火) 01:54:41
>>747 今まで、
「遅くてもいいですよ」
なんていわれたこと一度もありませんけど・・・
決して速くはないが、言うほど遅くもないと思うのだが。 具体的に遅い例を挙げてくれると有難いなぁ… オレの周りで遅いって言ってるヤツは大抵「アレ」な人たちばっかりで参考にならんw
>>752 コーヒーをキーボードに吹いちまったじゃね〜か!
まあ関数型言語に比べたら早いだろ 変なベンチマークで早いとか言い張ってる奴はいるけど 関数型だと副作用のあるコードが書けないから string Hoge(string[] strs){ string result = ""; foreach(string str in strs) result += str; return result; } こういうのは書けても string Hoge(string[] strs){ StringBuilder sb = new StringBuilder(); foreach(string str in strs) sb.Add(str); return sb.ToArray(); } こういうのが書けない。上と下には絶望的なまでの速度差がある。
756 :
755 :2007/08/28(火) 14:27:47
ごめん最後ToArrayじゃなくてToStringだった
別にC#自体は遅くないでしょ VBなんかと違って使ったら絶対に遅くなるような地雷機能もとくにないし
その手のはC#では作れないんじゃなかったっけ
>>740 なつやすみのしゅくだいはちゃんとじぶんでやろうね
どこに?
764 :
740 :2007/08/28(火) 16:47:08
すいません宿題じゃないんです ATMのキーを記憶するプログラムが組みたいです 早くおしえてくれ
対戦車ミサイルだと? 公安に通報しとくわ。
コレクション作ってインクリメントすればいいだけじゃねーのか?
現金自動預け払い機?
どうみても釣りにしか見えないんだが・・・ 本気だったらまずちゃんとした日本語で質問してくれ
非同期転送モード?
もうほっとけよ
771 :
デフォルトの名無しさん :2007/08/28(火) 19:02:48
何のことかとぐぐってみたら アンチタンクミサイルかよ。わかるかボケw
アホな父ちゃんもういらへん、ってcmもあったな
俺らにとっては、アホなSEもういらへんだけど
知らないうちになにやら成りすましが続出しているようで・・・
776 :
720 :2007/08/29(水) 10:42:38
>>738 ありがとう
hasrowでいけますよね・・・
ありがとうございます
List<string[]>に、二次元で下のようなデータを格納した場合、 aを検索して、bに対して処理したいのですが、どのような方法がありますか? string[]{a,b} string[]{c,d}
そのまま書けばいいと思うが・・・ foreach (string[] arr in list) { if (arr[0] == a) hoge(arr[1]); } もし要素数が多くて線形探索じゃ時間かかりすぎってのならリスト使うのがそもそも間違い。
Dictionary<string,string>でいいんじゃ
780 :
デフォルトの名無しさん :2007/08/29(水) 23:24:29
.NETのハッシュは止めとけ、遅くて使い物にならん
>>780 Capacity を適切に設定してないとかではなく?
>>781 俺も昔気づいたけどCapacityとかのせいじゃなく本当に遅いよ
自作したのに置き換えたらその部分が4倍くらい速くなった
あんまり速度気にせず手軽に組むなら.NETのでもいいだろうけどね
783 :
デフォルトの名無しさん :2007/08/30(木) 00:56:49
TreeViewのの特定のNodeにチェックボックスをつけたくないのですが どうすればいいのですか?
白で塗りつぶす
785 :
デフォルトの名無しさん :2007/08/30(木) 01:25:04
なるほどできましたw
>>782 > 自作したのに置き換えたら
って、なにを置き換えたの?IHashCodeProviderの実装?
いくら遅いっていったって、線形探索よりは速いよね?w
たしかに.NETのstringのHashは全文字調べるから stringのHashだけでO(N)操作なんだよな でもめちゃくちゃ長い文字列でも使わない限りそうひどいことにはならない Capacity大きめに入れないと発狂するほど遅くなるけど
日付(項目1)、予定(項目2) 18日 、デート 19日 、オナニー 上記のように項目1、2があるとして リストビューの詳細モードでやってみたのですがソートの機能って項目1のみにしか働きませんよね? ってことで自分で項目2のソートをしようと思っても tab_click{ }ってな感じで同じところに飛んでしまうのですが タブごとにわけられないんでしょうか? せっかくどちらも押せる様になってるので 座標から判別するのはもったいないと思うのですが
ColumnClick イベント
本当は18日もオナニーだからソートされない。
19日の間違いなww
なるほど。そこまでC#は見抜くのかすげー ColumnClickイベントですが押されたカラムの番号ってどっかに格納されてないんすか? これだとどこ押されても同じ処理で意味ないような
ColumnClickEventArgs.Column
WindowsFormで、チェックボックス付きの、複数カラムが表示できるコントロールを 使いたいのですが、そんなのは無いのでしょうか? 具体的には、VisualStudio2005で、普通、左にあるツールボックスを右クリックし、 「アイテムの選択」を選択したときにタブページに貼られているコントロールです。 これは、CheckedListBoxで出来るのでしょうか? それとも、DataGridに何か細工をするのでしょうか? あるいは、全く別のものなのでしょうか・・・。
ListView
16進数で示したコードを出力するときは、どうすればいいのでしょうか? カンマなら \x002c を出力したい場合など
798 :
788 :2007/08/30(木) 19:18:15
>>793 最初理解できなかったけどなんとかわかりました。ありがとう
801 :
デフォルトの名無しさん :2007/08/30(木) 22:18:44
>>799-800 たとえば、sw = StreamWriterで
sw.WriteLine("aaa" + ","); のところを
sw.WriteLine("aaa" + \x002c);のようにコードで出力したいのですが
802 :
謎の人 :2007/08/30(木) 22:24:21
KENT WEB さんの、スレッド式掲示板を作りたいのですが、 Perlへのパスというところで詰まっています まったくそれが何だかわかりません どうすればいいでしょうか 超初歩的なことすいません
803 :
801 :2007/08/30(木) 22:28:51
馬鹿な質問ですいませんでした。 そのまま'x\002c'で出来ました・・・・
>>803 C# 言語仕様の 2.4.4.5 リテラル文字列 あたり読んどくといいよ
805 :
デフォルトの名無しさん :2007/08/30(木) 22:52:55
フォーム1とフォーム2でクラスを共有したいんだけど方法教えてください!!
一方のフォームにプロパティを作ってもう一方のフォームから設定する
807 :
デフォルトの名無しさん :2007/08/30(木) 22:59:17
>>805 シングルトンってやり方がある、クラス自身の中にスタティックな自分自身のインスタンスを保持するやり方
デザインパターンの初歩だから調べて勉強してみるといいよ
よくわかってないうちにそれをやるとVB的なやり方が身に染み付いてしまいそう
"クラス"を共有するんだったら同じプロジェクトに入れとくだけだけどなー
810 :
デフォルトの名無しさん :2007/08/30(木) 23:06:01
やりたいのはForm1からForm2を呼び出して、From2のPropatyGridで操作した 結果(クラス)をForm1で利用したいというものです。 例えば、共有したいクラスをstaticにして利用するのは邪道なのでしょうか?
それはクラスじゃなくてオブジェクト そんなこともわからないうちにとりあえずstaticにしとけばいいやっていうのは良くないよ
812 :
デフォルトの名無しさん :2007/08/30(木) 23:09:33
それならForm1でクラスを生成して、Form2に渡してから加工した方がいいと思うが
たぶんForm2はプロパティグリッドを載せるためだけのウインドウなんだろ それを通してForm1上のコントロールか何か(またはForm1自身)のプロパティを弄ると もしこれで合ってるなら、Form2に加工対象を入れるプロパティを作るかな
814 :
810 :2007/08/30(木) 23:27:34
>>813 エスパーですか!!その通りです。
From2で弄ったPropetyGridの結果を得て、From1のコントロールを弄りたいのですが…。
>Form2に加工対象を入れるプロパティを作るかな
もう少し噛み砕いてお願いします。
Property
そんなことはMFC時代から既に実装されてるだろ。 C++を参考にしろよw
class Form2 { 略 public 加工対象の型 加工対象 { get { return かこうたいしょう; } set { かこうたいしょう = value; プロパティグリッドにかこうたいしょうをセット; } } private 加工対象の型 かこうたいしょう; } 大雑把に言えばこんなもんだ
818 :
810 :2007/08/30(木) 23:33:21
分かりました!!みなさんありがとうございました。
>>817 キミプロパティグリッドの基本的な用途や使い方を知らないんじゃないの?w
821 :
デフォルトの名無しさん :2007/08/30(木) 23:36:55
>>817 それ、おれもオモタww
普通はそれ専用のクラス作って、SelectedObjectに割り当てるんだよ
それが「加工対象」じゃねーの? >それ専用のクラス
純粋にプロパティグリッド乗せるだけのウインドウならObject型でいいんじゃないの
>782 4倍速くなるソースを晒してくれ。
ハッシュが遅いってのは文字列のGetHashCodeが遅いってこと?
>>825 Yes
だけどそんなに遅くない
文字数を増やすと文字数に比例する時間がかかるけどごくわずかといえばわずか
文字列が莫大な長さだとやばいかも
遅くて使いもんにならんらしいが…
はじめてみましたが クラスだの継承だの抽象なんとかだの全く理解できません これ理解するのって東大はいるのと同じくらい難しくありませんか? いや東大生でもこれ理解できねーんじゃねーかって気がする
専門学校卒業すれば十分理解できるレベル。
義務教育ちゃんと受けてれば大丈夫。
クラスの継承は基本的に使ってはいけない 抽象も難しいことを言っているわけではなく 同じメソッドを持ってるクラスを使いまわすとか 呼び出す必要のないものはprivateにして見せないとか そういう素朴なことだと考えて別に問題はない
・・・
初めはなんでもいいよ、もう 色々失敗したり破綻したりして今があるのだからこうすべき論はその後でいい。 そのかわりコードたくさん書け、たくさん読め、なんでもまず試せ、 んで時々立ち止まって考えろ。 意外に皆直感でああだこうだいってるからその感覚をまずはゲッツ
>826 Hashtableのキーにする文字列がそんなに長大になることってあるのか? キーにする文字列が普通に使う長さなら使いものにならないくらい遅くなるなんてことはないのでは?
835 :
デフォルトの名無しさん :2007/08/31(金) 09:20:02
一ついえるのはコボルとコボラーだけには関わるな あれに洗脳されると矯正が大変になる
>>834 ないと思う
>>814 partial class Form1 : Form
{
Form2 form2 = new Form2();
HogeClass hoge = new HogeClass()
public Form1()
{
form2.PropertyGrid.SelectObject = hoge;
form2.ShowDialog();
}
}
こんなんじゃないの
この度C#でActiveReportsを使うことになったのですが 使い方などが載っているサイトとかありますか? もしあるなら教えていただけませんか?
>>837 商用なんだから、製造元の解説読んで、それでもわからなかったら製造元に問い合わせれば?
もし荒れたらごめんなさい。
最近Cに興味が沸いている、VBさわり始めて数ヶ月の者です。
実際の所、C#とCは全く違うものなんでしょうか。
C#の方が理解しやすいのならVB→C#→Cなんて段階踏むのは
ありなのかなぁなんて考えてるんですが…。
>>808 なんかを見るとVBがとても悪いもののように思えますが
VBの知識は他言語に応用しにくいとかありますか?
そっくりだけどまったく違う
VBもC#もCも互いに応用しやすい方だと思うよ Cは使いこなすのが格別難しいけど考え方は似通ってる部分が多い まあ一個の言語極めたら他の言語に応用するのは難しくないから好きなもの極めたらいい
843 :
デフォルトの名無しさん :2007/08/31(金) 16:25:42
自作クラスに変数を書いて、その変数を呼出し元では値の取得のみしたい どうすればいいですか?
プロパティにしてgetだけ実装
846 :
デフォルトの名無しさん :2007/08/31(金) 16:51:49
マウスのドラッグによってスクロールするユーザーコントロールというものを実装しようとしています。 そこで、以下のようなコードを書きました。 スクロール自体はうまくいくのですが、ドラッグ開始時にスクロールバーが左上の位置に移動してしまいます。 どうすれば思い通りの実装を行えるでしょうか。 protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); isDraggable = true; dragMouseStart = new Point(e.X, e.Y); dragScrollStart = this.AutoScrollPosition; } protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); isDraggable = false; } protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if (!isDraggable) return; Point p = new Point( dragScrollStart.X - (e.X - dragMouseStart.X), dragScrollStart.Y - (e.Y - dragMouseStart.Y)); this.AutoScrollPosition = p; }
VB 簡単で使いやすいが他の言語への移行が難しい地雷言語 C# 簡単で使いやすくC言語への移行が簡単で高機能言語 C 簡単ではないがPCの基本的概念の理解ができ、C#への移行が簡単な標準的言語 C++ 習得が難しく扱いが難しいネイティブを使わなくてはならない場合のみ導入を検討するべき C→C#が一番将来的に高スキルを目指すには最適だと思われる。
>>842 >>848 やっぱり人によって意見は全然違うんですね。荒れなきゃいいですけど(汗
目的達成の為だけなら使いやすいのを使えばいいんでしょうけど
スキルアップの為にも取りあえず今VBで作っているソフトをC#に
移植するところからやってみて、その上で感触を確かめてみます。
有り難う御座いました。
言語なんてどれでもいっしょだろ 俺日本語からC#入ったけど全くだめだった
C#ってそんなすげ〜のか。俺もやってみっかな。
一番良いのは、C++ネイティブとC#.NETの使い分け。 サーバがLinuxやUnixなら他の言語も検討。
VBっつってもVB.NETとC#はほとんど同じものだぞ .NET以前のVBとC#はかなり違うけど
わかってない子にもそれなりに使えるように進化していく運命にある言語だけどな
856 :
デフォルトの名無しさん :2007/08/31(金) 18:47:46
C言語ファミリーって言える言語がC++,JAVA、C#、PHPとか大量にあるから それらの中から始めるのが吉。一つ覚えれば他の習得が比較的楽にできるよ VBの問題はVB自身じゃなくてVB6やCOBOLからの乗換え組みの質の悪さだと思う 新人で彼らに教わったら地獄だな、そんな時は自分で勉強すべし
CompactFrameworkがらみの質問なんですが、 Formを継承してShownイベントを追加しようとしてVisibleやShowメソッドを オーバーライドしてコードを追加したのですが、Application.Run()からだと これらのプロパティやメソッドは使ってないらしく、イベントが発生しません。 WndProc()をオーバーライドしようにもメソッド自体ないし、ReflectorでFrameworkの中を 覗いてみてもなぜかCompactの方はメソッドやプロパティのコードが空っぽ… どうしたらApplication.Run()から実行したときにイベントを発生させることが出来るでしょうか?
Activated イベントとフラグを併用するのがいいんじゃないかな
>>858 上手くいきました。
なんでWndProc()積んでないんだ… orz
ありがとうございました。
860 :
デフォルトの名無しさん :2007/08/31(金) 21:42:04
ここは回答もレベル低いなww
高レベルな回答を超期待
862 :
デフォルトの名無しさん :2007/08/31(金) 21:51:26
質問どうぞ
863 :
デフォルトの名無しさん :2007/08/31(金) 21:55:38
いや、すまん実はC#始めてまだ3週間なんだww
9月です BGMが変わってトマトが枯れました
質問です。 XmlSerializerでxmlを逆シリアライズしているときのパースエラーが起きたとき、 そこの要素を空にして再試行、または続行するにはやはりXmlSerializerに頼らず 自分でXmlをパースしなければならないのでしょうか?
フォーム上にコントロールが1000個くらいあって それを移動したりリサイズしたりするのにループ(for)でまわして10秒くらいかかる処理があるとして スレッドつかって一気に変更したら早くなるのかな?
はあ?
MDIのフォーム配置で試せば?
ある特定のメソッドのみから参照できるメンバ変数って定義できますか?
何がしたいのかわからん。
インスタンスの状態を保存するメンバ変数があって、 その変数を参照・設定するメソッドからのみその変数は参照できるようにして、 それ以外のメソッドからはメンバ変数にアクセスできないようにしたいということです。 class { private int member; public void A {...} public void B {...} } このようなクラスがあったとしたら、Aからはmemberにアクセスできるけど、 Bからはできないという風にしたいのです。
半パブリックだな。もしくはpubstaticとか
クラスの継承使えばどうだ?
874 :
873 :2007/09/01(土) 04:42:49
サブクラスからアクセス不可に設定すれば可能だと思うが。
>>872 検索してみたのですが、よく分かりませんでした。
よろしければ具体的なコード例を示していただけないでしょうか。
>>873 たしかにプライベートな抽象クラスを作ってそれを継承すればできそうですね。
ありがとうございます。
この機能を実現したいクラスはすでに他のクラスを継承していたので、
クラスを継承する方法は使えませんでした。
>>872 で挙げられている方法はどのようなものなのでしょうか。
連投申し訳ありません。
>>865 > XmlSerializerに頼らず
全部自前でパースするよりはシリアライズ対象のオブジェクトにIXmlSerializableを実装してあげるのが近道っぽい。
class Hoge{ class AClass { private int member; public void A(){...} } AClass aClass = new AClass(); public void A(){ aClass.A(); } } こんなんじゃだめなん
privateかどうかにそこまでこだわってもあまりメリットはないぜ 外側から見えないようにするのには価値があるけど 内側でアクセス権気にしてもコードがごちゃごちゃする上に 拡張しにくくなる 何が外側で何が内側なのかというのは難しい話だけどな
匿名メソッド使えば?w
privateなプロパティにする。 フィールドは、簡単にはアクセスできないようアラビア語あたりの文字を含めるw
基本的なことを言うと、publicメンバはインターフェースとして定義することができるメンバにする。 クラス外から見えるということはクラス外に対するコンタクトを標準化する必要性が出てくる可能性があるから インターフェースになるわけだ。
突然何を言い出すんだ?
885 :
デフォルトの名無しさん :2007/09/01(土) 10:20:31
class A:B { } っていう元のクラスに対して class C:B{ private vv; public hoge(){ } } ってクラスを作って、元のやつを class A:C{ } にすればいいだけじゃね
クラス外から見える=interfaceになる可能性がある というのは違う 単にクラスが長くて見通しが悪いから分離しただけだったりもする 大体のクラスは抽象化の単位じゃなく実装のしやすさで分かれる ライブラリのクラスであればpublicクラスのpublicメンバであれば interfaceになることを想定する必要が確実にあるということは言えると思う 抽象化の単位ではpublicメンバはinterfaceである必要があるが 抽象化の内側の実装のレベルではprivateを多用してもしょうがない むしろやりにくくなる
887 :
元ルート :2007/09/01(土) 11:43:04
/::::)(:::)(:::::::::::)(::::::^::::::::::\ (::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::\ /::::::::::/ノ::::::::ノ::::::::ヽ:人::::::::::ヽ:::::::::::::::) (::::::::::/ ):::ノ::::ノ ) ソ ヾ::::::::::::丶::::ヽ (:::::::::/ 彡 ノ ノ :: 彡:/)) ::::::::::) (::::::::::/彡彡彡彡彡 ミミミミミミミ :::::::::::) ( :::::::// ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ |:::::::::) | =ロ -=・=- ‖ ‖ -=・=- ロ=== |:/ ‖ / /ノ ヽ \ ‖ ヽ|ヽ _________ |/ ヽ`======/ .⌒ ` ========ノ. ..| | / .( .(● ●) )ノ / ( ・ / :::::l l::: ::: \ .) <だってアンカーがうてないんだもん ( // ̄ ̄ ̄ ̄\:\. .) \ .\ : )::::|.  ̄ ̄ ̄ ̄ |::: ::::(: /.. \_________ \ ::: :::::::::\____/ :::::::::: / ヽ ヽ:::: _- ::::: ⌒:: :::::::: -_ ノ \丶\_::_:::::_:::: :::::_/:::: /
お前はもう、しんでいる。
889 :
元ルート :2007/09/01(土) 12:00:12
/::::)(:::)(:::::::::::)(::::::^::::::::::\ (::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::\ /::::::::::/ノ::::::::ノ::::::::ヽ:人::::::::::ヽ:::::::::::::::) (::::::::::/ ):::ノ::::ノ ) ソ ヾ::::::::::::丶::::ヽ (:::::::::/ 彡 ノ ノ :: 彡:/)) ::::::::::) (::::::::::/彡彡彡彡彡 ミミミミミミミ :::::::::::) ( :::::::// ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ |:::::::::) | =ロ -=・=- ‖ ‖ -=・=- ロ=== |:/ ‖ / /ノ ヽ \ ‖ ヽ|ヽ _________ |/ ヽ`======/ .⌒ ` ========ノ. ..| | / .( .(● ●) )ノ / ( ・ / :::::l l::: ::: \ .) <何回やってもダメだよ〜 ( // ̄ ̄ ̄ ̄\:\. .) \ .\ : )::::|.  ̄ ̄ ̄ ̄ |::: ::::(: /.. \_________ \ ::: :::::::::\____/ :::::::::: / ヽ ヽ:::: _- ::::: ⌒:: :::::::: -_ ノ \丶\_::_:::::_:::: :::::_/:::: /
890 :
元ルート :2007/09/01(土) 12:04:58
マンコはちょっとくらいくさいほうが良いよね?
891 :
元ルート :2007/09/01(土) 12:07:21
ぉまんこの匂いを嗅ぐと熟睡できる。 シャワーを浴びてないあの匂いは最高。
おかしい・・・まだ夏休みが続いているのか
delegate void MyMethod(); private MyMethod _a; public void A() { if (_a == null) { int member = 0; _a = delegate { /*ここで本当の処理をする*/member++; }; } else { _a(); } }
>>869 そこだけVBで作るとかどう?w
VB.NETならStaticで宣言したローカル変数がそういう、
「寿命がフィールドと同じで、アクセスのスコープがローカル変数と同じ」
という仕様になるよ。
まだ、9月1日が土曜日だから夏休み続いてるんじゃないの?
896 :
デフォルトの名無しさん :2007/09/01(土) 12:49:56
俺たちの夏休みは終わらない 完
897 :
元ルート :2007/09/01(土) 13:06:11
オリシーは、本当のマンコ臭は、味わえない。 微香料付きオリシーが大半だからな。 使用済みオリシーは、何度がゲットし匂ったが、微香料に押されて気味。 やはり、純マンコ臭を間接的にかぐには、使用済みパンティか、おもらしナプだな。
つまらん。 どうせガキ臭いこと書くならせめて笑えることを書けよ。 しかし、こういう馬鹿が表れるとだいたい、「夏休み」とか子供のせいにされるが、 俺の感ではこういう奴は「ガキ臭い」オッサンであって本当のガキではないと思うね。 こんな低能と同じレベルに貶めるのでは子供に失礼だよ。
899 :
元ルート :2007/09/01(土) 13:32:52
監督 元ルート 脚本 元ルート 主演 元ルート 脇役A レコード屋 脇役B ちんけなオトコ 脇役C オーム返し 脇役D 漫画道場 脇役E あと誰だっけ? エキストラ 役5名 ここはそんな世界。 あははははははは
なにがあってもC#初心者の質問に答えるという使命は忘れてはいけない
えらい!マイクロソフトから金もらえ
>>871 何でそんなことが必要なんだ?
理由書いてくれ。
まさかローカル変数とメンバ変数同じ名前にしていて… とか馬鹿な理由じゃないよな?
858みたいな状況とか、フィールドに置かれてもって感じはするよな C の static 変数で表現できるならそっちのほうがすっきりする
>>902 書かなくても分かるだろ普通w
「隠蔽」という概念の拡張に過ぎないじゃないか。
要するに君は隠蔽の意義が理解できてないんだろう。
906 :
デフォルトの名無しさん :2007/09/01(土) 19:20:13
あたりまえ どっからでもアクセスできた方がいいだろ スタジアムだってアクセスの良さを確保するのにどんだけ苦労することか したくないときはアクセスしなきゃいいだけだし
隠蔽する必要があるのか? 誰から隠蔽するのか? 何から隠蔽するのか?
同じクラス内で隠蔽したいなんてバカな考えはやめろ クラスの設計が間違ってるんだからそっちを見直せ
なるほど、ならローカル変数もブロックスコープの変数も一切禁止すべきだなw
うーん…方向が逆じゃないか?
馬鹿に突っ込みいれて喜んでんじゃねーよ。 お前ら裸の大将見て感動しろ。
913 :
デフォルトの名無しさん :2007/09/01(土) 20:56:02
partialクラスを別々の人間が作るとかならありうるかも知れないけど・・・
ぼ、ぼくはおにぎりがす、好きなんだな
おむすび、すきすきす〜
916 :
デフォルトの名無しさん :2007/09/01(土) 21:19:17
VS2003とVS2005って1つのマシンにインストール可能? 同じマシンに2つ入ってても問題なく動作する?
,: ' " `丶 , :´ . `、 . . ' . ; .丶 . ,:´ . ' ' `、 ,' . 簍J鶸鑼 ; `. ,, -'''" . . 駲刪櫑躪 . ' ';゛`'丶.、....... . '´ ! . 膚順棚斷. ' , ;::::::::::::...`.::::::::.... i ヽ、..._,.__魎鬱蹠撫.,,__,.,..ノ.::::::::: !::::::::::::... . ヽ、 ,: '.::::::::: `=ー--、....,,,,,______,,,,,... --‐=''´..:::::: ``" '' 'ー───‐―‐' ''' "´
Alt-Tabの一覧に出ないようなウインドウってどうやって作ればいいんでしょう? ShowInTaskBarをfalseにしてもこの一覧には出ちゃうみたいなんですが。
920 :
919 :2007/09/02(日) 01:02:50
自己解決。 Ownerに適当なフォームを設定したらうまくいきました。
その適当なフォームが閉じられたら一緒に閉じられちゃうけどそれでいいのかな
922 :
元ルート :2007/09/02(日) 09:57:40
もう来る気はなかったが最後に2チャンネル帝国に敬意と問題提起をしておきたい。 ジャパンビバレッジってどうよ?PART2 2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50 [PR]話し相手はここにいるかも【ASKS?】[PR]. ジャパンビバレッジってどうよ!?pret2. 1 :名無しさん@引く手あまた:2007/06/17( 日) 00:57:34 ID:FCmmekzq0: ボーナス出て退職者続出の予想もある中、 ... って書いてある中で「話し相手がいるかも?」って書き直しましたね〜 私はね2ちゃんねる介入がここのスレが初めてでもう2ちゃんねるに来ることはないの。 なぜだかわかりますか?そう、弱者しかここには存在しない。 あなたのライバル他社の掲示板にあたるかもしてないが、そこにはレベル的に高い人間が存在しているからね。 そこでは戦争なんてしなくていいの。ただ言論闘争のみ。 システムの変更を早急にしなくてはあなたの帝国の崩壊は近い将来必ず来る。 なぜなら、あなたは裁判に負けて賠償金払ってないですよね。 その行為は絶対的権力の日本国を敵にすることになる。このスレはプロローグにしか過ぎないの。 私はね、ここのレスがもっと荒れてきたら、最終兵器「核」を一個落とすところでしたよ。 それによってあなたの帝国は商品価値をかなり下げるとこでした。 そこまではもう致しません。ご安心を。 改善策は名無しをできないシステムの構築とIDをころころ変えないこと。 その2つで2チャンネルは継続しますよ、きっと。 もうこないからご安心を。さいなら〜。
コピペ君って馬鹿だな、まで読んだ。
924 :
919 :2007/09/02(日) 14:00:55
C#で画像の結合って出来ます?
画像の結合って表現初めて聞いたけど、語感から想像される意味の通りなら Bitmapに描画して保存するだけじゃないの?
927 :
デフォルトの名無しさん :2007/09/02(日) 14:46:54
言葉足らずでした。 二つないし四つの画像を結合して一つの画像にしたいのです。 オークションに出品するときなどに使う予定です。
>>927 やれはするがそれは画像ツールを使って編集したほうがが早いのと思う。
C#でやるなら4倍の面性を持つBitmapを作って、それに4つの画像を座標指定で描く。
最後にBitmapからjpegなど形式を指定して保存する。
>>928 ありがとうございます。
その手順を参考に作ってみます。
*高性能なフリーソフトはたくさんありますが
自分で作ると言うことに意義があるので・・。^^ゝ
930 :
デフォルトの名無しさん :2007/09/02(日) 15:36:23
すみません、教えてください。 フォームの中にPanelAがあり、PanelAはEnable = falseです。 PanelAの中にRadioButton1とRadioButton2があります。 Mainスレッドとは別のスレッドで Invokeで、ShowDialogします。 その時は、RadioButton1と2はEnable=falseの状態できちんと表示されます。 その後に、あるイベントが上がると、PanelAをEnable = trueにした後に ShowDialogすると、RadioButton1だけ消えている場合があります。消えていない場合もあります。 インスペクタでRadioButton1のVisibleの値を見ると、trueになっています。 その状態で、Refreshかけても、Updateかけても表示は変わりません。 しかし、RadioButtonBにチェックを入れるとRadioButtonAが表示されます。 なぜRadioButtonAだけ表示されないのでしょうか・・・? 解決方法をご教授いただけると幸いです、よろしくお願いいたします。
931 :
デフォルトの名無しさん :2007/09/02(日) 15:38:47
すみません、追記です。 >その時は、RadioButton1と2はEnable=falseの状態できちんと表示されます。 の後に、その後、いったんフォームを閉じます。 を追記です。
>>930 人に質問する前に基本的なことをちゃんとやれよ。
まず、問題の現象が起きる必要条件をきちんと絞り込むこと。
話はそれからでしょ。
933 :
デフォルトの名無しさん :2007/09/02(日) 16:32:19
>>932 すみません、問題の現象が起きる必要条件を書きます。
一連の流れはメインスレッドとは別のスレッド上で行われます。
初期状態は、
RadioButtomを二つ持ったPanelがフォームにあり、
PanelのEnableはfalseで、フォームはまだ開いてません。
上記の状態から以下の処理を行います。
Invokeを使って、フォームをShowDialog↓
開いたフォームを閉じる
↓
PanelのEnableをtrueに設定
↓
再びInvokeを使って、フォームをShowDialog
↓
フォームは開くが、二つあるRadioButtomがひとつしか表示されない。
という流れで現象が発生します。
開発環境はVS2003で、
動作環境はWinXP SP2/.net framework1.1です。
宜しくお願いいたします。
ダイアログのインスタンス使い回しはやめといたほうがいい。 Enabled の設定も別スレからなら Invoke が必要。
RadioButton
936 :
デフォルトの名無しさん :2007/09/02(日) 21:17:08
以下の問題は仕様によるものなのかに悩まされています 問題 FormのTransparencyKeyを適当な色に設定してリザイズを継続して行うと Formの再描画がされなくなるor再描画が数秒単位でしかされない 再描画されなくなる直前のFormが表示されたままですが FormのSizeは正常に変更されています。 FormはWindowsApplication作成時のデフォルトFormです。 解決方法をご存知の方がいらっしゃいましたらご教授お願いしたいです。 環境 2台のPC(Vista・XP 共にVS2005/.NET 3.0)共に同様の現象が発生
937 :
デフォルトの名無しさん :2007/09/02(日) 21:32:52
938 :
デフォルトの名無しさん :2007/09/03(月) 00:24:51
>>936 試したがこっちでもなるな
仕様なんじゃね?わからんけど
適当にクラスを作ってみてリストに入れてみたんですが そのメンバにアクセスするのってどうやるんですか? List<object> list = new List<object>(); list.Add(test); リストにテストのオブジェクト追加 list[0].title="ABC" 失敗。テストのメンバにアクセスしているつもり よくわからんからオブジェクトの配列でやるかと思ったけどそれもだめでした
ジェネリックについてググってください。
勇気を出して聞いてみよう♪沢井製薬って出てきました
942 :
デフォルトの名無しさん :2007/09/03(月) 02:27:56
>>934 サイズ変更する場合一時的にKeyを無効にするしかないんじゃないかな
>>941 答えが見つかってよかったね
もう来ないでね
943 :
939 :2007/09/03(月) 02:28:44
単純にストリング型にしてメンバ入れとけってことですよね? そうするとメンバ分のリスト必要になってありがたみが減ってしまう
>>943 違う・・・
objectをそのメンバをもつクラスにしろって話でしょ。
あと型とかキャストについてもぐぐっとけ
947 :
939 :2007/09/03(月) 03:09:06
あ、ほんとだ。 クラスの型ができてる・・・ オブジェクト指向ムズカシス ありがとうございました
ジェネリクスってオブジェクト指向なのか
949 :
デフォルトの名無しさん :2007/09/03(月) 09:10:50
まあクラスがなきゃジェネリクスもあり得ないからな
どうだろ? 型総称はクラスとは無関係だと思うけど
951 :
デフォルトの名無しさん :2007/09/03(月) 10:14:22
質問があります。環境はMS VS 2003 C#です。 Windowsのヘルプだとよくありますが、Ctrl+Cで文字をコピーできるラベルを 作りたいのですが、どうしたら良いでしょうか? おながいします。
キー入力を見てClipboardにラベルの文字をセットしたら?
953 :
936 :2007/09/03(月) 10:28:31
レスありがとうございました。 仕様でしたか。ググってもなかなか資料が出てこなくて困っていましたが 一時的にTransparencyKeyを変更するほか仕方がないみたいですね。
954 :
951 :2007/09/03(月) 10:44:45
>>952 ラベル文字全体のコピーなら良いのですが、部分的に選択して、選択したところだけを
クリップボードにコピーしたいのですが、方法はあるでしょうか?
ラベルじゃなくてテキストボックスを使う ReadOnly : true BorderStyle : None
TextBoxをラベルぽく表示してやれよ。
957 :
951 :2007/09/03(月) 11:41:28
>>955-956 できました。ありがとうございます!
以下まとめです。
「コピペできるラベルの作り方」
コンポーネント
TextBox
プロパティ(変更点のみ)
ReadOnly : True
BorderStyle : None
Multiline : True
このスレではVB厨以下とか言っては言ってはダメなんだっけw
そもそも初心者スレなんだからスキルは別にして、好感の持てる質問者だろ 簡単だけど目立つキーワードがなくて自分で調べにくいテーマだし
951の善意は否定しないよ。 まあ確かにこういう善意を萎縮させないためには、多少「取るに足りないのでは?」 と思う内容でもいちいち突っ込まない寛容さが重要かもしれんとは思う。
ここ見てるとVB.NETの初心者スレが欲しいと思う今日この頃。 スレの存在云々で決めたくないけどVB.net質問スレの酷さに C#に移行したくなる。
たてればいいじゃない VB.NET初心者スレとして機能しなくてもゴキブリホイホイにはなるかもよ
このスレは自分では得点を決めないけど 前線で潰れ役になるフォワードに似ている
有り難う御座いました。
ユーザーコントロールを作っているのですが メソッドの中にメソッドが入れ子になってるような?やつはどうやったら作れますか? たとえばListboxにはItemsってのがあってその下にAddとかClearがありますが 自作のユーザーコントロールでも同じようなことはできますか?
定義みてましょうね。 プロパティもべんきょうしましょうね。
まず基本的なことから。 入れ子になってるのはメソッドではなくクラス Listboxの場合は public class Listbox { public ObjectCollection { public void Add(..) { } } public ObjectCollection Items { get{} } } となっている。 publicとかかprivateとかはクラスの使用形態で考える。
Itemsは確かListBoxItemsというクラスじゃなかったかな そういったAddとかClearとかのメソッドを持ってるクラスを プロパティで返せばいいだけだよ
まちがえた public class Listbox { public class ObjectCollection { public void Add(..) { } } public ObjectCollection Items { get{} } }
補足すると別にクラスは入れ子にする必要はないよ 要はプロパティで別のクラスのオブジェクトを返せばいいというだけ。
>>971 アリガトン
クラスの中にクラスをネストできるなんて知らんかったです
買ってきた入門書にはのってなかったでつ
ネストされたほうの子?のほうのクラスから親クラスで宣言した変数が参照できないのでつね
インスタンスフィールドなら親のインスタンス渡せ 静的フィールドならいくらでも
975 :
デフォルトの名無しさん :2007/09/03(月) 22:44:19
にしてもここの住民は大した知識もないのな 直近200レスを見てもまともな答えできてないし わからなかったら煽りレスいれたり仕様で終わらせたりと見ていて呆れるわ
何を今更
何か質問しなさい なんでも答えてあげよう
僕が道程なのはなぜですか
979 :
デフォルトの名無しさん :2007/09/03(月) 22:54:23
C#なんかで作ったexeをサーバに突っ込んでクライアントで起動させる場合 コントロールパネルのMicrosoft .NET Framework 2.0 構成のランタイム セキュリティ ポリシー のイントラネットのスライダーバーを目一杯上に上げれば大抵動くんだけど、サーバー変えたら 動かない、サーバーのファイル属性はフルアクセス、なんかそのところ参考になるサイトあったら 教えてください
何のためのコードアクセスセキュリティだよっ
何のためのコードアクセスセキュリティなの?
982 :
デフォルトの名無しさん :2007/09/03(月) 23:55:28
すんませんだから初心者なのれす
C#2005EEを使っているんですけど例えば String a = "h"; を String a = 1; と書き換えてもビルドするまでエラー一覧ウインドウにエラーが表示されないのですが vbのように即座にエラーを表示させることはできますか?
できないです。 諦めた方がよいでしょう
オプションで変えれなかったか?
986 :
デフォルトの名無しさん :2007/09/04(火) 00:35:09
ここの住人はピザデブが多いんですか?
>>974 アリガトン
ネストする必要がないという意味がわからなかったけど
親の参照が渡せるならクラスそのものがどこにいてもいいということで
ようやく理解することができますた
発行してインストーラ作ったんですが、インストール完了後すぐにプログラムが起動してしまいますが この自動起動は抑止できますか?
990 :
983 :2007/09/04(火) 00:49:13
Visual C#2005でセルをButtonとして表示するGUIのライフゲームを 作ろうとしているのですがButton描画のもっさりを改善する方法は無いでしょうか。 サンプルとしてデザイナからButtonを100個配置したFormをDelphiとC#で それぞれ作り、ウィンドウの最小化、復元をした時の描画速度を比べたのですが Delphiは一瞬なのに対しC#では左上から右下に向かってButtonが 描画されていくのを目で認識できる位の速度です。
992 :
デフォルトの名無しさん :2007/09/04(火) 02:26:30
なんとかデザインサスペンドはした?
Buttonはやめとけ。 素直に自前で直接描画。 あるいはWPF。
>>992 動的に配置する方ではSuspendLayout、PerformLayoutしてみましたが芳しく無かったです。
>>993 簡単にできそうなのでButtonでやってみたのですが手抜きしないでやってみます。
どうもありがとうございました。
Formsは地雷、DelphiかWPFにした方が良い。
Visual C# 2005で変数を計算で指定したいのですが、どのように行えばいいでしょうか? ググってみようにも、なんとググっていいのかが…。。。 具体的には下記のような下線の部分を計算したいです。 int[] intData = int[5,4,3]; int intData1; int intData2; int intData3; for(int i = 0;i < 10;i++){ [intData + i.ToString()] = intData[i]; } ~~~~~~~~~~~~~~~~~~~~~~ よろしくお願いします。
997 :
デフォルトの名無しさん :2007/09/04(火) 10:55:04
なんかすごい質問きた
>>996 何がしたいか伝わってないから、欲しい結果を書いてごらん。
999 :
デフォルトの名無しさん :2007/09/04(火) 11:12:47
変数名+1という式を実行したいのです すなわちなぜ数字の1と文字列型の1が存在し区別する必要があるのかということです? すごく面倒です
1000いただきじゃーい
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。