ふらっとC#,C♯,C#(初心者用) Part21
レス数が1000を超えています。これ以上書き込みはできません。
0001ななしぃ#
2007/11/18(日) 15:53:41「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part20
http://pc11.2ch.net/test/read.cgi/tech/1191036844/
0910デフォルトの名無しさん
2007/12/15(土) 03:27:53ウィンドウにButtonを2個配置した場合、カーソルキーの左右でボタン1と2の間でフォ
ーカスが移動しますが、これと同じ動作をPictureBoxに対しても行いたいと考えており
ます。
PictureBox.TabIndexプロパティで何とかなるかとも思ったのですが、CFMのPictureBox
はTabIndexプロパティが実装されておりません。
当初ははPictureBoxでなくButtonで行いたかったのですが、Button上にイメージを貼り
付けたいのですが、Button.Imageがサポートされておらず、PictureBoxにした次第です。
PictureBoxにフォーカスを当てる方法か、Button上にイメージを貼る方法どちらか実現
出来ないでしょうか?
0911デフォルトの名無しさん
2007/12/15(土) 03:56:17↓ここらへん参考にしてみてはどうでしょう
http://www.microsoft.com/japan/msdn/thisweek/10lines/extra_bottoncontrol.aspx
0913デフォルトの名無しさん
2007/12/15(土) 08:01:29勉強していくうちに理解できることかも知れないけど質問させてください。
クラス、名前空間など処理を分ける(?)概念は
処理のグループ化、階層化などによって作成、管理、修正、解読などを
しやすくする狙いがある(または狙いのひとつである)のでしょうか。
Cは授業で基礎を習った程度の知識と経験がありますが、
その初段階で教わった「プログラムの構造化」を
言語自体の持つ性格としてより明確に打ち出されているものと考えてよいでしょうか。
0914デフォルトの名無しさん
2007/12/15(土) 08:20:09簡単にいうとネームが競合しないようにするためだね
*クラス
人が「歩く」
犬が「歩く」
同じ「歩く」でも歩き方などが違うわけで、「人が歩く」というクラス名にしてもいいけど
長くなるので同じクラス名でも別の機能を持たせたいのでクラスという概念ができた
*名前空間
田中さんが作った「人が歩く」プログラム
山田さんが作った「人が歩く」プログラム
同じ「人が歩く」プログラムでもプログラマによって歩かせ方が違うわけで
「田中さんが作った人が歩く」というクラス名にしてもいいけど
長くなるので同じクラス名でも別の機能を持たせたいので名前空間という概念ができた
0915デフォルトの名無しさん
2007/12/15(土) 09:57:19>>908
>>909
目的はよくわかりました。
たとえば、
class Widget {
public int x = 10;
public int y = 20;
}
のようなクラスのインスタンスを
シリアライズ化してファイルに保存
する場合、何が保存されるのでしょうか?
class obj = new Widget();
シリアライズ化
ファイルに保存
逆シリアライズ化
xとyを参照すると正しく10と20が読める。
こんな感じですか?
0916デフォルトの名無しさん
2007/12/15(土) 10:36:34つか自分でやってみろよ
0917デフォルトの名無しさん
2007/12/15(土) 13:26:34違います
言語を使ってみる前にこういうものかと言葉で理解しようとするのは誤りです
0918デフォルトの名無しさん
2007/12/15(土) 13:47:26間違いだらけでワロスw
0919デフォルトの名無しさん
2007/12/15(土) 13:47:28.NETも含めてより深く理解するために
Windowsアプリに応用しようかと思う
のですが、自作クラスを作成しない簡単な
フォームアプリでもdelegateととかは使われる
ものですか?
0920デフォルトの名無しさん
2007/12/15(土) 13:48:300921デフォルトの名無しさん
2007/12/15(土) 13:50:100922デフォルトの名無しさん
2007/12/15(土) 13:52:43気づかないだろうけど。
0923デフォルトの名無しさん
2007/12/15(土) 13:54:470924デフォルトの名無しさん
2007/12/15(土) 14:29:490925デフォルトの名無しさん
2007/12/15(土) 16:23:220926デフォルトの名無しさん
2007/12/15(土) 20:07:17まともに答えず話の方向ずらすだけ
0927デフォルトの名無しさん
2007/12/15(土) 20:21:19説教がましく言ってくるやつがいても、言い返せばOK。
0928デフォルトの名無しさん
2007/12/15(土) 21:30:38Aという処理の○○msec後にBという処理を行う
ということをTimerより高精度で行いたいのですがどうすればいいのでしょう?
QueryPerformanceCounterを使うといいよと言われたのですが、
ぐぐっても実行時間の計測方法しかわからなくて困ってます・・・
0929デフォルトの名無しさん
2007/12/15(土) 21:30:49メモリ開放しないとだめなのでしょうか?
c#は自動でメモリ開放してくれるのでしなくてもいいのでしょうか?
もしダメならなぜなのでしょうか?
今作っているプログラムはクラス内にAPIを使っていますが
メモリ開放をしなくても何も問題は起きていないです。
自動で開放できているということでしょうか?
0930デフォルトの名無しさん
2007/12/15(土) 21:32:32API って何? Win32API?
普通はハンドルは最後に解放するよ。それは C# でも C++ でも一緒。
0931デフォルトの名無しさん
2007/12/15(土) 21:33:44なんのハンドルか知らないけど
呼び出し側が解放するように指定されてるAPIなら解放しとけ
0932デフォルトの名無しさん
2007/12/15(土) 21:47:10System.Threading.TimerかSystem.Timers.Timerは?
0933デフォルトの名無しさん
2007/12/15(土) 21:50:59まずは精度を提示してください。
0934928
2007/12/15(土) 22:06:180935デフォルトの名無しさん
2007/12/15(土) 22:12:21まずは、C#を捨てるところから始めましょう。
0936デフォルトの名無しさん
2007/12/15(土) 22:14:450937デフォルトの名無しさん
2007/12/15(土) 22:15:29恥ずかしいからやめとけよ。
まともに答えてるのもわからんのなら。
わかるのなら答えてやれよ。
0938デフォルトの名無しさん
2007/12/15(土) 22:16:23GCが動いたら軽く吹っ飛ぶ
0939928
2007/12/15(土) 22:21:370940デフォルトの名無しさん
2007/12/15(土) 22:24:38>>934
何の実験かは知らんがWindowsをその用途に使うの多分向いてないよ。
仮に1msec以下の精度で時刻が分かっても
スレッドスケジューラが問答無用で実行権を奪っていくこともあるし
行儀の悪いドライバが長時間CPUを離さないと、
その間ユーザモードのプロセスは原理上なんもできん。
QueryPerformanceCounterとかStopwatchクラスでポーリングすれば、
100回のうち何十回とかは要件を満たせるかもしれんが、
一回のミスも許されないような用途ならそもそもWindowsを選ぶべきじゃない。
C#じゃなくてC++なら可能とかそういうレベルですらない。
FPGAとか使った方がいいんでは? と目的も聞かずに適当アドバイス。
0941デフォルトの名無しさん
2007/12/15(土) 22:32:030942デフォルトの名無しさん
2007/12/15(土) 22:34:060943デフォルトの名無しさん
2007/12/15(土) 22:35:110944デフォルトの名無しさん
2007/12/15(土) 22:40:22APIを呼び出しているクラス内の最後にclose(hwnd)みたいな感じやるということですか?
でも、hwndがメソッド外でフィールド?で定義していた場合
クラス自体を終了しなければ解放されないですよね?
で、クラスならいちいち解放しなくてもガベージコレクションで自動で開放されるから
わざわざしなくてもいいと思うんですがどうなんでしょうか?
>>931
他のプロセスのハンドルです
VirtualAllocExで仮想メモリを割り当てて、開放しなかったけれども
何も異常が起きないんですが、このクラスを呼び出す別クラスのメソッドが
終了すれば、自動で開放されているということかな?
0945デフォルトの名無しさん
2007/12/15(土) 22:46:120946デフォルトの名無しさん
2007/12/15(土) 22:52:132マイクロ秒くらい(これは俺の環境の場合だが)
かかるんだが、これってQueryPerformanceCounterの速度か
それともアンマネージ呼び出しなんかのオーバーヘッドかどっち?
0947デフォルトの名無しさん
2007/12/15(土) 22:53:52まあ普通はハンドル自体はSafeHandleでラップして、
さらにDisposableなクラスでラップするけどね。
0948デフォルトの名無しさん
2007/12/15(土) 22:56:54だよね?
0949デフォルトの名無しさん
2007/12/15(土) 22:59:29意味の分からんことを言うな
0950デフォルトの名無しさん
2007/12/15(土) 23:02:58に確保されるんだよね?
0951デフォルトの名無しさん
2007/12/15(土) 23:05:07DirectoryInfo()にパス名を引数として渡す場合、
C#では@"c:\temp"のように先頭に@マークをつけるのは
何故ですか?VC++やVBでは付けないみたいですが。
0952デフォルトの名無しさん
2007/12/15(土) 23:08:250953デフォルトの名無しさん
2007/12/15(土) 23:08:31aspx.csでやりたいのですが、これはTextBoxオブジェクトをインスタンス化して
表示するということは可能でしょうか?
Response.Writeでタグを吐けば表示可能ですが、この方法以外でやりたいのです。
なぜデザイナでタグをペチペチ配置しないかというと
例えばURLのパラメータによってテキストボックスの数が異なるからです。
なので、動的に生成する方法を知りたいのです。
よろしくお願いします。
0954デフォルトの名無しさん
2007/12/15(土) 23:09:44ハンドルそのものは値型で保持されるけど
ローカル変数じゃないからスタックとか関係ないよ。
0955デフォルトの名無しさん
2007/12/15(土) 23:10:57Designer.csを読めばわかる
0956デフォルトの名無しさん
2007/12/15(土) 23:13:19意味わかんね
プロセスハンドルをどうやって解放するつもりか
>VirtualAllocExで仮想メモリを割り当てて、開放しなかったけれども
解放しなかったのはメモリなのか?
0957デフォルトの名無しさん
2007/12/15(土) 23:14:38@をつけると\がエスケープ文字でなくなる。
VBはエスケープ文字がないし、C++は"c:\\temp"と\を重ねることでエスケープ文字でなくす。
0958デフォルトの名無しさん
2007/12/15(土) 23:18:10ありがとうございます。
会社の環境はVS2005なのですが、ちゃんと
aspx
aspx.cs
designer.cs
とワンセットで表示されるのですが、家の環境はWebDevelopperで
designer.csがソリューションエクスプローラに表示されません。
aspxなどの場所にdesigner.csファイルもありません。
これはどうやって表示させるのでしょうか?
WebDevelopperはソリューションファイルやプロジェクトファイルも無いんですよ(^^;
なので、いつもファイルをダブルクリックして立ち上げるのではなく
WebDevelopperを開いて、スターと画面から最近実行したソリューションの一覧から選択してる・・・
0959デフォルトの名無しさん
2007/12/15(土) 23:22:35メモリもプロセスハンドルも両方です
VirtualFreeしていないということです
0960デフォルトの名無しさん
2007/12/15(土) 23:30:17そんな初歩的なことを聞くな
会社で聞いたら一言で済む
0961デフォルトの名無しさん
2007/12/15(土) 23:35:010962デフォルトの名無しさん
2007/12/15(土) 23:35:42プログラミング構造に問題があるか、簡単なアドバイスをもらえたりするんでしょうか?
趣味で自分専用にやっているだけなので動けばいいんだけど
一人で黙々とやっているだけなのでだめなところに気づきにくい
0963デフォルトの名無しさん
2007/12/15(土) 23:36:14会社じゃあWebDevelopperなんて使ってないもんで誰もわからないと思われまする。。
0964デフォルトの名無しさん
2007/12/15(土) 23:42:29とにかく見てくれと言っても反応は得られにくいよ
0965デフォルトの名無しさん
2007/12/15(土) 23:44:01,l、::::::::::::::::::::::::::::::::::|:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l
,ハ::`丶、:::::::::::::::::::::::|:;:;:;:;:;:;:;:;:;:;_,, -‐:〈
{;;;;ヽ、:::::`丶、:::::::::::::l:;:;:;:;:;:; ィ";:;:;:;:;:;:;:}
,l;;;;;;;;;シ丶、:::::::`:`:ー'‐::'':"::::::::_, ィ"´;;l
fうl;;;ミミ、 ``丶 、::::::::,: - ''"´ リ;;;;;;f-、
{ l l;;;;;ッ=` (三> `^´ (三シ ム;;;;;;ソl}
t !;;;リ _,,...,,_ _,,..,,_ l;;;//
゙l ヾ;l :'ィテヘ9ンミ ,: ',シヒ9ン、 l;//
`ーll! `''==ヲ' l:.:^''==彡'" ,!リノ
ll ` '' " l:.:.:` '' " ,i;;l´
li, ,r .: :.ヽ、 ,:,り
t、 / ゙ー、 ,r '゙ヽ /,K′
ゝ、 ,:' :~: } // /ヽ、
/{lヽ ,ィ==ニニ==,ノ,ノ7 /:.:.:.:ヾニヽ
, ィ/:.:い ヽ `` ー一 ''"/,/,/:.:.:.:.:.:.:.:ソ }- 、、
/ /:.:.:.:ヽヽ `' ー‐ -- '"//:.:.:.:.:.:.:/ / ` 丶、
,, - { ヾ:.:.:.:.ヽ丶 //:.:.:.:.:, -'" ,/ ` 丶 、
,, - ''" 丶、 `` ーゝ、ヽ.,_,,ィ"ェくユ- ''" , ィ"
0966デフォルトの名無しさん
2007/12/15(土) 23:47:43ゲ製板とかに行った方がいい
C#ってそんなに特殊な言語じゃないからC#知らなくてもC++かJava知ってる人なら読めるはず
0967デフォルトの名無しさん
2007/12/15(土) 23:48:19なるほど。わかりました。
0968962
2007/12/15(土) 23:51:36そうですか・・・
オブジェクト指向でプログラミングできているのかよくわからないんですけど
私の1000行のソースが上級者なら500行ぐらいに簡潔に表せたりするのかな?
同じ機能をあらゆるメソッドで何度も使う場合、それらをクラスにするようにしていれば
一応オブジェクト指向プログラミングできているのかな
>>965
な・・・なんですか?w
0969デフォルトの名無しさん
2007/12/15(土) 23:54:15気楽に行こうぜ相棒
0970デフォルトの名無しさん
2007/12/16(日) 00:19:13>一応オブジェクト指向プログラミングできているのかな
。 。
/ / ポーン!
( Д )
0971962
2007/12/16(日) 00:28:510972デフォルトの名無しさん
2007/12/16(日) 00:30:55あなただけ特別と思ってる
出会いは偶然で何処にでも在るとしても
二人なら永遠のストーリー
0973デフォルトの名無しさん
2007/12/16(日) 00:40:23オブジェクト指向っていうのはあくまで「指向」つまり考え方なわけで
「これをやればオブジェクト指向だぜ!」という明確な決まりはありませんのよ
0974デフォルトの名無しさん
2007/12/16(日) 01:48:40オブジェクト指向・・・
部品を作ってそれを組み合わせるって認識してるけど・・・どうなんだろう
エロゲなら例えば、
背景、画像、テキストなどの描画を管理するコンポジションクラス(レイヤー管理とか)
・背景、登場人物描画管理パーツクラス
・テキストボックス、テキスト描画管理パーツクラス
全体の動作・入力を管理するコンポジションクラス
・通常テキストの管理するパーツクラス
・選択肢発生・処理パーツクラス
・セーブ・ロード、オプションなどを管理するパーツクラス
描画・動作・入力対応を統括するクラス
登場人物のクラス(名前、画像、内部パラメータetc)
テキストをtxtファイルから読み込むクラス(後で修正を楽に行うため)
分岐情報やテキストの割り当て・管理を行うクラス
見たいにそれぞれの部品を作って、組み合わせるとか?
どういう風に部品分解するかは人それぞれだし、個人的には上記の例はさらにパーツクラスに分解されていき、
大体最大でも500行程度のクラスになると思う。(大体50〜200行程度になることが多いけど)
0975デフォルトの名無しさん
2007/12/16(日) 01:56:21戻り値の型をTと書こうとすると、IntelliSenceが勝手にThreadStaticAttribute
と入れてしまうのですが、うまい回避法はないですか?
Escを押せば回避できるのはしってますが、もっとスマートな方法はないでしょうか
0976デフォルトの名無しさん
2007/12/16(日) 02:15:06まったく関係ないが、初めてその属性を知った
こんなんあったんだ
0977デフォルトの名無しさん
2007/12/16(日) 03:15:32Visual C# 2005 EEを使っているのですが、
0x80042740
というエラーがでてデザイナが表示されなくなってしまいました。
デザイナが表示されないこと以外は何の問題もなく動作します。
調べてもいまいち分りませんでした。
直す方法があれば教えていただきたいです。よろしくお願いいたします。
0978デフォルトの名無しさん
2007/12/16(日) 03:21:480979デフォルトの名無しさん
2007/12/16(日) 03:24:36場所 EnvDTE.FileCodeModel.get_CodeElements()
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.Parse(TextReader codeStream)
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.MergedCodeDomParser.System.CodeDom.Compiler.ICodeParser.Parse(TextReader stream)
場所 System.CodeDom.Compiler.CodeDomProvider.Parse(TextReader codeStream)
場所 Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomDocDataAdapter.get_CompileUnit()
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
場所 System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
0980デフォルトの名無しさん
2007/12/16(日) 03:33:32>>978
0981デフォルトの名無しさん
2007/12/16(日) 03:37:40デザイナの読み込み時に 1 つ以上のエラーが発生しました。エラーは以下に一覧表示されます。コードの変更が必要なエラーもありますが、プロジェクトを再度ビルドすると解決できるエラーもあります。
HRESULT からの例外: 0x80042740
非表示
場所 EnvDTE.FileCodeModel.get_CodeElements()
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.Parse(TextReader codeStream)
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.MergedCodeDomParser.System.CodeDom.Compiler.ICodeParser.Parse(TextReader stream)
場所 System.CodeDom.Compiler.CodeDomProvider.Parse(TextReader codeStream)
場所 Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomDocDataAdapter.get_CompileUnit()
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
場所 System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
0982デフォルトの名無しさん
2007/12/16(日) 06:05:04これは特定のフォームで出てるの?
もしそうならコンストラクタのInitializeComponent()の前後に追加したコードをコメントにしてみて。
0983デフォルトの名無しさん
2007/12/16(日) 06:34:21初期化がうまくいってない気がする
コードうpすれば多分わかるけど
0984あにす ◆sGTL1yK0.6
2007/12/16(日) 09:17:39クラスとは、萌えなのです。
0985デフォルトの名無しさん
2007/12/16(日) 10:11:050986962
2007/12/16(日) 11:39:50私のプログラムはそんなに綺麗に役割分担できてないかも・・・・
あらゆるクラスがあらゆることをやっている感じになって
非常に修正が難しいプログラムになってます・・
設計をもう一度見直そう・・・
0987デフォルトの名無しさん
2007/12/16(日) 11:51:21一番必要なのは経験だろうから
ずっと経ってから初期の自分のコードを見直すと丸ごと直したくて仕方ない衝動に駆られたりするけど
それはそういうものだと思う
0988デフォルトの名無しさん
2007/12/16(日) 11:53:44一歩も動けなくなるのさ
0989962
2007/12/16(日) 12:36:31もう少し力抜いてやります
プログラムたのしー
0990デフォルトの名無しさん
2007/12/16(日) 14:02:50ジェネリックメソッドのコードスニペット作れば
0992デフォルトの名無しさん
2007/12/16(日) 14:07:54T Esc と入れる習慣を作る方が楽なような
0993762
2007/12/16(日) 14:42:26<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0"><Header><Title>GenericMethod</Title>
<SnippetTypes><SnippetType>Expansion</SnippetType></SnippetTypes</Header>
<Snippet><Declarations><Literal Editable="true"><ID>methodName</ID>
<Default>MyMethod</Default></Literal><Literal Editable="true"><ID>args</ID>
</Literal></Declarations><Code Language="csharp"><![CDATA[T $methodName$<T>($args$)
{
$end$
}]]></Code></Snippet></CodeSnippet></CodeSnippets>
作ってみたけどたぶんT Escの方が早いよ
0994デフォルトの名無しさん
2007/12/16(日) 16:18:56Repeaterにユーザコントロールファイルをセットして実行し、
ascx.csでRepeater.DataSourceに入っているデータレコードを取得したいのですが
そんな事は可能でしょうか?
this.rep.DataSource = dataTable;
this.rep.ItemTemplate = Page.LoadTemplate("Test.ascx");
this.rep.DataBind();
Test.ascx.csでdataTableのレコードを取得したい。
ascxでは
<%# DataBinder.Eval(((RepeaterItem)Container).DataItem, "name") %>
で取得可能なのですが、これをascx.csでやりたい。
何でかと言うと、この値によって処理を変更したいからです。
お願いしますm(_ _)m
0995デフォルトの名無しさん
2007/12/16(日) 18:32:41どうやるのでしょうか?
こんな感じにしたいのですが。
----------------------------------------
| header1 |header2 |
----------------------------------------
|AAA | (ボタン1)(ボタン2)|
| | (ボタン3)(ボタン4)|
----------------------------------------
|BBB | (ボタン1)(ボタン2)|
| | (ボタン3)(ボタン4)|
----------------------------------------
0996デフォルトの名無しさん
2007/12/16(日) 18:34:400997デフォルトの名無しさん
2007/12/16(日) 18:46:370998デフォルトの名無しさん
2007/12/16(日) 19:31:12でっていう
0999デフォルトの名無しさん
2007/12/16(日) 19:54:19ふらっとC#,C♯,C#(初心者用) Part22
http://pc11.2ch.net/test/read.cgi/tech/1197802312/
1000デフォルトの名無しさん
2007/12/16(日) 19:57:0010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。