ふらっとC#,C♯,C#(初心者用) Part42
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980 を踏んだ人は新スレを建てて下さい。
>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part41
http://pc12.2ch.net/test/read.cgi/tech/1244259018/
乙です
乙
でも、継承で組みあがってないと資産にならないし 拡張も難しくなるし。継承で組みあがってはじめてオブジェクト指向になるんじゃないんですか? 継承の作りどころがわからないとプログラミングがはじまってもいないと思うのですが、この壁を超えるにはどうすればいいんでしょうか
継承が必要なときはね。ピーンとくるよ、
7 :
デフォルトの名無しさん :2009/06/24(水) 19:26:03
クラスの継承は使わずに、インターフェイスの継承だけで試しにやってみたらいいんじゃない 正しい使い方に矯正されるよ
インターフェイスでたいていは間に合う。 最近のオブジェクト指向は継承より委譲と包含がトレンド。 そのうち風向きがまた変わるかもしれないけどね。
違うよ。多態使ってはじめてオブジェクト指向のメリットがあるんだよ。 継承だけならオブジェクト指向以前の構造化プログラミングで十分。
これってアレ?全力で間違ったことを言うとレスが必ず付くってやつ?
前スレの実験だけど、1億回ループで101ms、ifだけを3倍にしたら171ms、 forの処理時間を差し引くとifが1億回で35msという結果になった。 使用したマシンはPen4/3GHzなんで、計算すると1回あたりほぼ1クロック。 データシート通りの結果になった。
多胎はメリットの一つだろうが=じゃねえだろ
コードの再利用やカプセル化なんてオブジェクト指向でなくてもきるからな。
Windowsのサービスパックと.Netがインストールされているかどうかを プログラムから調べる方法を教えてください。 検索しても「システムのプロパティを開いて」といった、人間の目で 確認する方法しかヒットしません。 今作っているアプリが.Net3.5を使っているのですが、.Netの入っていない マシンで実行すると無反応になってしまい困っています。
最初にシステムの状態をチェックして、 「.Netをインストールしてください」みたいなダイアログを出したいのです。
17 :
デフォルトの名無しさん :2009/06/24(水) 21:05:34
C#でCOM参照を可能にしたDLLを作ってExcel2002の参照に追加 関数を呼び出すと必ず実行時エラーになる VC#2008で作ったCOMDLLはOfficeで使えないのかな? ググっても解決法が見つからないっす
>>16 インストーラーは使ってないです。
導入はexe単体をコピーするだけなんです。
>>17 使用者があんまり詳しくないので、できれば関連ファイルは
増やしたくないのですが。
ほかに方法がなければ、いずれかを検討してみます。
19 :
14 :2009/06/24(水) 21:12:26
とりあえず、mainの先頭にMessageBoxを入れたら表示されたので、 .Netがなくてもとりあえずプログラムはスタートはしているようです。
20 :
14 :2009/06/24(水) 21:14:25
ふと思いついたのですが、 アプリケーションの追加と削除の中の一覧を調べる みたいな方法は避けた方がいいでしょうか?
詳しくないなら、なおさらインストーラー作ったらいいじゃない ランタイムなかったらそれも自動でインストールしてくれるし
23 :
14 :2009/06/24(水) 21:23:05
>>22 exeのアイコンをダブルクリックすると、一瞬砂時計になるだけで
エラーも何も出ずに、すぐに終了してしまいます。
24 :
17 :2009/06/24(水) 21:24:03
>>22 実行時エラー '-2146234105(80131107)'
オートメーションエラーです。
だそうです。
Excel2002ってアセンブリ読めるの?
27 :
17 :2009/06/24(水) 21:53:06
色々調べた結果、OfficeのバージョンとVSのバージョンによって 参照できたり出来なかったりするみたいですね
>>14 レジストリ見れば.NETがインストールされてるか分かる。どこ見ればいいかはググれ
listBoxの最後の項目を抜き出すには、どのようにしたらよいですか? listBoxの項目から、ランダムにひとつを抜き出すには、どのようにしたらよいですか?
一つ目は抜き出せる?
ListBox.Items.Countに項目数が入ってるだろ つまり
IndexOutOfBoundExceptionが出ちゃいます
>>33 最後の値を取りたいんなら-1しないとダメだぞ
1個目はできます。 listBox.SetSelected(1, true); string s = listBox.Text; MessageBox.Show(s); 最後の項目ということで、 listBox.SetSelected(ListBox.Items.Count, true); としたら、 静的でないフィールド、メソッド、またはプロパティ 'System.Windows.Forms.ListBox.Items.get' で、オブジェクト参照が必要です となってます。
int[] array = new int[3]; のarray.Lengthは3だよな このときarray[x]のxの取り得る範囲は?
1個目はlistBox.SetSelected(0, true); です。 x 012です。
テキストBOXに textbox1.Text = "test\r\n" と書き込んだ後に、表示しているテキストに 追加して文字列を入力したいのですが 消えてしまって、前の状態が保持できません。
>>38 arrayをlistBox.Itemsに、LengthをCountに置き換えれば後は分かるな?
>>39 AppendText
>>40 ありがとうございました。
できました^^
42 :
14 :2009/06/25(木) 00:09:41
>>28-29 ありがとうございます。
こちらでも、プログラムの追加と削除について調べているうちに、
レジストリから.Netの情報が直接取れそうだとわかったところでした。
ありがとうございました。 listBoxできました。
これをもっと簡略化して書くならどうしますか? if(File.Exists(file_name)) { FileInfo fi = new FileInfo(file_name); if (fi.Extension == ".txt") return true; else return false; }
三項演算子でも使って書けよ
えええええええええええ return str=="aaa" ? true : false; みたいなの
はい実例 return str=="aaa" ? true : false;
return fi.Extension == ".txt";
>>50 これだとファイルが存在しない場合エラーでますよ
>>44 これを簡略化して書いてほしんです
誰もできませんか?
できますよ
やです
>>51 そこは省略したんだけど、存在しない場合はreturnせずに続行でいいのか?
>>55 テンプレ読んでください
同意できないならレスしないでください
邪魔なだけですから
>>56 テキストファイルが存在するかどうかのチェックをするメソッド内の文なんです
最終的にboolを返すようにしてほしんですが
少しは自分で考えろよ
>>59 考えてここまで短くしました
先輩方ならもっと短く出来るのかなと思いましたが
どうやら無理っぽいですかね?
>>1 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
あと、これなんで、嫌なら来ないでください
私みたいな初心者煽ってても時間が勿体無いだけですよ
優しいの定義は人それぞれだしな。 return File.Exists(file_name) && file_name.EndsWith(".txt"); でいいな。
何を言おうが所詮2ちゃん。 煽られるのが嫌なら、MSDN フォーラムでも行けよw
>>62 すごいです。一行でできるなんて驚きです
この場合は三項演算子いらないんですね?
やっぱりできる人は口先だけじゃないですね
三項演算子とか言ってた人は結局無能の荒しと証明できたということですね
ありがとうございました。
どういたしまして。
>>63 2chだから許されるのと、貴方に良識がないのとは別問題ですよwww
バカはどこ言ってもバカ
できるひとはどこ言ってもできるんですよねー
こういう常識的なこともわからないで子供じみたことしか言えないなんて
無能のバカはどうしようもないですねw
>>66 2chだから許されるのと、貴方に良識がないのとは別問題ですよwww
バカはどこ言ってもバカ
できるひとはどこ言ってもできるんですよねー
こういう常識的なこともわからないで子供じみたことしか言えないなんて
無能のバカはどうしようもないですねw
コピペした時点で敗北宣言ととりました わたしの勝ちですねw バカを論破するなんて容易いわw
煽られてんのにわざわざ答えを書いてやるって・・・。 おまえらってほんと優しいのなw
論破()笑
朝っぱらから暇なんだな そろそろ出勤しろ
>>62 の方なら私の1000行のプログラムも100行ぐらいで書いちゃうんだろうな
しかもわかりやすく・・・・本当に実力のあるひとは違いますね
実力のある人は既に書かれたものを探します 一番良いのは何も作らないこと By CodeComplete
>>73 これってほんと真理ですよねー
自分は探すのが下手なんだなー
そりゃ無能でしょうからね
みんな優しく答えてくれてるじゃないか。
次スレの
>>1 には
回答者を煽るような質問者は相手をしないようにしてください。
って追加しておくべきなんじゃね?
なんとか.TXTってファイル名で試して見ろやw
どっちかというと
バカは答えないように!
って加えたほうが適切だろ。
>>47 とか
>>49 って
boolを返却するって事自体が理解できてないノリじゃん?
47って?から後ろ要らなくね?
>>79 の後半2行が云わんとしてるのは、まさにその事!
;は要るよ
あげ足取りは要らないけどね
ソースの行数が少ないのとプログラマとして優秀なのは無関係だよなー
>>47 >>49 は if ((a > b) == true) とか書いちゃう人なんだろう。
>>44 は質問者だから問題なし。
自分の書いたコードをちゃんと提示してるのだから立派なものだよ。
自己弁護乙
そうだね^^
RegexでURLを取り出すためにサイトから正規表現コピペしてきたんだけどURLを拾えなかった 正規表現のエンジンってC#用とかJava用とかで別物なの?
その正規表現を書け
(https?:¥/¥/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)
ネットに転がってるのはperl系のが多いね。 C#やJavaはposix系だったかな。 他にもunix系、GNU系とかいろいろある。
\/\/ これじゃないの
よく悩むんですが フォーム上のボタンが押されるとファイルが読み込まれるというプログラムの場合 Formクラス上でファイルの有無をチェックすべきか FileStreamなどを使ってファイル入出力するstaticなクラスで有無をチェックすべきか どこでチェックするのが最適ですか?
var x = new XElement("foo?", "bar"); 上記のコードは例外を発生しますが、 Xmlに使えない文字をエスケープするにはどうしたらよいでしょうか?
var x = new XElement(@"foo?", "bar");
えっ?
static class hogeB { static public List<string[]> GetList() { List<string[]> data=new List<string[]>(); return data; } } hogeAクラスでhogeBクラスより受け取ったdataの中身がからっぽなんですがなぜでしょうか?
>>102 からっぽって?
要素数0のリスト返してるだけじゃん?
104 :
103 :2009/06/25(木) 16:39:32
すいません。受け取り側のプログラミングミスでした
>>99 XMLに使えない文字と言っても要素名に使えない文字と普通のテキストノードに使えない文字は別だしな。
標準には禁止文字をエスケープする手法は特に定義されてないはず。
XmlSerializerは_xXXXX_形式でエスケープしてるけど。
ざっと見た感じ.NETの標準ライブラリではXMLの無効文字コレクションや判別メソッドは公開されてないなぁ。
タイトルバーの最大化ボタンを消す方法を教えてください。 MaximizeBox = false; だと、押せなくなった色の薄いボタンが見えてるので、 これを完全に消したいのです。
ちょっとちょっと回答者さんいないじゃん 早く帰宅して回答してよ
TransparencyKeyを指定して不定形フォームはできたのですが、 それにドットごとに不透明度を変える方法を教えてください argbでアルファ付きのBitmapは作れましたが、 BackgroundImageに入れてもアルファが効きません Opacityだと全ドットの不透明度が同じになります
C++/CLI VS2008ですが、WinFormはこちらで聞けと言うことなので。 Forms.Timerクラスの質問です。 Form上のボタンをクリックしたら1秒毎にメッセージ表示はできましたが、 タイマーイベントハンドラ関数からのFormクラスのメンバ関数の呼び方がわかりません。 ”静的メンバ関数の呼び出し方がちがう”とのコンパイルエラーがでてしまいます。 どのように呼べばいいのでしょうか?
111 :
デフォルトの名無しさん :2009/06/25(木) 23:39:36
C++コンパイラが吐くエラーの話なんだからC++スレで聞け。
>>112 Win32API呼んでも無理ですか?
Yahoo Widgetとかだとアルファ付きpng表示させるだけであっさり実現できるので
何らかの方法はあると思うのですが(Win32APIとか?)
そもそもRegion使っても不定形フォームができるだけで
フォームのドットごとの不透明度とはなんら関係ないと思いますよ
114 :
デフォルトの名無しさん :2009/06/26(金) 00:12:49
C++もC#もロクにできないのにC++/CLIなんかに手を出すな あれは両方完璧に使える人が嫌々使う言語だ
>>113 昔VC++でそういうウィンドウを作ったことあるな。
たしかWin32APIのUpdateLayeredWindow()てのを使った。
C#でやってる人もいるんじゃね?
とりあえずC#とUpdateLayeredWindowで検索してみるといいよ。
いい方法見つかったら教えてね(はぁと
DataGridViewにデータを渡して表示する場合 データをどういう形式するのが一般的なのでしょうか? List<string[]>のようなデータ形式をforeachなので一つ一つ x,yでセルを指定してデータを入れているのですが どうも非効率的というか、処理も遅いような気がします よろしくお願いします
BindingSourceをバインディング
手抜きだけど、匿名型のシーケンスをDataSourceに入れてAutoGenerateColumns=true って、DGVで出来たかな
>>115 WinFormsとUpdateLayeredWindowは相性が悪い。
上手くやる方法があるんだったら、俺も教えてほしいぐらいだ。
WPFなら簡単にできるので、
WPFに移行する事をお勧めするよ。
dataGridView1.CurrentCell.ColumnIndex ヘッダ選択されているときも値が0なんだよな -1とかにしてくれればいいのに面倒だな
C# 2.0 WindowsFormで質問です。 DataGridViewを作成し、カラムが何もない状態で動的に行列を追加しようとしています。 DataGridViewColumのオブジェクトインスタンスを生成し列追加を行った後 DataGridViewRowを同じDataGridViewに追加しようとすると DataGridView コントロールの列のうち少なくとも 1 つにセル テンプレートが指定されていません。 というエラーが実行時に発生します。 この現象を回避するにはカラムにあるセルテンプレートに何か入れてやればいいと思うのですが、 どのように設定してやればいいのか分からない状態です。 回避策やヒントになるサイトなどありましたらお教え願えませんか?
dgvはほんとわかりにくい
>>121 どんなコード書いたの?行列の追加はたったこれだけだよ。
いちいち型とか指定しなくても、枠だけはすぐに作れるはず。
dataGridView1.Columns.Add("name1", "title1"); //列の追加
dataGridView1.Columns.Add("name2", "title2"); //列の追加
dataGridView1.Columns.Add("name3", "title3"); //列の追加
dataGridView1.Rows.Add(3); //行の追加
VSの機能で国際化してみたのですが、これだけではダイアログなどのデザイナで文字列を設定できないものに対して国際化できなかった。 それで言語別に自分でリソースファイル足したのですが、自分で足したファイル(全言語分がメインアセンブリ内に……)とデザイナが自動で作ってくれる言語別のDLLファイル(こちらはサテライト)が別々になってて気持ち悪いのでこれらをまとめる方法が知りたいです
>>123 こんなコードです
変数定義はループの外で定義してあります
for(int i=0; i< data.Lenght;i++)
{
col = new DataGridViewColumn();
col.HeaderText = data[i].Name;
col.Tag = data[i].Key;
dgv.Columns.Add(col);
}
for(int i=0; i< datas.Lenght;i++)
{
row = new DataGridViewRow();
row.HeaderText = data2[i].Name;
row.Tag = data2[i].Key;
dgv.Rows.Add(row);
dvg..ColumnCount=data.Length foreach (Data d in data) { dvg.Columns[idx].Name = d.Name; dvg.Columns[idx].Tag=d.Key idx++; }
>>126 なるほど
グリッドに追加させたカラムに関しては勝手にテンプレートが適用されるという解釈ですか?
どうかな
>>125 >>121 で、警告されたエラー そのまま でしょ。
>DataGridView コントロールの列のうち少なくとも 1 つにセル テンプレートが指定されていません。
col のCellTemplateプロパティが設定されていないから。
DataGridViewTextBoxCell とか使いたいセル形式を指定してやれば、いいんじゃない?
MSDN見れば、そっくりのコードが例にでてると思うけど…
つか、普通こんなやり方するよりDataTable作って、DataSourceにぶち込んでやるのが
一番、手っ取り早いし、一般的なやり方ではないの?
こんにちわ
Visual Studio 2008を使っていると、たまにソリューション構成のところがグレーアウトして Debug/Releaseが選択できなくなるんですが、その条件がよくわかりません。 どういう場合に選択できなくなるんでしょう?
>>131 デバッグ中とか。裏でアプリが動きっぱなしになってないか?
133 :
131 :2009/06/26(金) 23:50:02
>>132 Visual Studioを一旦終了して開き直しても変わりません。
オプションを開いて「ビルド構成の詳細を表示」をチェックするとDebugが選べるようになるんですが、
こんな深いところにある設定を無意識にうっかり変えてしまう可能性は低いと思います。
もしかしてキーボードショートカットや、ツールバーのアイコンから設定が変更できたりするんでしょうか。
とくにカスタマイズはしていません。
裏でアプリが動きっぱなしになってないか?
C#8 EE クラス名にマウスポインタあわせると簡単なTIPSが表示されるけど あれを日本語にできないんでしょうか? 前は日本語表示されてたはずだけど、3.5日本語Languageインストールされているのに 英語のまま
パッチがあとから出てるから探してみて
137 :
135 :2009/06/27(土) 06:40:48
お願い検索キーワード教えてください スニペット c# 2008 日本語化 で検索してもみつからない
スニペットじゃなくてインテリセンス…
139 :
135 :2009/06/27(土) 06:57:07
>>138 一発で見つかりましたwお手数かけました!
TestDriven.net で最後に実行したテストを再実行するショートカットってない?
newキーワードが適用できる型と出来ない型ってどう違うの?
どんなんを指してるのか分からんが コンストラクタを公開してないとか
動的生成させたいかどうか
もっとやさしくおしえて^^
アホには無理
オブジェクトになるやつとならないやつ
もっとやらしくおしえて^^
>>142-143 うまく説明できないけれど・・・
VisualStudioでnewとスペースの後に何か文字を入力すると候補が出てくるけど
適当に選んで ( を入力しても引数とかの表示のポップアップ出てこなくて
MSDNでその型名検索してもどこがnewできる型と違うのか良く分からないので
そういうのをC#使って調べるにはどうしたらいいのかな、的なことです
調教が必要なやつと必要ないやつ
コンストラクタを公開してるかどうか
抽象クラスかどうか
>>148 class CannotCreat { CannotCreat(){} }
こういうことだ。
静的クラスかどうか
>>148 MSDN メンバ一覧を見る。
例えばSystem.Net.HttpWebRequestクラスならコンストラクタに鍵のアイコンがついてる。
つまりコンストラクタがpublicじゃないからnewを呼び出せない。
System.Drawing.Imageクラスならそもそもコンストラクタが一覧に載っていない。
それから、クラスの解説の構文にabstract classかstatic classとあればそもそもそれのインスタンスは作れない。
鍵のアイコンとかアイコンの意味の一覧ってある? 探してるんだけど見つからない。
ある。ないわけがない。
ならば提示して見せよ
型とクラスの違いをおしえてくさい
名前
どうやらコンストラクタが何か分かってないようだが
>>161 一番したのは鍵じゃなくない?
インターフェースのマークだと思うけど。
もちろんインターフェースはnew出来ないけど。
>>154 が言っているのは一番上の鍵の付いたコンストラクタだと思うんだけど。
>>164 あ、なるほどorz
プロテクトコンストラクタっていうのの下が隙間相手たから他のところ探してました
コンストラクタがわかってないならオブジェクトもわかってないな
やべぇ。鍵マークはprivateだと思ってたよ。protectedだったのか。
>>163 ,167
うん多分良く分かってない・・・
なんとなくnewが使えるのはクラスだけっぽい気がしてきたけど
GetTypeメソッド使ってnewがその型に使えるかどうか調べたい時は
IsClassとIsPublicがtrueで、IsAbstractとIsInterfaceとIsEnumがfalseの奴を選んであげればいい、のかな・・・?
ん? コーディング時じゃなくて実行時に知りたいってこと?
>>170 実行時というか、論理的?に調べるというか
MSDNでそう書いてあるから、じゃなくて、ちゃんとプログラムとして実行してみて
この型はこうなってるからnewが使える、使えない、みたいな感じのことができるようになっておきたいなと・・・
いまだとちゃんとnewが使える理由理解してないから
newは「使える/使えない」じゃなくて「使わなきゃいけない/省略してもいい」かどうかって 視点で見た方がいいかもよ。
173 :
デフォルトの名無しさん :2009/06/27(土) 13:56:27
簡単だ newするスコープからアクセス可能なコンストラクタが存在する かつ、抽象クラスでも列挙型でもない
174 :
デフォルトの名無しさん :2009/06/27(土) 14:00:26
訂正 列挙型はnewできる というか値型の場合はコンストラクタの有無にかかわらずnew可能
そういうのって後で自然に分かってくると思うんだが
>>171 もういいよ。C#の文法を勉強したくないということだけはよく分かった。
>>171 まず、newは
・ 値型のデフォルト値の作成(例:new int(),new BindingFlags())
・ コンストラクタの呼び出し(例:new StringBuilder())
の2つの用途で使える事を押さえておく必要がある。
前者は引数なしのnewで値型なら必ず使えるし、参照型では絶対に使えない。
後者は、値型なら引数1個以上、参照型なら引数0個以上のnewで、
コンストラクタが定義されていれば使えるし、定義されていなければ使えない。
ただし、使えるといってもどこからでも使えるわけではなく、
例えばアクセス修飾子がprotected(鍵マーク)ならnewする型の内部と、その派生クラスの内部でしか使えない。
このあたりはメソッドやプロパティと同じ仕組みなので、newだけ特別という事は無い。
これで理解できないなら、C#を基礎から学び直せ。
あと、インターフェイスは参照型だが、コンストラクタを定義できないので newできない、という事になるが、 例外として、COM関連のインターフェイスはnewできるものもある。 (例:Microsoft.Office.Interop.Excel.Application) たぶんCoClass属性のおかげだと思うが、 俺もよくわかって無いので自分で調べてくれ。
簡単には、GetConstructorしてpublicなやつがとれるかどうか。 Reflecterで調べてもいいけど。 ※ただしそれが絶対というわけではない。 まあ普通はMSDNとかドキュメントで仕様を見なきゃいけないんだけどね。 まあ確認したいってことなら。
ところで全然関係ないけど、インターフェイスのnewを普通のコードでサポートしたいことがあった。 ※単に文法的な話なだけだが。
>>173 ,177
あ、列挙型にnewを使う時は引数を指定できない=1番目の定数の作成に固定されてるから
VisualStudioで型名の後に(を入力しても何もポップアップされなかったのか!そんなの当たり前だから表示するはずないだろ的な。
つまりVisualStudio自体はちゃんとnewの後に来てもおかしくない型名だけ表示してくれてたんだ
やっとちょっとすっきりした、ありがとう
>>176 ごめん
> VisualStudioで型名の後に(を入力しても何もポップアップされなかったのか! ん?列挙型でも(の後にポップアップが出てくるぞ? 例えば、 enum A{} なら new A( と入力した直後に A.A() とポップアップする。(引数0個のnewが使えますよ的な意味で)
>>182 あれ、Intとかだとそうなるけど、列挙型だと俺のとこではならない・・・
例えば上で出てる
System.Reflection.BindingFlags a = new System.Reflection.BindingFlags
まで書いて(入力しても無反応
VisualStudio2008のSP1当ててるから最新のはずなんだけども
>>181 VC#のインテリセンスはお利口だから使える候補だけ出てくれるよ。
出てくれない時はほとんどの場合自分のミス。
ほとんどっていうか今までにインテリセンス様が間違った事がないけど、たまーにあるらしいっていうのも聞いたことある程度。
さすがインテリ
>>184 VS2008だと、拡張メソッドがらみでジェネリック引数制約が複雑に混ざるとダメだね
VS2010なら大丈夫なんだけど
また重くなりそう
.NET 3.5 SP1の入った環境で、コンボボックスに AAA BBB CCC というデータが入ってる時、キーボードの「A」を押すと自動的に「AAA」が選択されるという ショートカット(?)機能を止めたいのですが、どのプロパティを書き換えればいいのでしょう?
>>188 ああ、それね。以前オレも同じ問題に突き当たって結局解決できなかったから、
コンボボックスのプルダウンが表示されていない状態のときは履歴を削除するかたちで対応した。
正しいやり方を知ってる人があれば教えてほしい。
KeyPressでHandledしてしまえばいいかも
正確には覚えてないんだけど、 親フォームのKeyPreviewをtrueにして、親のKeyDownイベントで現在の値を保存、 コンボボックスのSelectionChangeCommittedで保存しといた値を再設定してやるんだったかな。 なんかそんな方法で擬似的にキーボードショートカットが使えないように 見せかけた覚えがある。 ちゃんと動くようになるまで、かなり試行錯誤した覚えが。
>>190 KeyPressだとたぶん手遅れになる。やるとしたらKeyDownじゃないかな。
>>191 うーむ。もうちょっと確かな情報だとありがたい
>>192 ,193
違うんだな。KeyPressのイベントのあとで補完作業が行われるんだ。だから困る。
195 :
デフォルトの名無しさん :2009/06/28(日) 01:50:16
アクセス装飾子と「override」(もしくは「virtual」など)の順番って、 「(アクセス装飾子) override」が一般的なのかな? 俺はoverrideの方を最初に持ってくる方が好きなのだが、 エディタが自動的に上記の順番に変えちゃうことがあるし、 解説サイトとかでも同じようにやってるので、何か意味があるのだろうか
>>195 まあ、順序にそれほど深い意味はないと思うけど、
「他の人とそろってる」ってのは大事。
そういう意味では、エディタの言うこと聞いとくのが一番。
「自分はこっちの方が好き」とかいう理由で順番変えない方がいい。
解説サイトも Visual Studio のデフォルトに合わせてるだけだと思う。
197 :
デフォルトの名無しさん :2009/06/28(日) 02:24:27
>>196 なるほど
エディタに変更されるたびに自分流に書き換えるのは非効率的だし、
統一という意味でも、エディタの方に合わせておいた方がよさそうだ
アクセス装飾子を先に書くようにするよ
サンクス
コンボボックス内のリストボックスに LB_FIND が来るんで、 そいつを無視するんだったかな・・・。 デフォルトでは大文字小文字を無視するんで、LB_FIND の代わりに LB_FINDEXACT でごにょごにょした記憶があるな・・・。
初歩的なことですみません。 pictureBoxを配置し、イメージを表示したとき、 そのイメージのパスを取り出すには、 なんとしたらよいでしょう? MessageBox(pictureBox.ImageLocation); がNullなのです。
そのプロパティはLoad使ったときしか使えない >Load メソッドを呼び出すと、ImageLocation プロパティが上書きされ、メソッド呼び出しで指定された URL が ImageLocation に設定されます。
明日の6/29(正確には今日ですが)に、衛星を使って採取された世界中の標高データが無料で
公開されるとのことです。
【社会】人工衛星を使ってかき集めた、世界の「標高データ」を無料公開
http://tsushima.2ch.net/test/read.cgi/newsplus/1246160564/ そこで早速この標高データを使ってプログラムを組んでみようと思っています。
データは"GeoTIFF"というTIFF画像ファイルの拡張版フォーマットで提供されるようです。
標高データに加え、そのマップの経度・緯度情報といった付加的なヘッダが付け足されたのが
"GeoTIFF"らしいです。
※GeoTIFFに関して詳しくは→
http://trac.osgeo.org/geotiff/ C#でこのGeoTIFFを読み込みたいのですが、なにか便利なメソッドやライブラリはありますか?
GeoTIFFに対応していなくてもTIFFファイルやTIFFファイルのヘッダを読み込めるメソッドが
あれば是非活用したいです。
>>201 そもそも.NET クラスライブラリがTIFFを読めるわけだが?
ただ抽象化されていて、各画像フォーマットごとの詳細なメタデータが取れたかどうかは定かではない。
ついでに「詳しくは」って出したサイトに libgeotiff って書いてあるのが見えないのか?
広告だと思う 203までが
フォームにパネルとエディットボックス類を配置し、 パネルにDirectXで編集画面を描画しています。 パネル上に描画されているオブジェクトを選択している状態で Del キーを押すと そのオブジェクトを削除 とやりたいのですが、 そうするとエディットボックス上の文字を削除するときの DEL と区別ができません。 パネルにフォーカスを設定できればすぐに解決できるのですが... どうすればうまく解決できるでしょうか?
無理やり設定すれば取れないこともない。
208 :
206 :2009/06/29(月) 22:58:04
自己解決しました。 編集用のパネルMouseDownしたときに this.ActiveControl = null にしてエディット系のフォーカスを外し、 フォームの KeyPreview を true にして、フォームのKeyDown イベントで、 アクティブコントロールが null かつ Del キーがおされたときに オブジェクトを削除するようにしました。
VS2008 C#にてExcel(2003もしくは2007)を起動して表を作成しています。 C#からExcelを起動した時のみ、有効にしていたExcelアドインが使えなくなっていま す。 Test1.xlaというアドインを事前に有効にしておき、手動でExcelを起動すると、 Test1.xlaの中にあるマクロは関数の一覧画面に表示されていて問題なく使えるので すが、 C#からExcelを起動するとアドイン自体は有効であると表示されているにも関わら ず、 関数の一覧画面に表示されず使えなくなってしまいます。 セキュリティは低に設定しても同じでした。 Excelのオブジェクト生成は以下のように普通のことをやっているつもりです。 Excel.Application app = null; Excel._Workbook wb; Excel._Worksheet st; try { app = new Excel.ApplicationClass(); wb = (Excel._Workbook)(app.Workbooks.Add(Missing.Value)); st = (Excel._Worksheet)wb.ActiveSheet; 以降の処理で線引いたり値を張り付けたりです。 Excel起動時にアドインをチェックして、app.Workbooks.Open(アドイン名,…)を実行 すれば関数の一覧画面に出てくるのですが、 原因が分からないので、この対処で問題ないのか不安です。 どなたか原因と正しい対処をご存じないでしょうか?
コンソールアプリでアプリが終了したときに飛んでくるイベントとか無いですか?
>>211 全てのオブジェクトが開放されてるのにどうやってイベントよこすんだ?
ああ、207って206へのレスだったんですね
>>214 これでわからなければさらに聞けばいいだけ
まあ実際にコード書いてみてうまくいったのを確認してから
>>207 書いたのだが
218 :
201 :2009/06/30(火) 14:01:39
>>218 ヒソヒソ、アホは無視したほうがいいですよ
>>218 libgeotiff をDLLとしてビルドして、それをC#から使えばよいのでは?
221 :
201 :2009/06/30(火) 14:36:40
CのプログラムをVisual Studio .NETでDLLコンパイルし、生成されたDLLファイルをC#のプロジェクトで使う という技は聞いたことはあるのですが実際に試したことはまだ一度もありません。 初心者向けのプログラムの本にもDLLとしてビルドしてそれを他のプロジェクト中で使うという 方法を説明したものは見あたらないのですが、そういった技を解説してくれているサイトというのは 無いでしょうか?できるようになったら応用がきく気がします。
必要なソースやヘッダを含んだVC++プロジェクトをつくる (プロジェクトを作るときのウィザードで、ダイナミックリンクライブラリ)を選択しておく。 ↓ もしくは、適当に空っぽのプロジェクトをつくって必要なファイルを追加し、 VC++メニューからプロジェクト→プロパティ→構成プロパティ→構成の種類でDLLを選択する。 ↓ マクロ #define DLL_EXPORT(type) extern "C" __declspec(dllexport) type __cdecl をどこかに追加し、公開したい関数をとにかく DLL_EXPORT(関数の戻り値の型) 関数名(引数リスト) という形にする。(h も c/cpp も両方) たとえば元の関数が int hoge(const char *s) と宣言されていれば DLL_EXPORT(int) hoge(const char *s) としておく。これで関数が公開される。 ↓ ビルドする。 ↓ DLLできる。 ↓ dependency walker というフリーソフトに突っ込んで、 意図した名前の関数が公開されているか見る。 まずはここまでだな。
223 :
デフォルトの名無しさん :2009/06/30(火) 16:51:44
クラスからフォーム1のインスタンスを作製し そのフォームからクラスのメゾッドにアクセスしようとすると 「静的でないフィールド、メソッド、またはプロパティ 'Test()' で、オブジェクト参照が必要です」 とエラーがでてメゾッドを実行できないのですが、何が間違っているのでしょうか?
インスタンス.Test()ってやってる? クラス名.Test()じゃなくて
225 :
223 :2009/06/30(火) 17:04:42
ありがとうございます。 クラス名.Test()しておりました・・・そのせいですね。。 しかし、あるソフトのプラグインを作りたくてやっていたのですが インスタンス名がわかりません・・・
そりゃあそのソフトのプラグインの説明書に出てると思うぞ・・・
227 :
223 :2009/06/30(火) 17:11:38
ご親切に大変ありがとうございました。 もう一度よく調べてきます。
228 :
201 :2009/06/30(火) 18:36:13
>>222 ありがとうございます。早速試してみます。
229 :
デフォルトの名無しさん :2009/06/30(火) 23:02:43
複数のPrintDocumentの出力結果をマージする方法とか無いですか? 要するにPrintジョブをまとめたいだけなんですけど。
230 :
デフォルトの名無しさん :2009/07/01(水) 01:13:27
オブジェクト指向言語の場合、フローチャートじゃなくて何が使われるんですか?
UML
UML
UML = Ultra Man Leo
VS2005 でツリービューを作成しているのですが「+」をクリックした時だけ では無く、「+」の隣にある文字列がクリックされた時にもNodeを展開するには どうすればよいでしょうか?
どういたしまして
>>234 NodeMouseClickでTreeNode.Expand
C#でCompactFrameworkの書籍やサイトでお勧めってありますか?
BinaryWriterでbyteを書き込むとAnyCPUとx64でコンパイルしたプログラムで結果が違うことがあるんだが・・・なぜ?
LargeIcon、オーナードロー状態のListViewでアイテム毎の描画エリアの大きさ変更するにはどうしたらよい? LargeImageListのImageSizeを弄ると大きさが変わるみたいだが指定した数値になるわけじゃないので厳しい。 LVS_OWNERDRAWFIXEDはReportViewじゃないと使えないので駄目。
246 :
234 :2009/07/01(水) 11:42:36
>>237 NodeMouseClickイベントの中で次のコードを書いたところ
「+」の隣にある文字がクリックされた場合には、正常に
展開・縮小をする事が出来る様になったのですが、
逆に「+」がクリックされた時には、正常に展開・縮小をする事が
出来なくなってしまいました。
※不正な挙動を細かく言いますと、縮小中のノードの「+」部分を
マウスでした状態(左ボタンを押しっぱなし)では展開され、
マウスを放すと縮小されてしまいます。
⇒次に続きます。
>>241 元のデータは同一なの?
x86もやってみた?
248 :
234 :2009/07/01(水) 11:43:32
private void tvTop_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { Point pntMouseClick = new Point(); pntMouseClick.X = e.X; pntMouseClick.Y = e.Y; tvTop.SelectedNode = tvTop.GetNodeAt(pntMouseClick); //ノードが展開されていない場合には展開する。 if (!(tvTop.SelectedNode.IsExpanded)) { //選択されたノードを展開する。 tvTop.SelectedNode.Expand(); } else { //選択されたノードを折り畳む。 tvTop.SelectedNode.Collapse(); } } どうすれば「+」がクリックされた時にも「隣にある文字列」 がクリックされた場合にも意図した動きをする様になるでしょうか?
TreeView.HitTestでどこクリックされたか調査
Windows の標準操作から外れるアクションになるのはお勧めできないけどな
Formの最大化ボタンを押したらフルスクリーン表示に切り替えるコードの実装を書いてるんだが、 ウィンドウスタイルを設定するときにIntPtrがオーバーフローを起こすようで、 元に戻したらウィンドウのシステムアイコンが左右逆になっちゃって笑えるぜw あとひと踏ん張り……。
いじり方間違っている感がするけどそれはそれとして なんでその処理でウィンドウスタイルなんかいじってる んだ?
253 :
sage :2009/07/01(水) 20:49:14
ダウンロードしたフリーウェアのプログラムに自分で作ったプログラムを追加しましたが自分のプログラムの所だけ 実行してくれません。express editionのソリューションエクスプローラで自分のプログラムは追加 出来た様に見えるのですが。D&Dしてリビルドしました。何か他にやる事がありますか? 自分のプログラムの部分は今はhello worldにしてあるので間違っては無さそうですが。
エスパーが必要だな。 それか、そのフリーウェアの作者に聞いたら?
255 :
デフォルトの名無しさん :2009/07/01(水) 20:56:20
まずはC#の入門書を買ってこようか
253です。プログラムに追加ではなくプログラムが入っているプロジェクトに入れました。
とりあえずそのフリーウェアをさらしてみたら
スタートアッププロジェクトの設定ができてないんじゃ
プロジェクトに追加したんじゃなくて、単に同じVSで開いただけなんだろうw
ArrayListyからList<>に入れ替えてForEachするのと ArrayListでforeachするのってどっちがいいの?
誰か訳してくれ
入れ替えるだけ無駄
Which is good as for doing foreach with the replacement with List<> from ArrayListy, doing ForEach, and ArrayList?
英語でおk
English will do.
>>252 フレームが残っているとフルスクリーン時に全画面に描画ができないから。
C++から移植したのでウィンドウスタイルを直接APIで書き換えていた。
.NET上でもいじれるんじゃないかと気づいたので、明日書き換えてみよう。
267 :
234 :2009/07/01(水) 23:26:24
>>249 遅くなりましたがお陰様でやりたい事が実現出来ました。
どうもありがとうございました。
268 :
デフォルトの名無しさん :2009/07/02(木) 06:08:31
型付データセットを使ったアクセス型のデータベース でソフトを作っていますが、テーブルを増やすことに なりました。新たにテーブルを増やすともう一度データベース を構築しなくてはならないので、他のテーブルとのリレーション はないことから、別のデータベースファイルを作成し 別個にデータベースを構築しようと思っています。 ひとつのソフトでいくつものデータベースファイルを 読み込むような構成としても大丈夫なものでしょうか。
別に OK だけど、 「テーブルを増やすとデータベースを構築しなくてはならない」ってのは、意味不明。 そんなん、クエリーひとつ流すだけだし。まさか、リードオンリーで使ってる わけでもあるまい?
270 :
252 :2009/07/02(木) 10:51:49
C#でデータベースにアクセスする方法で、本だとデータソースの追加って奴使う方法が載ってます。 ネットだとそれせずにソース上で全部記述して処理する方法をよく見るんですけど、 この2つの方法って利点弱点ってあるんでしょうか? こっちの方法はやめとけってのあったら教えて下さい。 データソースの追加って奴の方が楽なように感じられないでもないような気も。 DBMSはSQL ServerとAccess両方使う予定です。
データソース使うと便利なメソッドとかあるからプログラミングが楽だけど 動作が重いってイメージ オレは初心者だから、上級者から見ればたぶん違う
スクリーンショット何枚も撮って貼り付けるよりコード示す方が手っ取り早い
>>270 なるほど……。参考になる。ありがとう。
URLの記事は知らなかったけど、ウィンドウスタイルを書き換えるのをやめてFormBorderStyleを変更するようにした。
コードが簡単になったし、変な動きも止まった。
でもフルスクリーン時にマウスクリックをすると挙動がおかしくなる。
テクスチャの描画(Direct3D)をするとフルスクリーン/ウィンドウの切り替えができない、
など色々とおかしいところがあるのでまだ調整中。
>>274 Direct3D?そっちかよ
その場合は D3DPRESENT_PARAMETERS 変えて Reset だろ
User32 まわりの機構を使わないで
>>274 デバイスの再設定/モニターの解像度の変更はそのとおりだけど、
描画対象のウィンドウのフレームを変更してあげないといけない。
理由は上に書いたとおり。
これまでの変更で大体動くようになってきたけど、
フルスクリーン表示にするモニターに別のアプリのウィンドウがあるときに、
画面をクリックするとフォーカスを失っちゃうんだよなぁ。
どうもほかのウィンドウのほうが上側に来ているような気がする。
(DirectXでフルスクリーン描画するとほかのウィンドウの描画内容無視して描いてしまう)
Web表示で困ってます。 Webブラウザで、URLを開くには、 webBrowser.Navigate(URL); では読み込みずみのhtmlファイルを開くには? string htmlfile = "<html><body>〜〜〜</body></html>" みたいなのを表示するにはどうしたらよいですか?
DocumentTextかDocumentStream
>>272 動作が重いとなると痛いですね。
今ある本が平成14年のVisual C#.NETによる実践データベースプログラミングってかなり古い本なんで新しいの買って勉強してみます。
>>276 やっと話が見えてきた
WM_SYSCOMMAND SC_MAXIMIZE いじってると思うけど
そのあと元処理につないで、つまり base.WndProc して
最大化させればいい気がする
282 :
デフォルトの名無しさん :2009/07/02(木) 15:26:18
画像ビューアの読み込み部分なんですが、 public Image Load(string filePass) { Stream fs = new FileStream(filePass, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); BitmapDecoder bf = BitmapDecoder.Create(fs, BitmapCreateOptions.None, BitmapCacheOption.Default); Image image = new Image(); BitmapSource bsource = bf.Frames[0]; image.Source = bsource; image.Width = bsource.PixelWidth; image.Height = bsource.PixelHeight; Console.WriteLine("{0}", bf.CodecInfo.FileExtensions); //fs.Close(); return image; } このソースだと読み込んだファイルはオープンされたままで、 例えば名前の変更とかができません。fs.Close()をつけるといいのですが それだと画像が表示されなくなってしまいます。 よそ様の作られたアプリだと開いたファイルに対して問題なく操作できるので、 そういった挙動にしたいのですが、どうすればいいでしょうか。
普通はImage.FromFileとかで一気にImageオブジェクト作ってんじゃねえの
そりゃImage違いだ。 System.Windows.Controls.Imageの話だろ。
解説 デーコーダの作成後に bitmapStream を閉じる場合は、OnLoad キャッシュ オプションを使用します。既定の OnDemand キャッシュ オプションは、ガベージ コレクタでビットマップが必要とされ、クリーンアップが処理されるまで、ストリームへのアクセスを維持します。
>>285 おお、BitmapCacheOption.DefaultをBitmapCacheOption.OnLoadにすることで望みの動作になりました。
ありがとうございます。素で見逃してた恥ずかしい
でもDefaultとOnLoadの違いってなんでしょう?どちらもイメージ全体をメモリ上に置くみたいなので
Defaultでもいいように思えますが。
>>286 ドキュメントが悪い。
enum BitmapCacheOption {
Default = 0,
OnDemand = 0,
OnLoad = 1,
None = 2,
};
mono のソースによると: namespace System.Windows.Media.Imaging { public enum BitmapCacheOption { OnDemand, OnLoad, None, Default = OnDemand, } }
横からだけどOnDemandってどゆこと?ドキュソみてもよくわからん
292 :
デフォルトの名無しさん :2009/07/02(木) 16:55:26
>>271 データソースの追加だと型付データセットができる。
これで、テーブル名をプロパティのようにアクセスできる。
作成にとても楽だけどわけわからんコードがたくさん生成
されるのでコード単位での操作は難しい。
webBrowserでクリックしたとき、クリックしたURLを取得するには、どうしたらよいでしょう? マウスクリックイベントをイベントフラグとして登録するとかですか?
>>292 参考にさせてもらいます。
ありがとう。
質問です dataGridView1[1, 1].Style.BackColor = Color.Red; などで塗りつぶしたセルを元の状態に戻すにはどうしたらよいでしょうか? dataGridView1.DefaultCellStyle.BackColor = Color.Empty; dataGridView1.RowHeadersDefaultCellStyle.BackColor = Color.Empty; を試しましたが無理でした dataGridView1[1, 1].Style.BackColor = Color.Empty; とすればできるのですが表のすべてのセルを一気にデフォルト色に変えたい場合のよい方法が あれば教えてください
個別の設定の方が優先されるのは当たり前だろ、と 素直に一つずつ設定しる 変更したセルをListとかに保存しといてそれだけ元に戻す、とかの実装はどうか
すれ違いかもしれないですが一つ質問があります。 C# or VB.net で開発したアプリはRefactorとかいうツールを使うと 簡単にコードが見られてしまいますが、 このツールを使用し逆アセンブルをしたとしてもコードの中に入れている コメントは相手には見られないと考えても良いでしょうか?
そんなに時間かからないからさ 自分でやってみな
>>298 自分でやてtみて逆アセンブルは出来ましたが、
コメントは見えませんでした。
という事でコードは簡単に相手に見えてしまうが、
コメントは逆アセンブルをする悪い人にも見えない
という考えが正しいかご教授下さい。
コメントが見られる事はないよ ソースコードも自分が書いたそのものではなく できる限り復元してみただけのもの
>>300 ありがとうございます。
安心しました。
因みにですが、もう一つだけ質問させて下さい。
Visual Studioのアイテムボックスの右上にある「小さく注射器のアイコン」は
.Net Frameworkに用意されていますか?
自動で伸縮する奴です。
常に表示されているとウザイので、このアイコンがもし.Netに用意されているのであれば
必要な時のみ呼び出す事が出来て非常に便利だと思うのですが。
注射器って、、、これ押しピンだろう 標準には無いかな、SP1のMFCにはあるが。
>>302 .Netじゃ用意されてないんですね。
実現するにはどうすればよいでしょうか?
自分でかけよ…
>>304 用意されているのならそれを使いたいのです。
フリーのと有料のがあった気がする
>>305 MFCも.NET Frameworkも基本的にはライブラリなので、
ライブラリではないアイコンなんかのリソースはあまり重視されないし、記事も多くない。
インストールフォルダやDVDの中を探してあるならそれを使えばいいし、無いなら自分で探せばいい。
自分で考える前に人に聞くな。
アイコンそのものじゃなくて、アイコンの機能というか自動で伸縮する 機能が欲しいってことじゃないのかな? どっちにしても「自分で書けよ」って話になるけど。
>>308 ズバリその通りです。
>>306 >>307 >>308 さんのおっしゃった事そのものです。
いずれにしても、.Netではその押しピン機能は用意されていないのですね。
残念ですが自分で1から作成します。
ドッキングウィンドウでぐぐれよ
311 :
デフォルトの名無しさん :2009/07/03(金) 11:16:02
そういうのは抵レベルなところからフレームワーク組むことになるから大変だよ サードパーティーのコンポーネント使ったほうがいいよ
>>308 ,309
押しピン機能? いったい何のことだ。
さっきから要領の得ない会話をしているように思うんだが、オレの理解力が無いだけなのか。
押しピンで表現されるツールチップアイコンの機能といったら、通常は「ウィンドウを常に手前に表示」だと思うんだが?
それともドッキング可能なペインのこと言ってるのか?
正確な名前は知らんけど、押しピンアイコンをクリックすると、 ウィンドウが自動的に隠れるのを一時的に止めることができる。
VisualStudio2008のC#のIDEで逆アセンブリウィンドウを出す方法を教えてください。
VS2005の場合ならmsdnに書いてあったんですが、2008ではメニュー構成が変わったのか
探し方が悪いのか、見つけることができません。
ttp://msdn.microsoft.com/ja-jp/library/a3cwf295 (VS.80).aspx
ヘルプに「逆アセンブリウィンドウ」という項目はあるのですが、クリックしても
「インデックス エントリのトピックがありません」というエラーが出ます。
とりあえず「プッシュピン」らしい
>>315 右上にその他のバージョンについてはってあるだろ、まあこのページは中身同じだけど。
> デバッガは動作中であるか、中断モードである必要があります。
はおk?
>>317 あ、使っているのはstandardエディションです。
Express Editionって書かれてるように見えるが…?
>>320 最初Expressを使っていたんですが、そのあとStandardを買って上書きで入れました。
タイトルバーがExpressのままなのは謎なんですが、
もしかして、原因はここらへんにあるんでしょうか。
上書きなんてできたっけ…? 一旦全部アンインストールしてインストールし直せ
とりあえず起動してるのはExpressだな
Visual StudioとVisual Studio Expressは別のアプリだから上書きでは入らないと思うぞ。 すなおにExpressをアンインストールしる。
買ったのはStandardのアップグレード版です。 最近になってExpressからでもアップグレードできるようになったと MSのページに書いてあったので入れてみたんですが、 一度消さないとダメなんですか。やってみます。
アップグレードってのはライセンス上のものであって アプリケーションの上書きインストールとは関係ない
>>325 ExpressからアップグレードできるのはProfessional版だけじゃなかった?
もうその手の嘘はいいよ
StandardとEEは別アプリ 併用可能だから上書きとか無理 EEはスタートメニュー直下にあるけどStandardはMicrosoft VisualStudio 200Xの下にできるだろ?
アンインストールも必要ないよ 別の場所にアイコンあるの気がつかずにEE起動してるだけだろう ってもうアンインストールしちゃったかな
C#のGUIエディタで、 パネル上にエディタ等があるとして、そのエディタを移動させようとして カット&ペーストすると、エディタのイベント情報がすべてなくなりますよね。 イベントをすべて保持したまま親コントロールだけをかえたい場合はどうすればよいですか? コントロールをコピペしてもイベントがリセットされない方法はありませんか?
気付かずExpress使い続けてるような奴はそもそもStandard買う意味ねーな
買ったのに使ってなかったとかワロテマウwww
>>331 ドキュメントアウトラインのツリーでドラッグして動かす。
やってみたら目からウロコ。
standard買うやつってなんなの? MFCいらなきゃEEじゃないの?
WM6でFTPクライアントクライアントを作ってるのですが WindowsMobileのFormってサイズ指定しても反映しないのですか? TCPListenerとかでFTP部分は書けたのだけど、情報少なくて四苦八苦してます CompactFrameworkの話はスレ違いかな?
Windows.Formsの話も本来はスレ違いな気がするのでいいんじゃないでしょうか。
>>338 の質問も、言語がC#だろうがVBだろうがIronPythonだろうが、一字一句
違いませんよね?でもそれはCompact Frameworkだからではありません。
>>338 >WindowsMobileのFormってサイズ指定しても反映しないのですか?
現状はしない。ある意味ウィンドウシステムじゃないから。
FormのSizeはCompactFrameworkではサポートしていない。(ヘルプのバージョン情報参照)
MFCとC#Formってどっちが速度速いですか? 最近MFCは何やっても動作がカクカクで嫌になってきたんですが C#Formで作っても動作はかわらないですか?
accessにデータを追加する時 com = new System.Data.OleDb.OleDbCommand("insert into table111(code,name) values(222,'あああ')", conn); は出来るのに int aaa = 222; string bbb = "あああ"; com = new System.Data.OleDb.OleDbCommand("insert into table111(code,name) values(aaa,bbb)", conn); だと出来ません。valuesの後()の中は変数ではいけないのですか?
パラメタライズドクエリとか調べれ
>>343 変数の名前だけ渡したってしょうがないだろ。
そのままやるならstring.formatをかける。
ただしそれではSQLインジェクションを本質的に防げないから、>344になる。
>>344 ,345
ありがとうございます。
パラメタライズドクエリ、SQLインジェクション調べてみます。
347 :
デフォルトの名無しさん :2009/07/04(土) 17:38:12
クラスやメソッドごとに辞書形式で利用方法や利用例を記載した本はないでしょうか。 和書でも洋書でもいいです。金額も問いません。
APIのオフィシャルリファレンスですら上下刊で1600ページくらいあって、それでも網羅し切れていないというのに
地球の資源がヤバい
本は更新できないんだと思い知ってリファレンスブックの類を買うの止めたな。
MSもCランタイムライブラリみたいに各ページに用例をつけてくれればいいのに、とは思うね。 MSDNのクラス自体の説明文では何がなにやら分からないことが結構ある。
353 :
デフォルトの名無しさん :2009/07/04(土) 18:56:15
緑のバイクさんの数値/文字列の場所に >文字列の検索 (一般) >文字列の検索 (正規表現) >文字列の置換 (一般) >文字列の置換 (正規表現) とありますが、一般と正規表現の違いはなんですか? 正規表現でやったほうが効率がいいってことですか?
355 :
デフォルトの名無しさん :2009/07/04(土) 20:42:54
正規表現はパターンマッチング 一般は特定文字列
>>353 入門書を選ぶならいいが、実務で使うとなると、もはや紙の本なんか役に立たん
msdnを読め
ビルドのプラットフォームの項目にAny CPUしか選択肢が無いのはEEだからなのでしょうか?
うん
359 :
デフォルトの名無しさん :2009/07/05(日) 00:31:36
オプションで ビルド構成の詳細を表示 だったかな
そっちはDebug/Releaseじゃないか? AnyCPUはEEじゃなくても新規作成ししたプロジェクトならそうじゃないかな。 AntCPUの下の構成マネージャーから自分で追加する。
ってAnyCPUのほうも「ビルド構成の詳細を表示」をオンにしないと 変更できないね、すまん。
Environment.NewLineの中身を判別することは出来るのでしょうか?
テキストファイルについて教えてください。 あるロガーが掃き出すテキストファイルに「1AH」(CTRL+Z)が含まれて いるのですが、1AH以降を取り除くにはどうすればいいでしょうか? コマンドプロンプトでテキストファイルをバイナリモードでコピーするという 方法で除去できましたが、C#に用意されている機能で除去できないかと 考えています。 よろしくお願いします。
>>362 stringなんだからLengthやIndexOf使えば調べられるが
>>363 IndexOfとSubstring
\xとか\u
365 :
デフォルトの名無しさん :2009/07/05(日) 08:46:20
今、VS2008をインストールしていますが、 VB6.0も使用するにはどのような環境にすればよいでしょうか。
古い方を先にインストールってのが基本だが
367 :
デフォルトの名無しさん :2009/07/05(日) 09:02:51
>>366 ありがとうございます。
ということは、VB6.0を別途購入し、
VS2008アンインストール
⇒ VB6.0インストール
⇒ VS2008インストール
の流れでいいでしょうか。
368 :
デフォルトの名無しさん :2009/07/05(日) 09:04:07
よく見る、 "object sender, EventArgs e" とはどういう意味ですか?
>>367 うん
今時VB6なんか売られてるかどうかしらんけど
>>368 メソッドの引数
はともかくとして
イベントが起こったときに呼び出されるメソッド(イベントハンドラ)に推奨されてる引数の形式
第一引数はobject型 イベントを起こしたオブジェクトが入る ボタンクリックならButtonオブジェクト
第二引数はEventArgsかその派生型 イベント特有の情報が入る MouseDownなら押下されたマウスのボタンや位置の情報
EventArgsは特有の情報がないときに使われる
371 :
デフォルトの名無しさん :2009/07/05(日) 09:16:34
>>369 ありがとうございます。
そのとき、VB2008とVB6.0が併存できるようにすることは可能でしょうか。
何度も質問ですみません。
365・367と同じ質問に見えるが、VS2008とVB2008EEとVB6を入れたいってことなのか? まあ全部できるけど
373 :
デフォルトの名無しさん :2009/07/05(日) 10:10:56
>>372 VC#と、
VB2008と、
VB6.0で開発を行う可能性があるので、
同じPCに入れておきたいんです。
374 :
デフォルトの名無しさん :2009/07/05(日) 11:06:17
375 :
デフォルトの名無しさん :2009/07/05(日) 11:08:51
>>370 "e"はどういう意味なんだろ。
今まで意識したことなかった。
名前付けのガイドラインに真っ向から反するよな eventArgsでいいじゃねえか
本当の名前は eの後ろにつくから、とか
> パラメータ名と型を見ただけでパラメータの使用法が判断できるような名前にする がパラメータのガイドラインだが イベント引数はパラメータ名いらないのよね 型で判断するもんだから
379 :
デフォルトの名無しさん :2009/07/05(日) 11:35:00
MSDNで"eventArgs"を調べたけど、 意味がさっぱり分りません。 使用するときはあるのでしょうか(-_-;)。
380 :
デフォルトの名無しさん :2009/07/05(日) 11:36:37
>>378 すみません、イベントハンドラの引数が2つあるということですかね?
>>380 なにを378に聞いてるのかよくわからんが
イベントハンドラの引数は普通2つ、senderとe
イベント引数は一般にeの方だけ指す、と思う
たとえば「int a, String b」ってのは、int型の変数a、string型の変数bって意味だ。 intとstringは型、aとbは変数名。これはわかるよな? 同じように「object sender, EventArgs e」ってのはobject型の変数sender、EventArgs型の変数eってこと。 なんで「e」なんてわかりにくい名前に決めたのかは不明だが、何か歴史があるんだろうなあ。
>なんで「e」なんてわかりにくい名前に決めたのかは不明だが、 それを話してたんじゃないの?
int iと同じで、型の頭文字じゃない?設計者がすげー年輩でFORTRANを意識したとか。
386 :
デフォルトの名無しさん :2009/07/05(日) 12:42:35
>>383 なるほど!分かりやすい説明感謝です。
"eventArgs e"とは別の引数が使われるケースもあるのかなぁ。
見たことない(+_+)。
>>376 ヘルプからして e だもんなぁ。
>>379 イベントハンドルデリゲートで特化した場合に使う。
例えば MouseEventArgs では、
マウスのどのボタンが押されたか
マウス ボタンが押されて離された回数
マウス ホイールの回転回数を表す符合付きの数値
マウス イベント生成時のマウスの位置
などが入っている。
つまり、むっちゃ重要で使いまくり。
EventArgs は単に基本クラス。
とりあえず例外キャッチしようとして catch(Exception e)って書いて 「既に定義されています」って言われるとイラッと来る。
だからExceptionはexにする もうそういうふうに指が動くようになってる
例外はexでキャッチするようにするといいよ
391 :
デフォルトの名無しさん :2009/07/05(日) 13:02:51
静的メソッドとインスタンスメソッドのちがいはなんですか? いろんなHPを読んでもイメージがさっぱり掴めません。
392 :
デフォルトの名無しさん :2009/07/05(日) 13:04:55
catch(Exception ex) ってどういう命令なのですか?
命令じゃない。例外ハンドラ。
394 :
デフォルトの名無しさん :2009/07/05(日) 13:12:19
EventArgs ってどう読むの?「イベントオーギュス」?
395 :
デフォルトの名無しさん :2009/07/05(日) 13:13:29
「catch」だけのときと 「catch(Exception ex) 」のときで、処理はどう変わるの?
イベントアーグス
いい加減一度死んでから入門書買いに行け。
Argsはargument(アーギュメント)の複数形argumentsの略。略するのはC言語の名残 無理に発音するならアーギュスだけどみんな好き勝手に読んでる JISでは読み方は規定してなかったよね?
399 :
デフォルトの名無しさん :2009/07/05(日) 13:26:49
お次は なんで例外は変数はeやexと分かりにくい名前をつけるの? xxExceptionでいいじゃないかとかいった質問がきそうだな。
401 :
デフォルトの名無しさん :2009/07/05(日) 13:28:35
>>391 生成しなくても使えるのが静的
生成してできたものがインスタンス
そんなの 非常に狭い部分でしか使わない変数に名前を考えるのが面倒くさい でいいじゃん
>>391 静的クラスはプログラムの実行開始時に自動的にインスタンスが一つ作られる。
だからいつでもすぐに使うことができる。早くて便利。ソースも少しだけすっきりする。
だけど開放することはできないからあんまり巨大な静的クラスは作らない方がいい。
クラスじゃなくて静的メソッドといってるっぽいよ。 難しく言えばメソッドに暗黙のthisを渡すかどうかの違い。
別に、自分で (object obj, EventArgs evags) とか、好き勝手に書き換えてもいいんだぜ?ローカルな変数名なんだから。
406 :
ちら裏 :2009/07/05(日) 13:42:37
>>391 イメージは自分で作るものだからなぁ。
俺のイメージだと、
クラスってのはクラスローダが自動的に作った「設計図オブジェクト」のシングルトン
インスタンスで、そのメソッドとメンバ変数が静的になるのは、「自動的」に作られた
「シングルトン」だからなだけ。
このイメージの利点は、クラスとインスタンスを同じ仕掛けとして認識できること。
そういう糖衣構文だと思ってる。あくまで個人的に。
>>406 Smalltalkのクラスはメタクラスのインスタンスである、とかの話に似てるな
正直よくわかってないけどw
>>391 staticメソッドというのは、実態はただの関数だ。それがクラス定義のスコープの中にあるだけ。
インスタンスを作らないと原則呼び出せない通常のメソッドとは全然違う。
>>406 クラスがオブジェクトの設計図というのは間違ってないが、シングルトン関係ない。
クラスを判子と例えるなら、インスタンスは判子を押したここの契約書だ。
>>408 いや、静的にということは、この場合ではクラスメンバにアクセスするときに同じ
インスタンスにアクセスすることを要請している、これはシングルトンが保証して
いるわけだからメチャ関係ある。
インスタンス化しないで使える(==自動的)、メンバが静的(==シングルトン)。
イメージ的にはシングルトンインスタンス Hoge hoge = Hoge.getSingleton(); のインスタンスメンバは、クラスメンバであるかのように使える事と同じイメージ。
411 :
デフォルトの名無しさん :2009/07/05(日) 14:51:48
シングルトンって何?
>クラスメンバであるかのように class Hoge { public static int id; public static void func() {...} } を Hoge.id とか Hoge.func() とするように class Hoge { public int id; public void func() {...} public static Hoge getSingleton() {...} } で、先の hoge だと hoge.id とか hoge.func() と書けるという意味ね。
413 :
デフォルトの名無しさん :2009/07/05(日) 14:53:52
>>391 が段々混乱しているかもしれないな…。
本よりも高度な説明が繰り広げられているから…。
概念的な話まで持ち込むのはオーバーじゃねえの 使い方だけ説明しておけばいいだろ そのうち分かるようになる
概念の話は難しいかもしれないな。 クラスもオブジェクトと考える言語の系統と、C++のようにそう考えない系統があって C#やJavaはその中間的な感じなんだよね。 静的クラスをシングルトンと考えるのは前者。 C#はクラスローダレベルで見ると前者っぽいけど基本的な考え方は後者に近い。
C++とC#で違うんだよな。 C#のほうがより厳密なんだっけ? C++はどちらでも使いようが可能なんだよな 切り替えて使うときどうしても混乱してしまう。
タイヤキの型とタイヤキ の説明でいいんじゃねぇの
入門段階だとその考え方のほうが無難だな。 型は初めからそこにあるものってことで、 静的メソッドは型とともにはじめからそこにある。 リフレクションやらstaticイニシャライザのことはしばらく置いておこう。
クラスとインスタンスの違いなら、それでいいんだけど。 クラスメソッドとインスタンスメソッドの違いだからなぁ。
具体的にどぞ
タイヤキの型に付いてるボタンとタイヤキについてるボタン
もうそれでいいよ 俺はタコヤキの型に付いてるタコとタコヤキに入っているタコだし
タコヤキは人間が回してやらないと丸くならないぞ。クラスと考えるには不完全だ。
408だが、クラスオブジェクトがJavascriptやSquirrelみたいに ファーストクラスオブジェクトならばそう言えないことも無いかもしれないが、 (特にSquirrelのクラスオブジェクトはまさに雛形的な動作をするようにできている。 メンバ変数の初期値を決められるだとかインスタンス初期化は クラスオブジェクトのテーブルからのベタコピーだとか) しかし、JavaやC#は専用の名前空間があって基本的に上書きはできない。 またインスタンス化やシングルトンの概念と関係なくWin32Apiのラッパとして仕方なく staticメソッドとして定義していかないといけないことが頻繁にあるので、 (C#はグローバルな関数が書けない) そういう考え方は頷けないものがある。
自動でひっくり返すのもありますぅー
静的クラスを作るとその静的クラスの中で自分自身を呼び出す なんてパラドキシカルな手段が講じられるようになるんだよね。 初めてその概念に触れたときは理解するまで時間がかかったw
自分自身を呼び出すリカーシブプロシージャなんてアルゴリズムの基本じゃん 情報系の勉強してれば必ず出てくる どうやって実装するかは処理系によって変わるけど
>>427 なんか面白そうなんで、いっちょ実例を教えてくだされ
430 :
デフォルトの名無しさん :2009/07/05(日) 18:44:08
初心者板とは思えない…。 で、、、、静的メソッドって結局なんなんだろう。
ここは初心者向けにえらそうなこと言うためのスレだから。
子供は無邪気に「宇宙ってどれくらい大きいの」とか難しいこと聞くからなぁ。
433 :
デフォルトの名無しさん :2009/07/05(日) 19:12:52
みんなはjavaの経験もあるの? わたしはCobolerからC#への転身なので全く何も分からないよ(-_-;)。
HSPからC#に来ました 他の言語 シラネ
質問があります。 リストからgetfilesを取得して、deletefilesを取り除いて、重複をのぞいてリスト化するには、どうしたらよいでしょう? 次のようにしてみたのですが、 string[] deletefiles = {".cs","(2)","zip","cab"}; string[] getfiles = {"txt","jpg"}; string[] files = Directory.GetFiles(@"C:\Documents and Settings\username\Recent", "*.lnk"); string text = ""; foreach(string file in files) { foreach(string deletefile in deletefiles) { foreach(string getfile in getfiles) { if (file.ToLower().Contains(getfile.ToLower()) && !text.Contains(file)) {if (!file.ToLower().Contains(deletefile.ToLower())) text = text + file + "\r\n"; }}}} ○のみを抽出したい。 2009/07/04 19:41 597 01.txt.lnk ○ 2009/07/02 11:48 573 124642979292o.jpg.lnk ○ 2009/07/04 22:22 482 1553ea4.jpg.lnk ○ 2009/07/01 00:55 567 2009_0701twitter.txt (2).lnk 2009/07/01 00:49 567 2009_0701twitter.txt.lnk ○ 2009/07/04 17:32 750 Program.cs.lnk 2009/07/02 17:33 579 SimpleBrowser.lnk なのに、出力結果には、 Program.cs.lnk が含まれたりします。 アドバイスお願いします。
静的メソッドからフィールドにアクセス出来ない理由がようわからん(´・ω・`) C++ならできたはずだが・・・
>C++ならできたはずだが・・・ いや、それはない。 まあ引数にthisを渡すなら出来なくはないけどね。
>>435 読ませる気無いだろこのコード
処理を二回に分けて考えたほうがいい
List<string>でも用意しておいて
まずfilesの中からgetfilesを持っているのをList<string>に格納する
その後そのListからdeletefilesが含まれているのをtextに追加していく
そういう処理のチェーンを簡単に書けるのがLinq
>>436 インスタンスメンバにアクセスできたら、静的メソッドじゃないじゃん。
静的メンバってのは、そのクラスの全インスタンスで共有されるんでしょ。
(´・ω・`)ヤダ
>>440 それじゃ静的メソッド内で一時的に変数に値を保存しておきたいときとかどうするの(´・ω・`)?
>>442 静的メソッドでそういうのするのは極めて不穏だが
静的フィールドに格納すればいい
>>442 状態を保存したいなら
引数で渡すようにするか、静的メソッドやめてインスタンス変数に格納しろよ。
445 :
デフォルトの名無しさん :2009/07/05(日) 20:29:31
状態持っちゃって呼び出す度に結果が変わったりしたら実質的に静的とは呼べない
>>445 状態を持たないという意味で用いられる用語は「静的」ではなく「純粋」。
なんだそれ
>>446 C#2008の仕様ではインスタンス化のタイミングは定義されてないけど、
現実には実行開始時でいいんでないの?
そういうツッコミじゃなくて?
失礼します C#で帳票作成するとき皆さんどうしてますか グレープシティーのActiveReportsですか それともクリスタルレポートですか それともSQLSERVERについてるレポーティングサービスですか それともジャイブレポートですか それともExcelとかPDFにはいてます? 無料ならPDFなんですかねえ? どうなんでしょう お勧めありますか
iText で PDF 作ってる。
452 :
デフォルトの名無しさん :2009/07/05(日) 22:31:57
>>446 初めてそのクラスを使おうとしたときに静的メンバが初期化されることが多い
言語仕様上は、「使う前には初期化されていることが保証されている」だけ
>>449 そもそもインスタンスなんて作られない。
それとも別のものをインスタンスと言ってるのか?
Typeとか?
>>450 ReportingServiceはお勧めしない。
素直にActiveReports使った方が良い。
ActiveReports買いたいけど会社が買ってくれないので itext調べてみます く^^
457 :
デフォルトの名無しさん :2009/07/06(月) 04:11:13
vc#保存したやつ開けないんだけど、なぜだorz
>>435 を
>>439 の方針で匿名メソッドでやってみた。かなりきもくなった。
// OKワードのどれかを含む要素を配列strsから取り出すメソッド
string[] selectOK(string[] strs, string[] OKwords)
{
return Array.FindAll(strs, delegate(string s) {
return Array.Exists(OKwords, delegate(string word) {
return s.IndexOf(word, 0) >= 0; }); });
}
// NGワードのどれかを含む要素を配列strsから取り除くメソッド
string[] deleteNG(string[] strs, string[] NGwords)
{
return Array.FindAll(strs, delegate(string s) {
return Array.TrueForAll(NGwords, delegate(string word) {
return s.IndexOf(word, 0) < 0; }); });
}
↓
string[] deletefiles = {〜};
string[] getfiles = {〜};
string[] files = Directory.GetFiles(〜);
files = selectOK(files, getfiles);
files = deleteNG(files, deletefiles);
Array.HogeHogeなんていう化石メソッドの嵐やるぐらいならLINQで書こうよー
LINQおそいじゃん
え?
LINQ書く奴ってなんでテスト端折る奴ばかりなんだ?
え?
Recentの中身なんて10000ファイルあるわけでもなし。
その遅さは致命的だな。
一体何ファイル処理するおつもりで。 500万ファイルくらいかな?
>>466 うん、致命的だから使わなければいいと思うよ
俺は10%の高速化より、コーディング時間1/3の方を取るけど
テストまで1/3にしないでください。
LINQは書きやすいけどデバッグしづらいよ 皆どうしてんだろ
お前ら初心者用スレで何の話してるの? 本職はマ板にでも消えてくれ。
は?
ん?
こ?
お?
ち?
forループを逆アセンブルしたら、まずいきなりループの終わりにジャンプして、 そこでカウンター値をチェックしてからループの入口にもう一度ジャンプして 1回目の処理を開始するというコードになってて吹いた。 てっきり、もっと効率のいいコードを吐いてるもんだと思ってたのに。
>>478 ILの出力であればそんなもんでは、CPUごとのカスタマイズはJITの仕事だし
コードは完成してからベンチしろー。 完成前にあれこれ考えるな時間の無駄だー。 ってスティーブ・マコネルが言っていたよ。 不必要な高速化にかまける馬鹿が多いってさ。 だったらその時間使ってテストしろボケ。
たしかに、アセンブラのLOOP命令は基本的にループの終わりでECXをチェックするから、 JIT通すと最適化されるんかな。
色々なCPUに対応するには、不用意に情報を取り除きすぎないようにしないと、高速化のヒントまで削ってはダメだからな
return return; のようなことはできないの?
意味が分からない
リンダリンダみたいな感じ?
Return to Myself しない、しない、ナツ
return @return; なら記述可能だな ただのネタだが
アセンブラならできるけどC#なら無理だな。 そういうスパゲッティコードを書きたいならC、C++使え。
C#のバージョンについて教えてください。 ttp://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ ここからC#をダウンロードしました。 これは特定のバージョンのコンパイラなのでしょうか? それともどこかで設定できるのでしょうか? またバージョン間の互換性はどうなっていますか? 1.0用のソースは2.0と3.0で、2.0用のソースは3.0でも問題無くコンパイルできるのでしょうか? 自分でも調べてみましたがコンパイラのバージョンなどがヒットしてしまいよくわかりませんでした。 よろしくお願いします。
C#と.NET Frameworkとで二つの側面があるが C#は今のところ後方互換性はほぼ完全に取れてる マルチバージョン対応なC#コンパイラは今のところ存在しないけど、 後方互換によって新しいコンパイラは古いバージョンのソースコードをコンパイルできる .NETの標準ライブラリもソースレベルではまず問題ない Obsoleteになったのもあるけど廃止になったのは記憶にない .NETは1.x系と2.0/3.0/3.5系(と今ベータ中の4.0)がある 3.0/3.5は2.0の追加ライブラリ的存在 VC#2008は開発ターゲットに.NET 2.0/3.0/3.5を選択できる C#3.0は.NET3.5と同時公開だが、C#3.0コンパイラで.NET2.0の開発もできる(というかVC#2008がそうやってる) ただラムダ式みたいな言語の機能はそのまま使えるが System.Linq名前空間下のクラスとかは.NET3.5で追加されたライブラリなので.NET2.0開発時には使えない
詳しい説明、どうもありがとうございました。 とてもよく理解できました。
使用しているパソコンのCPU使用率を取得するためにはPerformanceCounter以外にも方法はありますか?
めんどくさい。ない。
WMI 使って Win32_Processor クラスの LoadPercentage 取って来れないかな? めんどくさい。だな。
TypeBuilder.DefineProperty で動的にプロパティを生成しているのですが、 [Description("アアア")] public int MyProp{ ... } や、 [Category("イイイイ")] public int MyProp {...} などの属性をつけたいときはどうすればよいのでしょう?
SetCustomAttribute
498 :
デフォルトの名無しさん :2009/07/09(木) 07:13:45
panelコントロールとgroupboxコントロールに違いに、 「キャプションを表示するかどうか」 という内容がありますが、 どういう意味でしょうか? ラジオボタンを配置してもラベルは表示されますし、 「キャプション」が何を指すかが分かりません(+_+)。 よろしくお願いします。
GroupBoxそのもののTextプロパティを表示するエリアがあるかどうか グループで括ると左上に名前が出るだろ
500 :
デフォルトの名無しさん :2009/07/09(木) 08:47:07
>>496 まだやってんのか
いい加減そんな不毛なこと止めてグリッド使ったらどうだ
>>497 どうもありがとう!!
>>500 グリッドだとだめなんですよ.グリッドでプロパティグリッドを代用しようとすると、
列方向にプロパティ一覧(列によって型が異なる)、行方向に、オブジェクト一覧みたいなかんじになりますよね。
編集するオブジェクトはつねに1つでいいんです。
そうすると、常に1行で、編集可能なプロパティの数だけ列が存在する事になってしまいますよね(ヘッダ除く)。
オブジェクト1個に対して20のプロパティが存在するなら、
1行20列(ヘッダ除く)のとても使いにくいデータグリッドになります。
この場合、20行1列にしたい(ヘッダ除く)
グリッドの、行と列の機能を入れ替えられれば良いんですが、
C#の勉強をちょっとしてみたいのですが、 まずはじめに、何と、何と、何を ダウンロードすればいいですか?
VisualStudio 2008 Express EditionとVisualStudio 2008 Express EditionとVisualStudio 2008 Express Edition
それはwindows2000でも動くのですか?
505 :
デフォルトの名無しさん :2009/07/09(木) 12:39:12
2000とか話にならない 最新のバージョンの.NETを使って作られたアプリケーションを動かすことすらできない
ネタでなくて、マジで2000だと開発できないの?
ネタではなくて、マジでサポート切れのOSで何しようって言うの?
できるよ
509 :
デフォルトの名無しさん :2009/07/09(木) 12:46:07
.NET2.0までなら2000でも可能だけど旧バージョンの無料のVS2005は提供終了 XPを買うか、VS2005を買うか、テキストエディタとSDKで頑張るか
>>508 2000の場合は、何をダウンロードすればいい?
511 :
デフォルトの名無しさん :2009/07/09(木) 12:57:59
>>509 2008の一番グレードの低いやつは無料でゲットできなかったっけ?
できるよ
できるけど2000(笑)にはインストールできない
>>496 ,
>>501 SourceObjectからTypeDescriptor.GetProperties()でプロパティ記述子リストを取得。
名前を第一列に、値を第二列にバインドすればいいんじゃ?
WPFでなら軽く作ったことがあるがそこまで難しくないし、というか知識ゼロからTypeBuilderの方がよっぽどきつい。
516 :
501 :2009/07/09(木) 14:31:11
ん?それってもしかして 第1列はすべて読み取り専用文字列にして、 第2列は、行によってチェックボックスだったり、コンボボックスだったり、 テキストエディタだったり、というふうにできるということですか? だとすれば次につくるエディタはぜひそれでつくりたい。。。。 P.S とりあえず、動的なクラス+プロパティ生成によるプロパティグリッドの利用は、 これでほぼ思い通りにできるようになりました。どうもありがとう
>>503 VisualStudio 2008 Express Editionなんて無いよ
一連の流れを見てたらゲシュタルト崩壊してきた
できるないないあるよ
最後のsが抜けてるとかスペースが足りないとかってレベルの揚げ足取りじゃない? 正確な製品名は ○ Visual Studio 2008 Express Editions × VisualStudio 2008 Express Edition らしいから www.microsoft.com/japan/msdn/vstudio/express/
522 :
デフォルトの名無しさん :2009/07/09(木) 18:25:58
Windows XP
Visual Studio 2005 Professional Edition
.Net Framework 3.0を使いたいので
ttp://msdn.microsoft.com/ja-jp/library/cc825663.aspx を参考に
Windows Vista™ および .NET Framework 3.0 ランタイム コンポーネント用 Microsoft® Windows® Software Development Kit
と
Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation) - 日本語
をインストールしたのですが、
vs2005で.NET 3.0でビルドする方法がわかりません。
教えてください。
止めてくれ。精神を害しそうだ。
>>522 .NET 3.0で開発するためにVS 2008が発売されてるんだ。経緯を考えてくれ。
Hackすればできないことはないという記事を見かけたことはあるが非常にお勧めしがたい。
メッセージについて勉強中。 PeekMessageでメッセージを受信したらTranslateMessageとDispatchMessageを セットで呼んでおくのがお約束、みたいな解説を見たんだけど、 自前で処理するだけのユーザー定義メッセージにはどちらも必要ないよね? まだ理解が浅いおかげて、今ひとつ確信が持てないんだけど。
>>525 普通はWndProcをoverrideするだけで十分。
>>526 あ、なるほど。言われてみればそうですね。
>>522 .NET 3.0は単なる追加ライブラリだから
参照の追加で必要なアセンブリ参照するだけ。
WPFのデザイナが使いたいとかならそのページにあるように
もう提供されてないから無理。
529 :
デフォルトの名無しさん :2009/07/10(金) 08:35:34
>>524 ,
>>528 レスありがとうございます。
>.NET 3.0は単なる追加ライブラリだから
>参照の追加で必要なアセンブリ参照するだけ。
そういうことだったんですね。
勘違いしてました。ありがとうございました。
enumにintしか入らないのがむかつく
こらえてくだされ
>enumにintしか入らない ?????
整数型と言いたいんじゃないのか。たぶん。
mscorlibのmsってなんですか?
マイクロソフト
MicroSoft COmmon language Runtime LIBrary でmscorlib
core library かとおもってた
538 :
デフォルトの名無しさん :2009/07/11(土) 17:46:59
はじめまして。 スプリットコンテナーですが、 上下の分割はできないのでしょうか。 ご存知の方、よろしくお願いします。
Orientationプロパティ
>>536 mscorlibのCORは、CLRの初期の名称だったComponent Object Runtimeの略。
もちろん、次世代COMとして名前も中身もCOMの影響を受けていて、その思想は現CLRに受け継がれている、
というようなこと、何の本で読んだか思い出せないけど。
541 :
デフォルトの名無しさん :2009/07/11(土) 18:38:39
上、下、左、右、中央にpanelを置いており、 全てにスプリッターを入れたけど、 1つしか動いてくれません(+_+)。 何かコツはありますか?
542 :
デフォルトの名無しさん :2009/07/11(土) 18:40:00
>>539 ありがとうございますっっっ!!!!!!!!!!!!!!!!!
>>541 いきなり5分割じゃなくて上中下の3分割から練習する
544 :
デフォルトの名無しさん :2009/07/11(土) 23:30:08
545 :
デフォルトの名無しさん :2009/07/11(土) 23:39:40
treeviewを作っています。 ノードを選択したとき、初期設定では青色に反転しますが、 反転しているときに、文字が縦に中央揃えになっていません。 この縦位置を中央に指定する方法があれば教えていただけないでしょうか。
546 :
デフォルトの名無しさん :2009/07/12(日) 01:12:59
sxa
547 :
デフォルトの名無しさん :2009/07/12(日) 01:43:45
勝手にくるくる動いたらウザくない?
549 :
デフォルトの名無しさん :2009/07/12(日) 13:00:08
vsのツールウィンドウみたいに、 画面の左右にタブを出して自動的に隠すことってできますか?
550 :
デフォルトの名無しさん :2009/07/12(日) 13:26:29
docpanel suite
551 :
デフォルトの名無しさん :2009/07/12(日) 13:52:28
ぐぐれ
553 :
デフォルトの名無しさん :2009/07/12(日) 14:21:55
一番上に出るじゃないか
最悪w
558 :
デフォルトの名無しさん :2009/07/12(日) 14:45:32
すみません。ありました。 yahooで見ていました。
死罪
560 :
デフォルトの名無しさん :2009/07/12(日) 14:49:26
店舗月の売上一覧を作りたいと思っています。 DBから固定項目を単票形式で見栄え良く表示させるには、 何が一番適しているでしょうか。 datagridviewでしょうか。
SQL
562 :
デフォルトの名無しさん :2009/07/12(日) 14:55:13
>>561 SQLそのものが表示コントロールになるの?
ExcelとAccess
564 :
デフォルトの名無しさん :2009/07/12(日) 14:58:38
既存のC#アプリのpanel内に新たに表示させなければいけないんです。
じゃあDataGridViewで良いんじゃないかな
566 :
デフォルトの名無しさん :2009/07/13(月) 20:35:02
DataGrid にはカラム名の上に、CaptionText という タイトル名を表示するエリアがあったのですが DataGridView にそれらしきプロパティが見つかりません。 DataGridView では CaptionText に相当する機能は切捨てられたのでしょうか? よろしくお願いします。
DataGridは複数の階層状テーブルを表示する機能があったから必要だったけど DataGridViewは単一テーブル表示になったから不要になった
>>567 そういう経緯があったんですか
ありがとうございます
Application.Idleにイベントハンドラを登録してディスプレイの毎フレームごとに処理を行うように 作っているところなのですが、 アプリケーションがアクティブなときは問題ないものの、(毎秒60回呼び出される) アクティブでなくなったときは20フレーム程度まで落ちてしまいます。 これを回避する方法はありませんでしょうか?
>>570 呼び出す方法を変えるとしたら、どのような方法が挙げられますか?
>>571 タイマーを使うとか、きっちり画面に同期させたいならDirectXを使うとか
>>572 タイマーでは50ms程度の精度しか出ないので60フレーム(16ms)レベルの処理では使えません。
ずばりDirectXを使用しているプログラムです。
リフレッシュレートが60Hzを超えているディスプレイでも秒間60フレームを維持できるようにしようと考えています。
DirectXのフレーム同期では、結果としてリフレッシュレートに同期することになると思うのですがいかがでしょうか。
>>573 APIで用意されているタイマーには種類がいくつかあって、約55ms間隔のもあるけど
もう少し速い約16ms間隔というのもある。
で、DirectX使ってるのに同期すると困るの?
その手のリアルタイム処理は標準的なメッセージループと相性があまりよくない だからそこ弄るか素直にそういうことやってるの使うと吉
時間測って、必要に応じて中で何度か更新処理だけ繰り返せばいいだろ 描画のタイミングさえあっていれば、更新処理自体は別に等時間間隔で呼び出す必要はないんだから
質問内容については自己解決しました。
アクティブでないときに50msのウェイトをかける処理が残っていただけでした。
>>574 興味深いですね。そのような精度のタイマー(System.Timer)があるんですね。
System.Threading.Timerとは使い方が微妙に違うようです。
今回は結果として必要なくなったのですが、また必要になったときに詳しく調べてみることにします。
どうもありがとうございます。
>>576 ほかのウィンドウメッセージと同期的に動かさないといけないので、(フルスクリーンモード切替とか)
他のスレッドを立ててまわすのはまずいんです。
まあ、やってできないことはないんですけどね。
WebBrowser.NavigateToString メソッド が使いたくてソリューションエクスプローラー参照の追加で PresentationFrameworkを追加し、namespace WindowsFormsApplication1内に using System.Windows.Controls; と記述しても 「'System.Windows.Forms.WebBrowser' に 'NavigateToString' の定義が含まれておらず、 型 'System.Windows.Forms.WebBrowser' の最初の引数を受け付ける拡張メソッドが見つかりません でした。using ディレクティブまたはアセンブリ参照が不足しています。」 とエラー表示されて使用出来ません 同じ名前空間とアセンブリのWebBrowser.Navigate メソッドは問題なく使えるのですが 設定の仕方が間違っているのでしょうか?
System.Windows.Controls.WebBrowser使わないと駄目だぜ でWinForm上で表示するならSystem.Windows.Forms.Integration.ElementHostが必要
つかHTMLを表示したいだけならSystem.Windows.Forms.WebBrowserでもDocumentTextとか使えば良いんだが…
>>578 自前でループ書き、メッセージ処理はApplication.DoEventsで処理させるというのはどう?
>>580 System.Windows.Forms.Integration.ElementHostが必要ということでまだそれを理解するには時間がかかりそうです
勉強してみます ありがとうございました
>>581 .WebBrowser1.DocumentText = "test";
と書いて表示する事が出来ました
ヘルプから調べられるWebBrowserメンバでtextとかstringで検索しても出てこなかったので
あることすら知りませんでした ありがとうございました
Windows.Formのクラスが Form1.cs Form2.cs Form3.cs : : とあってそれらフォームのタイトル、Textを取得することはできますか? リフレクションでクラス名は取得できたんですが。 そのクラス名からActivator.CreateInstance()してTextも取れるんですが、 どうにも遅いです。 簡単に速い方法があったら教えてください。
ありません そんなものが必要になること自体間違っています まずは考え方を矯正しましょう
初心者がリフレクションを使う場合、本当は必要ないことがほとんどだ。
あらかじめ(静的に)FormのタイトルとTextを格納したデータを持てば?
588 :
デフォルトの名無しさん :2009/07/16(木) 00:14:51
if(hoge==null){return} if(hoge!=null){...} nullチェックってどっちがいいんでしょうか?好みでいいんですね?
>>588 nullかどうかの問題じゃなくて、
if-else は短い方から書けっていう格言があったりする。
590 :
デフォルトの名無しさん :2009/07/16(木) 00:28:35
APIを利用する為にテキストボックスに入力されたテキストを constにする必要があるんですがどうすれば良いでしょうか?
>>589 ありがとうございます。
そんな格言があるんですね。いつも長い方から書いていた。この場合は前者を使用すべきですね。
>>590 ちょっとそのAPIのDllImportしてるところ書いてみろ
>>592 DllImportしてるなんて微塵も書いてないが…
じゃあどうやってAPI呼んでるんだ?
「APIを利用」とは何の事だよ
LoadLibraryとGetProcAddressをDllImportして 関数ポインタにMarshal.GetDelegateForFunctionPtr使ってデリゲート取得してAPI呼んでるとか?
>DllImportしてるなんて微塵も書いてないが で、してるの?してないの?
APIを常人とは違う意味で使っているに10ゲイツポイント
APIと言っただけで、Win32APIと言った訳ではないしね
それがどうした
APIはDLLだけだと思ってる人があらわれた!
あらわれなくていいよ
もう逃げたってば
WebAPIの類とか・・・ そんでもTextBox.Textがほにゃららの件は意味分からんけど
const char*の引数を持つAPIに stringを渡したいけどどうすればいいかと 聞いてるだけとか んで書き込んだ直後に解決してほったらかし
593が要らん突込みをしなければこんな伸びなかったな。
みんなこれくらいなら答えられそうだと思っててうずうずしてるんでしょ
C#ってフリーの開発環境あるんですか?
まずフリーの意味をだな
>>612 MONOというものがあるので使ってみたら?
フリーの開発環境・・・VisualStudioExpressEditionとSharpDevelopがあるが。
emacsでいいよ
へぼすぎて却下
emacsって、慣れてる人には良いんだろうけど、 とても俺には向いてない。
スクリプト言語ならともかくC#でemacsはかえって損だろw
>>603 どのあたりが噛まれてるんだ?
一方的におまいがプッツンしてるようにしかみえん
>>619 >どのあたりが噛まれてるんだ?
>一方的におまいがプッツンしてるようにしかみえん
↑こういうのが 噛みつく って言うんじゃね?
おまいもプッツンしてるようにしかみえん
いいからもう失せろよゴミ君
してないよチンカス君
「プッツン」って懐かしいなw
グリコが作ってるプリンだっけ
それプッチンや
>プッツン・ゴミ君・チンカス君 言葉の選び方が古臭いのは何でだろう。書いてる人の年齢が気になるw
IDありなら真っ赤な奴がいるな 単発のフリもしてそうだな
今、入力チェックの勉強中。
Validatingでやるのがいいようだけど問題もいろいろあるみたいで悲しい。
いまいちValidatingが発生する条件が分からん。
TextBox1にいてフィールド移動するとなぜかTextBox5のValidatingが発生したりする・・・
その時はTextBox5でエラー値入れてESCキャンセルでTextBox5のValidatingをスキップするようにしてTextBox1にフォーカス移動してる。
スキップはここ参考にした。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29042&forum=7 で、TextBox1からフィールド移動するとなぜかTextBox5のValidatingが発生・・・
VS2003だけど古いから変なのかな?
マシン古いからVS2003でも遅いぜよ(Delphi2007はさくさく動いてるけど)
XmlDocument doc = new XmlDocument(); doc.LoadXml("file.xhtml"); こんな感じで、DOCTYPE宣言のあるxhtmlを読み込んでみたんですが、 たかだか4kくらいのファイルでも1分はかかってしまいます。 こういう仕様なのでしょうか。
外部エンティティとか使ってない?
>>633 仕様じゃしょうがないよね。
イベントの発生順序はコントロールできないから、
グローバル変数に状態を覚えておいて
自前で制御ってのはよく使う手。
[DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)] static extern Int32 recv( Int32 s, IntPtr buf, Int32 Len, Int32 flags); こんな風にしてDLLを直接呼び出すんだけどwsock32.dllの方も同時に使いたい場合はどう書けばいいの? 例えばwinsock32の方はrecv1でws2_32の方はrecv2で呼び出せるようにしたい 直接呼び出すことに意味のあるプログラムなんで、他に便利なクラスがあるだろとか 片方だけ使えとかそういうのは無しの方向でお願いします
[DllImport("wsock32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)] static extern Int32 recv1( Int32 s, IntPtr buf, Int32 Len, Int32 flags); [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)] static extern Int32 recv2( Int32 s, IntPtr buf, Int32 Len, Int32 flags);
[DllImport("wsock32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall, EntryPoint="recv")] static extern Int32 recv1( Int32 s, IntPtr buf, Int32 Len, Int32 flags); [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall, EntryPoint="recv")] static extern Int32 recv2( Int32 s, IntPtr buf, Int32 Len, Int32 flags);
640 :
637 :2009/07/17(金) 23:22:37
自己解決した
クラス分けるとかって手もあるけどな
AutoElipsis = trueの時にテキストの省略された部分が ...ではなく…になるのは日本固有の領土ですか?
>>643 フォントの問題では?
欧文フォントだと「…」のグリフが、 ... のように下のほうに点が配置されているのはよくあるよ。
実際、MS Sans Serif、TahomaやSegoe UIとかの歴代の欧米のUIフォントも軒並みそうなっている。
とりあえず「日本固有の領土」と関係ないのは確かだw
MS-IMEの変換候補でも下の方に小さい点が並んだやつが出てくる まぎらわしいからやめてほしいんだが
>>481 簡単にいってよー
プロばかりじゃないんだよー
>>647 JITに任せておけば勝手に上手い事やってくれる。 これだけ頭に入れときゃおk
>>643 同じ約物であっても言語によって組み方が変わるのはよくあること。
Winsockで作ったSOCKETをSocketクラスに割り当てることって出来ますか?
「SafeFileHandleを引数に取るFileStreamコンストラクタのようなもの」のソケット版が欲しいということだろう。
List<string> hogeA の中身 c:\temp\01.dat c:\temp\02.dat c:\temp\03.dat c:\temp\04.dat c:\temp\05.dat List<string> hogeB の中身 01.dat 03.dat 05.dat hogeAのうち、hogeBに含まれない c:\temp\02.dat c:\temp\05.dat を残し、これをあらためてhogeAとしたいです。 これを実現するにはどのようにプログラムを組めばよろしいでしょうか?
1. hogeA の要素を列挙する 2. 各要素が hogeB に含まれているか判断する 3. 含まれていなければ、 hogeC に追加 4. これを繰り返す 5. hogeC を hogeA に設定
hogeB に含まれてたら、hogeA から削除、って方がわかりやすいね。
2重のfor文を回す必要があるというわけでしょうか?
>>657 突き詰めればその通り。
List<T>.ExistsとかEnumerable.Exceptで見た目上のループは減らせるけどな。
この辺の繰り返し処理はプログラミングの基本の基本。便利なライブラリの機能に お任せしちゃうのではなく、一度は自分で実装してみることをお勧めするよ。
そして一度実装したあとは、ライブラリの機能のほうを使うようにすべき、だね。
バーで繋いで正規表現にする方法もあるな。あまりお勧めは出来ないが。
662 :
653 :2009/07/19(日) 23:08:25
removeAllメソッドを使って除去しようと試みました。 for (int i = 0; i < hogeB.Count; i++){ hogeA.removeAll( delegate(string s) ); }
663 :
653 :2009/07/19(日) 23:10:26
失礼、途中で投稿してしまいましたorz・・・ removeAllメソッドを使って除去しようと試みました。 for (int i = 0; i < hogeB.Count; i++){ hogeA.removeAll( delegate(string s) { s == @"c:\temp\" + hogeB[i]; } ); } ただこれだとコンパイル時にエラーが発生してしまいました。 どこか書き方に間違いでもあるでしょうか?
エラー読めよ
665 :
653 :2009/07/19(日) 23:20:54
最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 匿名メソッド' から 'System.Predicate<string>' に変換できません。 割り当て、呼び出し、インクリメント、デクリメント、および新しいオブジェクトの式のみがステートメントとして使用できます。 表示されているエラーはこの3つでした
匿名メソッドの戻り値が明示されていない returnをしてないし
667 :
653 :2009/07/19(日) 23:38:18
>>666 そういうことでしたか( ̄□ ̄;)!!
for (int i = 0; i < hogeB.Count; i++){
hogeA.removeAll(
delegate(string s)
{
if ( s == @"c:\temp\" + hogeB[i] )
return true;
else
return false;
}
);
}
で、ひとまずはビルドは通ったようです。
これで様子を見てみます。
ありがとうございました。
ちなみにこれよりもっとスマートな記述方法はあると思いますか?
ベースは C#2.0 + .Net Framework2.0 ということで。
.NET 2.0はともかく、C#2.0はもう捨てようよ。
return (s == @"c:\temp\" + hogeB[i]);
3.0 removeAll( (s)=>(s == @"c:\temp\" + hogeB[i]) );
671 :
653 :2009/07/19(日) 23:48:52
略記って…… おまえが勝手に複雑に書いてるだけだろ……
低品質なスレですね
>>671 2005 でも LINQ 使えるようにできるだろ
すまん LINQ じゃなくてラムダ式か
>>674 2008で.NET 2.0対象のときでもラムダ式を含むC# 3.0の構文が使えるということとごっちゃにしていない?
>>671 Expressでいいからとっとと2008にすべき
678 :
653 :2009/07/20(月) 02:12:39
>>674 2005じゃλは使えない気が(;・∀・)・・・
hogeBのループはforじゃなくてforeach使うべきだね
JITなんだジットってもー 地頭か?何だ?簡単に頼むよ
λ...... ザッザッザッ… λ...... λ......λ...... λ...... λ...... λ...... λ......λ...... λ...... λ...... 樹 λ...... λ...... λ......λ...... λ...... λ...... 海 λ...... λ......λ...... λ...... λ...... ← λ...... λ......λ...... λ...... λ...... λ......λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ......トボトボ ザッザッザッザ…
C#2,0捨てようとかアホか。 ラムダ式なんて無理に使う必要ねーよ。
ラムダ式をありがたがる心理って簡潔至上主義だと思ってるが、どうなんだろ。 簡潔さ以外にメリットある? そして簡潔さによる保守性低減のトレードオフって収支は本当にプラス?
685 :
デフォルトの名無しさん :2009/07/20(月) 10:21:06
>>684 2chスレのラムダ支持層レベルだとトレードオフにはならないね。
無駄に使いたがる印象しかない。
>>684 遠く離れたところに1行関数を作って呼ぶよりも、ラムダにしたほうが簡潔で保守性は良くなるね。
それ以上に凝るのは趣味の世界だね〜。
>>684 その場に処理書かないとかえって見づらい場合ない?
1・2行だけDispatcher.Invokeしたいときとか、
変換テーブル作りたいときとか。
要するに↓みたいな。
Dispatcher.BeginInvoke(() => { OutputText.Text = hoge; });
var table = new Dictionary<string, Func<int, int>> {
{ "TypeA", x => x * x },
{ "TypeB", x => Math.Abs(x) },
...
LINQ の仕組みにはラムダ必須だし、 あと、ローカル変数をキャプチャしたい場合、 ラムダ(というか匿名デリゲート)がなかったら わざわざinnerクラス1個書かなきゃいけなくなるしねぇ。
>>686 デリゲート使えば遠くに関数作る必要はない。
匿名メソッドで済むって話でそ。 まあ最初からラムダが使えれば匿名メソッドはあんまいらんけど。 濫用するような話とはまた別ね。
あー、() => {} 構文じゃなくて delegate(){} 構文使うのじゃダメかって話か。 あれもでも、C# 開発者曰く 「ラムダを先に導入してたらdelegate構文なんて用意しなかった」 って言ってるしなぁ。
{}で囲めばラムダでも複数のステートメントもreturnも書けるから実際匿名メソッドは要らない 匿名メソッドの唯一のメリットはパラメータを省略できることだけど、 それだけのために表記のゆらぎを許す価値があるかどうか
そのうちMSがガイドラインで何か言い出すんじゃないかと思ってる
λ式のトレードオフを語っている割に、デメリットが出ていない気がw
delegateより視認しにくいくらいじゃねえの
言語の方向性として、関数型を取り入れていくよと明言されてるわけで わかりにくいとかいうのは無意味だな
構文の親和性の低さによる視認性の悪さもあるけど 引数の型を省略できることの分かりづらさってのはどうなの。
いずれにせよ、初心者用スレで延々と語る話じゃない。
キャプチャ周りの罠は初心者も気をつけるべきだろ
保守性下がるので業務では使えない。
保守性下がるのでC#は使えない。
ラムダ厨はテスト端折るので一緒に仕事したくない。
462 名前:デフォルトの名無しさん[sage] 投稿日:2009/07/06(月) 20:59:27 LINQ書く奴ってなんでテスト端折る奴ばかりなんだ? 469 名前:デフォルトの名無しさん[sage] 投稿日:2009/07/06(月) 21:58:25 テストまで1/3にしないでください。 702 名前:デフォルトの名無しさん[sage] 投稿日:2009/07/20(月) 14:50:59 ラムダ厨はテスト端折るので一緒に仕事したくない。 余程な職場環境におかれておられる様で 無様で惨めだな
職場とか業務でどうとか言われてもねえ…。 ここ初心者スレだし、「そうですか。おつかれさまです」としか言いようがないな。 それともあれか?報われないのを褒めて欲しいのか? そういうのはマ板でやってくれよ。
3.0仕事で導入してるのってどんぐらいなんだろうな 今はまだ2.0のほうが意思合わせ楽そうだけど
>>704 どこの初心者スレも似たようなもんだけどな
javaスレとか
明らかに底辺ドカタのストレス発散場になってる
そんなことをしていてもお前の暮らしは向上しないのにな
独立すりゃいいのに
ラムダスレとか建てても、結局初心者スレを荒らしに来るから意味なし。
弱い者達が夕暮れさらに弱い者をたたく構図ですね、わかります。
c#はまだおわらんよ!でもVCのほうも同じぐらい力入れてくれるとありがたいです;;
C#でWindowsコンポーネントを使わないUIってどうやったら作れますか? 情報が載ってる本かサイトを教えてもらえると嬉しいです。 例えば、Mac風デザインのような感じです。
>>711 GUI ツールキットを使うことになるんだろうけど、あんまりないなぁ。
Qt は使えるんだっけ。
WPFだろ デザインは自由自在
WPFってガワ部分は変えられないんですか?
ガワ?
最大化や閉じるボタンなどがある枠です。 その内側では何でもできそうな感じで、かなり素晴らしいのですが。
ウィンドウの枠を非表示にしてそれっぽいのを自分で描く
>>717 なるほど。WPFをMSサイトで勉強してきます。
参考になりました。ありがとう。
719 :
デフォルトの名無しさん :2009/07/20(月) 17:10:08
入門書でC#の基礎文法を一通り勉強しました。 しかし、今までスクリプター(Perl, JavaScript, Ruby)で、 GUIアプリケーションの制作経験は皆無であるため、 Visulal Studio でGUIアプリケーションを作る方法がよく理解できません。 何となくならいじれるのですが、体系的に勉強するにはどうするのがオススメでしょうか?
>>719 畳の上の水泳より、下手でもとにかく水の中で泳ぐほうが学習効率高いんじゃない?
GUIは特にそうだと思うけど。
(必要なら)体系的学習は後追いでもできるし。
>>720 入門書は全てcsc.exeを使ってコンソールで作業していたので、
まずは、チュートリアル的なサンプルアプリケーションを何個か作りたいんですよね。
広く浅くでいいので、VSおよびGUIアプリ制作を把握したいのですが、
MS公式の解説書は何だかMSDNチュートリアル同様で、入門の入門という感じだし、
他の入門書は、VSについてほとんど書かれていないしで困っています。
訳分からなくてもとりあえず慣れるがベストなのかなぁ? やはり。
フォームに手当たり次第にコントロール貼りまくって適当に連動させてごらんよ 方向性は決めなくていいから
どのコントロールでどんなことができるか、を一通り確認するくらいかなぁ。 具体的な実装は、システム要件に応じて考えるし。
>>721 C#でcsc.exeを使わせる入門書って、なんて悪書?
MSの公式解説書だろ C#できると言ってcsc.exe使えないなんて話もあるまい
>>724 独習C#です……。プログラミングC#は、最初からは敷居高いかなと思って。
cscのオプションなんて覚えてもいないぜ。
あんなもん立ち読みでいいのに
泳げないやつは沈めばいい
プログラミングC#が敷居高いって絶対読んでなさそう GUIオンリーだった俺はRonRやってるがスクリプトわけわかめw
delegateとかもうちょっと綺麗に実装出来なかったのかね
例えばどういう風に?
例えばキーワードを省略してdelにするとか
delだとdeleteの略みたいになるから却下
もうちょっと綺麗に実装 → 省略してdelに wwwwwwwwwwwwwww
俺の知ってる英単語を使ってくれ デレゲートなんて意味がわからんわ
普通にクラスポインタみたいなのを残せばいいのに なんでいちいち全部の関数のdelegateを定義して呼ばないといけないんだ
tsun-dele
tsun-delete
>>734 キーワードの省略は最悪。
Unix 系のライブラリとか、ときどき見れたもんじゃないのがある。
C# は省略形のキーワード1つもないでしょ。
>>738 型安全性のため。
タイプセーフはデリゲートの目的であって理由じゃない そうなると別にどういう構文でもタイプセーフなら良いことになるでしょ 実際にそうなってるしね
複数のファイルを連結する方法を教えてください。 下記のようなことって、C#だとどう書くんですか? ひとつひとつFile.ReadしてFile.Writeしないとだめですか? copy file01.txt+file02.txt+file03.txt+file04.txt newfile.txt
C#で製品を作ってる会社はexeを暗号化してるんでしょうか? ソースコード丸見え・・・
>>745 File.ReadAllText()で読んでFile.AppendAllText()で追加してけば楽なんじゃない
使ったことないけどw
今時はライセンスで縛るから丸見えでもどうでもいいのです 難読化くらいはしてるかもね でも初心者には関係ないよ お前のコードなんてわざわざ見る気にもならないからね
>>747 やっぱりそれしかないんだ…。
配列に配列を追加するにはどうしたらよいですか?
copy file01.txt+file02.txt+file03.txt+file04.txt newfile.txt
string[] keywords = File.ReadAllLines("file01.txt");
keywords = keywords + File.ReadAllLines("file02.txt");
keywords = keywords + File.ReadAllLines("file03.txt");
keywords = keywords + File.ReadAllLines("file04.txt");
とかで追加できるんですか?
どの言語でも初心者が一番初めに気にする所だよな。 「ゲームは作れますか?」と「中身の暗号化できますか?」は。 少なくともそんなことを聞かなきゃ分からない内は全く関係のない話だ。
>>749 配列ってさあ
string[] strArray = new string[]{ "aaaaa" , "bbbbb" , "ccccc" }
こう書けるのは分かる?
>>749 いくら初心者用スレとはいえ、ぐぐろうぜw
配列の書き方とかならとこにでも書いてあるよ
string newFileName = "d.txt"; string[] fileNameArray = new string[] { "a.txt", "b.txt", "c.txt" }; System.IO.File.WriteAllText(newFileName, String.Concat(fileNameArray.Select((str) => System.IO.File.ReadAllText(str)))); こんなのとか。 某λ嫌いの奴はレスすんなよ。 お前の意見は聞いてないから。
これはひどい。
確かに、保守性0だな。
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
保守厨はマ板行けっつってんだろ
本当に保守保守うるさいのなw。 いいから仕事してろよ。
問20.(25点) Basic言語で記述されたソフトウェアの処理効率を上げるため [ ]レベルで書き直すことにしました。 [ ]内に当てはまる言葉を入れよ。
>>753 それは簡単そうです。
しかしながら、
エラー 'System.Array' に 'Select' の定義が含まれておらず、型 'System.Array' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
とエラーです。
初心者で一番重要なのは保守性の高いコードを書くことだよ。 馬鹿には理解できないだろうけどw
早速、初心者が躓いてるようです。あほコードを参考にしちゃいかんよ。
「マシン語」の回答を期待して叩くつもりなんだろが、 俺はそんな手には引っかからん。 俺の答えは「アセンブラ」だ
ワロタ
>>753 みたいなうんこコードだとバグがあっても初心者にはデバッグできない。
しかも書いた本人も単体テストの項目を列挙できない。まじ死ねよって感じ。
殺せばいい。
769 :
768 :2009/07/21(火) 17:11:42
ごめん誤爆した。
>>758 CPUコアのエミュレーション部分をチマチマ最適化するのではなく、設計からやり直せばいいのに。
と俺は解釈した
CPUコアの持つ機能の6割が過去との互換性のためだけにある機能だから、 互換性を完全に捨てて0から設計し直せばもっともっといいものができる。 と言いたいのでは?
そうかなあ?
さすがに6割ってことはないと思う
Win32-コンソールアプリケーションで、画面に文字列を表示させるときは Console.WriteLine("あひゃひゃ"); というコマンドを使うわけだけど、これだとこの命令文を繰り返し使って表示させると文字列は 画面下から上へ流れていくように表示されてしまう。 そうではなく、画面の最下部に常に表示され、上へスクロールされないようにするにはどうしたら いいんだろうか?
疑問なんですか? 質問なんですか? なんで上から目線なんですか?
C#コンソールアプリでスクリーンバッファに直書きする方法を探せばよいよいよい あるのか知らないけどな!
質問です
えっ?
C#でcursesライブラリを書くんだ Console.SetCursorPosition()さえあれば不可能はない
Console.Write ( not WriteLine )で出力して 次メッセージ出すときにバックスペースで消して再度出力ってやったことはある。
C#?Windowsでしか動かないじゃん
突然何なんだね。
何かで見覚えがあると思ったら案の定だった
785 :
デフォルトの名無しさん :2009/07/21(火) 19:58:30
>>785 「誰かをピクッとさせる発言」っていう釣りらしいからほっとけ
って釣られた後で言っても仕方ないか
反応せざるを得ない。
男なら、たとえそれが釣り針だと分かっていても全力で食らいつくべき
ここまでてんぷれ?
馴れ合うな、とは言わんが(いや個人的にはこういうの大嫌いだが)、 それって楽しいのか真面目な話。
慣れ合ってる奴よりも、慣れ合うなと騒いでる奴の方が鬱陶しい。
794 :
デフォルトの名無しさん :2009/07/22(水) 08:34:59
あるクラスに、いくつかの変数やオブジェクトの参照を渡して、 クラスのメソッド内(ただし、呼び出すメソッドの数は多く、かつ深い) でそれらの値を変更したいと思っています。 できればメンバ変数のポインタにアドレスを格納しておきたかったのですが、 C#ではポインタを使おうとすると制約が多すぎてうまくいきません。 かといって参照にするとメンバ変数に一旦保存しておくということができないので、 値の方だけ保存しておいてメソッド呼び出しの最後で参照に代入するか、 下記のやり方2のように参照をそのまま使っていくか悩んでいます。 int n; // メンバ変数 // やり方1 void Proc1(ref int ref_n){ n=ref_n; n=Calc(n); ref_n=n; } // やり方2 void Proc2(ref int ref_n){ Change(ref ref_n); } 変数・オブジェクトを取る引数が1個や2個ならいいんですが、5つぐらいあるので、 やり方1だと引数が増えるたびにコピー作業が増えてしまいます。 本当ならば構造体(もしくはクラス)にでもしたいのですが、これらの引数達に関連性がないため、 呼び出し元では構造体などにまとめるわけにはいきません。そのため、処理後に 変数それぞれに構造体のメンバ変数を代入していく、面倒なコピー作業が必要になります。 どういう手段を取るのが最善なのか、アドバイスをいただけないでしょうか?よろしくお願いします。
あ、
>>794 で、メソッドのアクセシビリティはpublicでお願いします。
やり方2だと、たくさんメソッドを深く呼び出すわけなので、引数の多さで大変になります。
(また、今後さらに引数を追加する可能性もある)
普通に1でいいと思うが。 てか、Proc1 自体を int Proc1(int) にするのはダメなの?
>>796 例では引数1つでしたが、引数は実際にはもっとたくさんあって、
さらに今後必要に応じて追加される可能性があります。
そうなると最初の「メンバ変数=参照」と最後の「参照=メンバ変数」が多くなって
煩雑になるかも知れない、ということを懸念しています。
どうにかして……ポインタに近い実装ができれば理想なのですが。
>>794 ,797
なんだかすごく設計が間違っているような気がするのは気のせいか?
>>794 プロパティやイベントを使えばなんとでもなりそうな気がするんだが。
どう考えても設計が間違ってるだろ refに頼れるってことはどうせパブリックフィールドだらけなんだろ?
下のようなソースがあったんですけれど、where TModel : class部分って何の定義なんでしょうか? public static string CmsAntiForgeryToken<TModel>( this HtmlHelper<TModel> htmlHelper, Func<TModel, AntiForgeryToken> getToken ) where TModel : class { AntiForgeryToken token = getToken(htmlHelper.ViewData.Model); 以下略
constraint
型制約
804 :
801 :2009/07/22(水) 15:51:24
有難うございます。おかげさまでググれました。
C# where でぐぐれば一発で正解でそうなもんだが、解決したならいいや
806 :
794 :2009/07/22(水) 21:12:17
>>798-800 確かに、設計が間違ってるかも知れませんね…。
パブリックフィールドは極力排除するように心がけているんですが。
どういう設計にすべきか助言をいただけませんか?
ちょっとここにクラス図かいてみろよ
>>807 わかりました。
ただ、公開用のソフトを作っているため、元が長いのをカットする点と、
あまり詳しくは書けないという点はご容赦ください。
骨組みを書いてみたいと思いますので、しばらくお待ちください。
クラス外から見えるメンバにrefなんて普通使わないよね
810 :
794 :2009/07/22(水) 21:55:34
ぐあああああああああああああああああああああ
C言語で書いた方が良いんじゃねえのかとか思った。
そもそもオブジェクト指向じゃないからUMLなんか無意味 間違ってる間違ってないじゃなくて,脳の構造から叩き直さないといけないレベル
手続き型言語脳だな
しまった、クラス図でしたか。間違えてすいません。 クラス図については、これから学んでおきたいと思います。 コードを挙げてしまいましたが、その中で気づいた点があればお願いします。
オブジェクト指向以前の問題として,MainProcみたいな丸投げ関数は典型的なアンチパターン 何をする関数なのかきちんと考えればもっと細かく分けられるでしょ?
>>814 オブジェクト指向を1から勉強し直した方がいいようですね。
気づくいい機会になりました。
>>817 そうなんですかorz 私としてはうまくまとめたつもりだったんですが、
逆に悪い方向へ行ってしまっていたようですね…。
役に立たない回答ばっかだな
そもそもなんでref int ref_scoreが必要なのかわからない どうせグローバル変数(staticフィールドなら実質的には同じだよ)使うなら scoreの値を直接変更すればいいじゃん
そりゃそうだ
823 :
794 :2009/07/22(水) 22:30:16
>>821 グローバル変数と実質同じなんですか…。
呼び出し元にあるscoreをpublic staticにして「呼び出し元クラス.score=○○」としろ、ということですか?
いずれにしても設計が根本的に間違っていたようなので、
オブジェクト指向に沿った設計に作り変えたいと思っています。
オブジェクト指向ではグローバル変数は使うなという教えがある。
別にオブジェクト指向にしたって同じようなもんでしょ ゲームの点数を保持するクラスのインスタンスをただ一つだけ作ってそれを持ち回ることに なるだろうけど,それだってグローバル変数と大して変わらない 形式じゃなくて,実質的な意味を考えようよ 先の問題だって,MainProcを呼び出すためには必ず呼び出し元に点数を保持する変数が 必要になるわけだから,切り離した意味がない
>なるだろうけど,それだってグローバル変数と大して変わらない 全く違う。
点数はキャラクターが持っててもいいような気がするし 当たり判定はキャラクターだけで完結できるような気がした
>>827 ほほう、シングルトンと共通変数の違いのご高説を聞かせてもらおうか?
なんかクセェのが湧き出したな。
当たり判定はキャラクタの外から「神の手」的に一括して行った方が都合が良かったりする
class Program { public event EventHandler<ScoreChangeEventArgs> ScoreChange; public event EventHandler<LetharlHitEventArgs> LethalHit; public event EventHandler<SpEnergyChangeEventArgs> SpEnergyChange; private List<MyObject> objList = new List<MyObject>(); public AddObj(MyObject obj){ objList.Add(obj); } public DellObj(MyObject obj){ objList.Remove(obj); } public MainProc(){ foreach(MyObject obj in objList) { 当たり判定_キャラクター(obj); 当たり判定_飛び道具(obj); 当たり判定_アイテム(obj); } } } シングルトンとかグローバル変数とかは置いといて こんな感じにイベント駆動的にするのはどうか
それだとScoreChangeイベントに依存するクラスは同時にProgramクラスに依存することになるよね じゃあProgramクラスのプロパティでScoreを持っても同じことだよね
あーそうかも、 ただプロパティだとそのプロパティを読みに行く適切なタイミングを知ってなきゃいけない それだけ依存?が増えるという考え方はどうだろう
当たり判定は obj.当たり判定(player) とかにして objを主役にすると見通しが良くなる気がする
>>835 OOP的には普通は逆だと思うよw
Player.HitTest(obj)だろう。
いずれにせよ実際のゲームプログラミングではどっちの方法も取らないと思うけど。
いやメインのインタフェースはplayer.HitTest(obj)だけど、 その中でobj.HitTest(player)を呼ぶんだよ objはキャラ、飛び道具、アイテムとか、MyObjectからそれぞれ派生させたクラスにしておく そしてポリモーフィズムで処理を場合分けする
当たり判定に「ポリモーフィズムで処理を場合分け」なんていらんと思うけど・・・ オブジェクトの領域を表すインターフェイス(IRectangle とかIRegionとかみたいなかんじ) さえ実装されてれば、そこから引っ張れる情報と自キャラの同じインターフェイスとで できちゃうじゃん。
それだと当たった当たってない、しか分からんのではないか?
それが当たり判定ってものじゃないだろうかw 自キャラにバイタリティの概念があって、かつ敵キャラに「ダメージ力」みたいな 概念があることを想定しているのかな? それにしたってポリモーフィズムなんていらんと思うけど。 当たり判定に必要な情報をまとめたインターフェイス(IHitTesteeとか?変かな) さえ実装されてれば必要十分でしょ。
あー当たった場所によってダメージが違う、みたいなケースを想定してるのか? そういう場合なら確かに敵キャラ側に判定を投げる必要があるのかも。 まあゲーム作ったことないからわかんないや。
当たり判定は一方に他方を渡すようなやり方をするとかえって拡張しづらくなる 演算子みたいなもんだ
ダブルディスパッチにビジターパターン使うのも、3.0までよ。 4.0ならdynamicでトリプルでもカドラプルでも多重ディスパッチ!
dynamicはちょっと楽しみ
845 :
デフォルトの名無しさん :2009/07/23(木) 07:10:44
refを指定してないのにメソッドの中でプロパティを変更したのが反映されるのは何で? ex. void Method(Form form) { form.Text = "aho"; } これを別のクラスから使う
日本語でおk
参照型と値型の違いを復習しる
何でも糞も当たり前で何が疑問なの?
参照型だからというだけで勝手に参照するんですか?
ちょっと面白かった
>>834 フレームベースのゲームみたいだから更新が反映されるタイミングは決まってる
値が変更された瞬間などというのはあんまり意味がない
ラムダ式はデリゲート型じゃないとか意味が分からんのだが・・・ 何で駄目にするのか理解できない
ラムダ式は「デリゲート型」に暗黙に変換できる Delegateクラスはデリゲート型じゃなくてクラス型だから暗黙的には変換できない デリゲート型っていうのはdelegateキーワードを使用して定義された型のこと Delegate型だとラムダ式の引数の型や戻り値の型を何にすればいいかコンパイラが分からないだろ
なるほど。要するに初心者向きの話題じゃなないわけだな。
最後の行だけ理解できればおk
Delegate hoge = x => x.ToString(); これだとラムダ式の型が何になるのかわからない。 (Delegateクラスは抽象クラスなのでDelegateクラスのインスタンスを直接作ることはできない) それに,型に関してコンパイラに対するヒントが一切ないので,xの型や,ラムダ式の戻り値の型を推論できない。 Delegate hoge = (Func<int, string>)(x => x.ToString()); これならxの型もラムダ式の戻り値の型もラムダ式自体の型も決まるのでOK。
分からなくて当たり前。初心者にはまだ早いよ。
「推論できない型」と推論すればいいじゃないですか
delegateにはあるInvokeメソッドがSystem.Delegateにはない。 DynamicInvokeメソッドは両方にある。 Invokeメソッドは引数や戻値が一定でないため、 インターフェイスや抽象クラスにできない。
dynamic hoge = x => x.ToString(); これはどうなるんだろうな dynamicの仕組みから考えるとできてもおかしくないけど
xの型が確定しないから無理。 さすがに、ジェネリックデリゲートみたいなのはサポートされない。
863 :
794 :2009/07/23(木) 17:00:07
キャラクターのオブジェクトにスコアやエネルギーを持たせたいと思います。 相談に乗っていただいた皆さん、ありがとうございました。
この言語使うとC++する気なくなるわw
>>864 そう言うなよ
C#が万が一無くなった時にどうするつもりだよw
>>864 商業ではもう当の昔に捨てたよ。
せいぜい.NETのプログラムが動かない環境をチェックしてエラー表示をさせるツールくらいかな。
世の中Windowsばかりじゃないんだよ 今はあらゆるところにコンピューターが使われてるし 特殊用途だと開発環境やライブラリが限られてるから 業界によってはC++どころかCやアセンブラも現役バリバリ
初心者スレで業界(笑)の話とかされてもなあ。
そういえば.NET Frameworkは最初クロスプラットフォームを謳ってたんだよな
Monoがんがれ。超がんがれ
つうかSSCLIにはFreeBSDやMac向けがあるわけで MS的にクロスプラットフォームは可能だけどやる気なしってだけだよな
Silverlightがあるぞ macなら一応100%互換
iphoneで使えないの?
mono使うとiphoneで動くんじゃなかったか
MSはSilverlightをiPhoneに載せようとしたけど断られたらしい
恩を仇で返すなんて最低な会社だなぁ。
あんどろいどにはのるんですか
Androidには載せてほしいな。 WindowsMobileに未来はないだけに。
>>875 Flashもダメなんだから、まあ当然のような気がする。
うれしいこと言ってくれるじゃないの
Javaみたいになりたくはない。
MSが先頭に立ってこそのC# いくら普及しても第二のJavaになったら意味無い
おっと,Javaの悪口はそこまでだ。
>Monoプロジェクトはマイクロソフトと提携関係にあるノベルのサポートを受けている(イカザ氏が創業した米Ximianを2003年にノベルが買収している)。 >このため、マルチメディア関連のコーデックなどでもMoonlightはマイクロソフトの協力を得られている。 へえ
887 :
デフォルトの名無しさん :2009/07/24(金) 02:06:47
VC#2008でコントロールを拡張して使いたいんですが、 カスタムしたものをフォームに張りつけると右肩の三角が消えてしまうんです。 何か気分オーバーライドが足りないんでしょうか? プロパティいじればいいことなんですけど、拡張したつもりが機能減ったってのが何か気分悪いんです。
889 :
デフォルトの名無しさん :2009/07/24(金) 02:40:15
>>888 ありがとう!
スマートタグをヒントに明日また色々と試してみます
ちょっとしたソフトを作ってフリーで配布しようかと思って もうほとんど完成まじかで気づいた これバイナリ配布でもソース丸見えかよwwww
バイナリじゃねーもん
何の問題があるんだよw
稚拙なコードを見られるのが恥ずかしいと思うことはある
全てを解き放て
ふふふ。 おれのコードは難解だからな。orz
( ) ジブンヲ ( ) | | ヽ('A`)ノ トキハナツ! ( ) ノω| __[警] ( ) ('A`) ( )Vノ ) | | | |
ggrks
expressionとか、商用の一級ソフトでも中身見れるから、とてもいい時代。
>>890 Dotfuscator でも使えば?
カジュアルハック対策なら、Visual Studo 付属のフリー版で十分だろ。
難読化時の名前短縮によって、若干のバイナリ圧縮効果も期待できる。
リフレクションとかキニシナイ
池田信夫じゃないけど過剰コンプライアンスだよね。 つーか自意識過剰。 失礼だけどあんたのコードなんかまず誰も見ないって。 見たって8割のダメグラマの書くコードなんて「天然難読化」掛かってて読めないし。
そんな事は皆わかってるから心配すんな
>>903 こういうこと言う奴に限って真っ先に中身をチェックするんだよなwww
906 :
デフォルトの名無しさん :2009/07/24(金) 23:05:32
スマートタグできなかったおわた
こんなはしたないコードを堂々と晒すなんて・・・ 猥褻物陳列罪で起訴です起訴
さすがにアルゴリズムとか見られるのはまずいね
最初はみんなマゾなんだよ
911 :
デフォルトの名無しさん :2009/07/25(土) 01:29:23
いや丸コピではないよ。 ちょっと待ってろ。
915 :
デフォルトの名無しさん :2009/07/25(土) 16:04:52
ソース読めちゃうのはきついでしょ。 例えばアクセスするサイトのURLを埋め込んでても見られちゃうじゃん。 それにお前のソースなんて見ないなんていうけど、 同じレベルの人がこれなら解読すれば出来そうだって思って見られて せっかく調べて作ったツールを簡単にパクられてしまう。 例えばあるサイトのjavascriptを探って探ってやっとたどり着いた関数を呼び出すブログラムがあったとして ソースを見た第三者は何の苦労もなくその関数を発見できてしまう。
嫌ならC++でも使えばいいじゃない 白雉?
ソースが見られて困るのは、 版権のあるソースやオプソのソースを黙って流用してたのがばれてしまって困るとか、 パスワードを入れるとエロ画像が見れる類のシェアウェアの作家とか。
モニタする方法なんかいくらでもあらあな 917みたいなパケットアナライザ使ってもいいし API呼んでるならIAT読むだけでも中で何してるかくらい想像付くわ リバースエンジニアリングに気を使う暇があったら もう少し頭ひねった方がいいと思うな
そだね
>>916 頭が追いついて無いのに分不相応なこと心配してるから答えが出ないんだよ。
>例えばあるサイトのjavascriptを探って探ってやっとたどり着いた関数を呼び出すブログラム なんかキナ臭いです だいたいこの行為も人のページのjavascript漁ってるならリバースエンジニアリングじゃないんですかw
ソース見られると困るって人はSSCLIの立場とかどう考えてんの。
他人が公開しようが俺は困らん
926 :
924 :2009/07/25(土) 17:00:27
そういう意味で言ったわけではないのだが・・・。
SSCLIとは別に,.NET Frameworkのマネージコードのソースは全部公開されてるぞ
この話題いい加減飽きた 何回同じ話してんだよ 1スレに1回以上出てんぞ 累計で4〜50回も同じ話してる事になるじゃねえか
同じ話題を持ち出してるのは同じ人間ぽいな。 新手のかまってちゃん?
脳が老化(劣化)してる人が少なくないんでしょう。 知的障害の子供とか痴呆老人って繰言を言うよね。 2チャンネラのうち、明らかに知能が低いと思われる連中のレスにも、 まさに「馬鹿の一つ覚え」のように同じフレーズを飽きずに繰り返し投稿する 現象が見られる。 たぶん「繰り返し」ってのは脳の古い部分にとって快な刺激なんだろう。 音楽だって短いパートを繰り返すのが作曲作詞の基本だし。
スレ違い
いつも通りのループネタなんだし、軽く流せよお前ら 騒いだら無くなるような類の物じゃないだろ
ここは初心者スレだぞ? 既出とか言い出したら何も質問できなくなる
以上、テンプレでした。
ああ、明らかに知能が低いと思われる2chネラに見られる「馬鹿の一つ覚え」的
投稿っていうのは、まさに
>>934 みたいなののことね。
こういうのって本人面白いとか思ってるのかな本当。
俺には不思議でたまらない。
なんでこうなった
一、質問者が過去スレを見ないから 一、回答者がテンプレを作らないから
テンプレ見て自己解決できるような人は、最初からぐぐってると思うけどなぁ
>>937 言い出しっぺの法則
じゃあさ、クラス設計について教えてよ ・クラス内で完結できる処理は完結する ・似たような処理は同じクラスにまとめる デザインパターンなんか見てると積極的にクラス分けしてるけど クラス増やしすぎてわけわかめなのもよく見かける 一見、そうかな?って思うけど矛盾してると思うんだよね クラス設計においてこうしとけとかってないの?
>>939 話が抽象的過ぎて反論するにもフォローするにもとっかかりがないな。
せっかくデザインパターンとか言ってるんだから、具体的に特定のパターンを
例に挙げて腑に落ちない点を言ってみたら?
そもそも設計のセンスの問題だから どこまでいっても感覚的にしか語れないよなw まぁ、ここで一番適切な回答は「スレタイを三回音読してみろ」だがな。
アプリは設計に従うのか設計はアプリに従うのかって話だろ ちなみにデザインパターンは前者
VisualC#2008で開発をしている初心者です。 Formのなかで画像をドラッグ&ドロップで移動したいと考えています。 ドラッグ&ドロップで調べると、listBoxへのドラッグ&ドロップはかなり見つかるのですが、 Form内でのものは見つけられませんでした。 ドラッグ&ドロップだと、 DragEnter DragDrop のイベントをつくる方法もあるみたいなのですが、 具体的にどうすればよいのかいまいちわかりませんでした。 ちなみに、いまはMouseDownとMouseUpで、 PictureBoxの位置を移動しています。 これで動くには動くのですが、なめらかにという感じにはなりません。 ご助言いただけないでしょうか。
int mouse_X; int mouse_Y; int move_start = 0; // 1 = move中 private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == MouseButtons.Left) // マウスの左ボタンかチェックする { move_start = 1; mouse_X = e.X; mouse_Y = e.Y; Point Z = new Point(0, 0); string Text = "--- pictureBox1 の位置 ---" + "\r\n" + "Left = " + pictureBox1.Left + "\r\n" + "Top = " + pictureBox1.Top + "\r\n" + "PointToScreen(Z).X = " + pictureBox1.PointToScreen(Z).X + "\r\n" + "PointToScreen(Z).Y = " + pictureBox1.PointToScreen(Z).Y + "\r\n" + "PointToClient(Z).X = " + pictureBox1.PointToClient(Z).X + "\r\n" + "PointToClient(Z).Y = " + pictureBox1.PointToClient(Z).Y + "\r\n"; } } private void pictureBox1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { pictureBox1.Left = mouse_X; pictureBox1.Top = mouse_Y; }
DoubleBufferedをオーバーライド
オーバーライドじゃねえ、picturebox継承してDoubleBuffered = true;
>>943 確かに手を動かす(実際にコードを書いてみる)のは大事だと思うけど、
君の場合はその前段階の学習が足りないんじゃないのかな。
なんか言ってることがトンチンカンな気がする。
ちなみにドラッグ&ドロップじゃなくて、ただのドラッグじゃないのそれ?
PictureBoxだけダブルバッファにしても意味ない 特に設定しなくても普通に作れば滑らかに動くよ
C#の初歩的な質問ですが、構造体の初期化で引数なしのコンストラクタが使えない理由を教えてください。 仕様ですと言ったらそれまでかもしれませんが、なんで使えないのかわからない。
初期化では使えるだろ 引数なしコンストラクタが定義できないだけで
アンダースおじさんに聞いてください
すまん、聞き方が悪かった。 なぜ、引数なしのコンストラクタが定義できないのか。 が正しい。
「クラスのメンバは既定値に初期化される」というルールとの整合性のためじゃね 既定のコンストラクタが定義できると,メンバの構造体オブジェクトも全て明示的にnewで初期化しないといけなくなる
MSに電話して聞いてください
マジレスすると値型だから。 ECMAの仕様で TestStruct a; と書いた時点でaのフィールドは0とnullにならなければいけないと決まっている。 int b; が0になってなきゃいけないのと同じ。 この時にデフォルトコンストラクタが呼ばれるわけだが どうせ0かnullにならないといけないので勝手に定義されている。 それだけ。
だからどうしてそんな仕様が選択されているのか、 って事を聞いてるんじゃないの? A: 「なぜそんな仕様になってるの?」 B: 「仕様です」 これって会話として成立してないような
PDFに理由書いてあるから読め。 なんでそんなガキみたいな質問する気になるんだか。
C#の「既定値」の考え方からすると,構造体にデフォルトコンストラクタが定義されている場合は default(TestStruct) != new TestStruct();となるのが自然なわけだけど CLIの仕様で,構造体の配列を作ると自動的に全ての要素の既定の コンストラクタが呼ばれたりするんで(C++の影響?)C#と合わないんだよね
自分で仕様ですと言ったらそれまでって言ってるんだから成立してんじゃねえの
英語がぁ〜読めないのぉ〜
これか The added performance of avoiding class constructors warrants this change.
>>949 CS0568の解説をよく読め。
そもそもC#ではstructのメンバ変数にインスタンス フィールド初期化子を指定できない。(CS0573)
スタック上の扱いも変わるわけで、C++と違い、C#ではclassとstructがかなり違うものであることが読み取れる。
>>955-956 は微妙にウソ言ってる。
「値型はユーザー定義のデフォルトコンストラクタが呼ばれない可能性がある」が正しい。
CLIの仕様としては値型のデフォルトコンストラクタも存在するが、それが呼ばれるのは
システム定義のデフォルトコンストラクタ(0とnullに初期化する奴)が呼ばれない場合に限られる。
で、どうせ呼ばれないし、定義するだけ不毛なので定義できないようになってる。
理由はパフォーマンス目的。
そんなんでパフォーマンスどれだけ上がるって言うんだろう
分からんけど仕様から切って捨てるくらいならそこそこ効果あったんじゃないのか。たぶん。
だいたい,パフォーマンスを出すためにわざわざ値型を導入してややこしくしてるんだもんな
949です。
TestStruct a;
TestStruct b = new TestStruct(1, 1);
TestStruct c = new TestStruct();
aの場合は、コンストラクタが呼ばれずに、初期化もされない。
bの場合は、コンストラクタに引数つけて、引数で初期化される。
cの場合は、デフォルト(引数なし)コンストラクタが呼ばれて、0またはnullで初期化される。
仕様に対して疑問に思っているのは、cの場合でクラスと違って構造体で引数なしコンストラクタの定義を認めない理由が知りたい。
引数なしコンストラクタ内でbの場合のような1,1で初期化を認めるとどんな問題が発生するのか。
>>963 ---
エラー メッセージ
構造体に明示的なパラメータのないコンストラクタを含めることはできません。
---
これの理由が知りたい。
>>958 >>962 理由があってこのような仕様にしているはずなので、仕様を読んでみます。
8.9.5項であってる?
>>953 >>メンバの構造体オブジェクトも全て明示的にnewで初期化しないといけなくなる
もう少し具体的に説明してもらえませんか。
>>964 小さい配列を多くとる場合に参照型より高速でしょうね。
構造体を利用する目的の一つはパフォーマンスだと思います。
980の人スレ立てなので宜しゅう
値型をスタックに確保する場合を考えるよりも、参照型のフィールドとして確保する場合に 混乱しないようにってのが主な理由らしいけどね。 (C#では「パフォーマンス上の理由で」参照型のフィールドになっている値型の デフォルトコンストラクタを呼び出さず0で初期化してしまうので、その呼び出しの中で フィールドを任意の値に設定できるように見えてしまう値型のデフォルトコンストラクタを定義できないようにした) 正直スタックに確保する場合と一貫性無い気がして俺もすっきりしないんだけどね、このルール。 あくまでC#のルールであってC++/CLIとか微妙に話しが変わってくるがなんとも。
>>969 >これの理由が知りたい。
人の話を聞けよ。
--------
コンパイラ エラー CS0568
エラー メッセージ
構造体に明示的なパラメータのないコンストラクタを含めることはできません。
各構造体には、オブジェクトをゼロに初期化する既定のコンストラクタが既にあります。したがって、構造体に対して作成するコンストラクタでは 1 つ以上のパラメータを受け取る必要があります。
--------
理由もちゃんと書いてあるじゃねえか。
なぜ既定のコンストラクタを上書きできないんだよコラ 効率か?効率なのか?
効率だと実装してる人間が言ってるなら効率なんじゃないか。
配列とのからみだったような。
976 :
デフォルトの名無しさん :2009/07/26(日) 06:06:43
>>913 感涙した。
頑張って解読・修得試みるわ。ありがとう。素直に尊敬する。
C#のいろんな人のプログラムをみて勉強したいのですが そういうのってどこでてにいれられるんですかね? 言語体系とか逆引きはあるんですが C#でつくるアプリみたいな書籍もないですし・・・・
>>977 SharpDevelopのソースコードを入手して読め。
英語でよければCodePlexにいくらでもある IronPythonとか読んだら.NETオタになれる
ラジコン移動をさせようと思っているのですが、 なぜか先に移動すると、その場回転ができなくなってしまいます どうしたらいいのでしょうか
>>980 誤爆した人に頼むのは気が引けるけど次スレ立てて
偉い
>>977 C# サンプル とかでググったらちょっとはでてくるけども。
Codeplex の日本語化して欲しいなぁ。
ちょww構造体のデフォルトコンストラクタの件にNyaRuRuさんが反応しとるww
ゼロページが割り当てられるのは知らなかった。パフォーマンス上の理由ってそういう事なのか。
・・って書いてたらタッチの差で
>>985 に貼られてた。
987 :
964 :2009/07/26(日) 14:59:16
あらあら。光栄ですわ。
へぇ〜。
ほぉ〜。
ふ〜ん。
ひぃ〜。
はぁ〜ん。
続けるの?
986 が本人。
どうせ続けてもあと数レスだがな
やだ・・・NyaRuRuって自意識過剰なのね。
アッー。
オウフww
ええー。
OH!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。