C#, C♯, C#相談室 Part53at TECH
C#, C♯, C#相談室 Part53 - 暇つぶし2ch1:デフォルトの名無しさん
09/06/16 20:11:11
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part52
スレリンク(tech板)

Visual C# 2008 Express Edition 日本語版
URLリンク(www.microsoft.com)

その他テンプレ>>2-5くらい

2:デフォルトの名無しさん
09/06/16 20:12:16
関連スレ

ふらっとC#,C♯,C#(初心者用) Part41
スレリンク(tech板)

Visual Studio 2008 Part 15
スレリンク(tech板)

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
スレリンク(tech板)

【VB.NET】LINQ友の会【C#, C♯, C#】
スレリンク(tech板)

C#,C#の宿題片付けます。
スレリンク(tech板)

3:デフォルトの名無しさん
09/06/16 20:12:26
関連スレ

ふらっとC#,C♯,C#(初心者用) Part41
スレリンク(tech板)

Visual Studio 2008 Part 16
スレリンク(tech板)

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
スレリンク(tech板)

【VB.NET】LINQ友の会【C#, C♯, C#】
スレリンク(tech板)

C#,C#の宿題片付けます。
スレリンク(tech板)

4:デフォルトの名無しさん
09/06/16 20:13:00
参考リンク

MSDNライブラリ
URLリンク(msdn.microsoft.com)

@IT Insider.NET
URLリンク(www.atmarkit.co.jp)
Insider.NET 会議室 ディレクトリ
URLリンク(www.atmarkit.co.jp)
MSDN フォーラム
URLリンク(forums.microsoft.com)

pinvoke.net: the interop wiki!
URLリンク(pinvoke.net)
宇宙仮面の C# プログラミング / C# Programming
URLリンク(ukamen.hp.infoseek.co.jp)
WisdomSoft C#入門
URLリンク(wisdom.sakura.ne.jp)
WisdomSoft Microsoft .NET入門
URLリンク(wisdom.sakura.ne.jp)
どっとねっとふぁん
URLリンク(dotnetfan.org)
緑のバイク 初めてのC# ~ 覚え書き ~
URLリンク(homepage3.nifty.com)
どぼん!の .NET Tips
URLリンク(dobon.net)

5:デフォルトの名無しさん
09/06/16 20:13:16
>>2
あーあ
VS2008スレが古いよ

6:デフォルトの名無しさん
09/06/16 20:13:28
otu


7:デフォルトの名無しさん
09/06/16 20:13:44
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
URLリンク(pc11.2ch.net)
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
URLリンク(windowsvista.ms)
Windows VistaFAQ
URLリンク(vistafaq.stdo.net)
インストールから設定・活用まで~ すべてが分かるWindows Vista大百科
URLリンク(journal.mycom.co.jp)

8:デフォルトの名無しさん
09/06/16 20:16:40
>>1


9:デフォルトの名無しさん
09/06/16 20:24:00
最近のC#スレの勢いはすごいね。昔のC#ごみだクソだ、Javaのまねw
が懐かしく思える

10:デフォルトの名無しさん
09/06/16 20:37:11
前スレの
>みなさんはデリゲートばりばりですか
>現場であまり使う機会がないですがみなさんどうですか

使いまくりです。デリゲート、イベント、ラムダ式等々。
余計なクラス拡張しないですんだり、そもそもクラス自体作らずに寸でよい感じ


11:デフォルトの名無しさん
09/06/16 20:38:40
おつかれー。

まぁ、俺はJava使いだけど、仕事で色々な言語触るようになってから、
使いやすいもん使えばいい、という感じになってきたな。
開発環境も言語も新しいもんがポンポン出てるし、あまりこだわりすぎると芸の幅を狭める。

12:デフォルトの名無しさん
09/06/16 20:54:28
これってJAVAよりカンタンなの?

13:デフォルトの名無しさん
09/06/16 20:58:38
簡単かどうかはともかく糖衣構文だらけで便利ではある

14:デフォルトの名無しさん
09/06/16 21:00:53
言語自体はjavaよりも若干複雑
周辺技術だらけのjavaとは違ってMS技術だけ覚えりゃ使えるから使うのは簡単

15:デフォルトの名無しさん
09/06/16 22:07:28
0から勉強はじめて、それなりに動く物が
作れるようになるまでに必要な勉強期間はJAVAと
比べてどうなの?

16:デフォルトの名無しさん
09/06/16 22:09:18
>>14
ちょっと色々やろうとしたら大差なくならんかね?
DIとかO/Rマッピングとか

17:デフォルトの名無しさん
09/06/16 22:11:13
>>15
0からやる人にとってはC#つかドトネトが圧倒的。
UI付きで動くから物作ってる感が全然違う。

18:デフォルトの名無しさん
09/06/16 22:23:30
コードだけだからなー

button.height=100;
VisualStudioなら
これを実行する前からフォームの概観がわかるが
VSないならいちいち実効しなきゃわからん!不便!

19:デフォルトの名無しさん
09/06/16 22:56:19
labelで文字に縁取りしたり、行間の指定をするにはどうすればよいでしょうか?

20:デフォルトの名無しさん
09/06/16 22:57:23
だがしょせんJavaのまね

21:デフォルトの名無しさん
09/06/16 22:58:36
JavaがそもそもC++とかのまねだろ

22:デフォルトの名無しさん
09/06/16 23:12:17
>>20
MSの後出しじゃんけんは最強。

23:デフォルトの名無しさん
09/06/16 23:17:02
いままでいったいいくつ既存のものを乗っ取ってると思ってるんだ

24:デフォルトの名無しさん
09/06/16 23:20:05
乗っ取られるから悪いんだろ

25:デフォルトの名無しさん
09/06/17 00:05:49
出自がどうあれ便利ならそれでいいじゃん

26:デフォルトの名無しさん
09/06/17 00:18:28
MS全方位で戦いすぎだろ

27:デフォルトの名無しさん
09/06/17 01:06:07
QDOSを買い取ったときに叩いておくべきだった

28:19です
09/06/17 01:09:24
ぐぐって
class MyTextBox : TextBox {
 public void SetFontHeight(int height)  {
  this.FontHeight = height;
 }
}
class Hoge {
 meTextBox1.SetFontHeight(20);
}
というクラスで行間の変更が可能だと見つけたのですが、
このテキストボックスをフォームに表示させるにはどうすればよいのでしょうか?
Desiner.csを直接編集するのでしょうか?

29:デフォルトの名無しさん
09/06/17 01:16:54
ビルドしたらツールボックスに出てくるだろ
publicなクラスじゃないとダメかも知れんが

FontHeightの解説のメモに勝手な数字入れんなって書いてるけど

30:19です
09/06/17 01:58:44
ありがとうございます。ビルドしたらでてきました!
しかし
class Hoge {
 MyTextBox1.SetFontHeight(20);
}
の”(”の部分で無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。
とでてきてしまいます・・・・

>FontHeightの解説のメモに勝手な数字入れんなって書いてるけど
あぁそうなのですか・・・・

31:デフォルトの名無しさん
09/06/17 02:14:12
メソッド内じゃないから

32:デフォルトの名無しさん
09/06/17 07:53:37
>>30
こんな感じでおk
ちなみにそのコードのMyとその前の空白が全角だぞ
class Hoge {
Hoge(){
MyTextBox1.SetFontHeight(20);
}
}


33:デフォルトの名無しさん
09/06/17 09:32:54
>>20
初期は確かにまねだったが、今はもうまるで別物と化している
ここにきて同系統の言語とは思えない。

34:デフォルトの名無しさん
09/06/17 13:01:58
クラス化したフォームを
メインフォームに貼り付けたいんだが
VC++の時の様に出来なくて困ってます。
メインフォーム側で以下のコードなのですが、

//ユーザー定義のフォームを生成
UserCtrlFrm usrFrm = new UserCtrlFrm();
usrFrm = "ほにゃらら状態を示すフォーム";
usrFrm.Text = "usrFrm";
usrFrm.Tag = 0;
usrFrm.Visible = true;
usrFrm.Location = new System.Drawing.Point(tekitou.X, tekitou.Y);
usrFrm.Size = new System.Drawing.Size(184, 432);
//メインフォームへ結びつけ
this.Controls.Add(usrFrm);

指定した座標どころか、タイトルバーの無いダイアログとして表示されてしまいます。
他に何が足りないのでしょうか?



35:デフォルトの名無しさん
09/06/17 13:07:30
フォームではなくユーザコントロールとして作る
張り付けるときにはデザイナが使えるからコードは不要

36:デフォルトの名無しさん
09/06/17 13:07:56
StartPosition
タイトルバーはFormBorderStyleあたりが影響するが

37:デフォルトの名無しさん
09/06/17 17:55:52
KeyEventArgsクラスの
KeyDataとKeyCodeってどう違うの?
ボタンを押されたら何かするってので

Form1_keydown(object sender,KeyEventArgs e)
{
if(e.KeyCode==keys.Escape)
これと
if(e.KeyData==Keys.Escape)

これが同じ動きなんだけど。
まったく同じものを二つも用意する意味がないから
何か違うんだろうけどHelpみても違いわからない。
誰か教えて

38:デフォルトの名無しさん
09/06/17 18:00:33
修飾キーが組み合わされるかどうか

39:デフォルトの名無しさん
09/06/17 21:17:39
<title>: プログラミング</title>
HTMLに出てくるこういう文字列をデコードするメソッドってありますか?

40:デフォルトの名無しさん
09/06/17 21:19:55
うん

41:39
09/06/17 21:20:56
えーと・・・
文字参照をデコードする方法です

42:デフォルトの名無しさん
09/06/17 21:22:14
HttpUtlity.HtmlDecode

43:デフォルトの名無しさん
09/06/17 21:24:55
できました!ありがとうございます!

44:19です
09/06/18 00:25:25
>>30さん>>31さんありがとうございます。

class Hoge {
Hoge(){
MyTextBox1.SetFontHeight(20);
}
}

とさせていただいたのですが、MyTextBox1がコンテキスト内に存在しません。と
エラーになってしまいます。クラスの継承などよく理解していない、ながらに質問してしまってすいません。
対処というか何が問題なのかすらわかりません。
よろしければ、どなたかヒントくださいませ。

45:デフォルトの名無しさん
09/06/18 00:34:10
なんでHogeとか出てくんの?
Form1に貼り付けてLoadイベントとかで設定するもんでしょ

46:デフォルトの名無しさん
09/06/18 02:37:54
Form1.Controls.Add(MyTextBox1);


47:デフォルトの名無しさん
09/06/18 03:58:50
誰に刺せて頂いたの?

48:デフォルトの名無しさん
09/06/18 08:07:56
おまいらHogeとかHogeHogeとかどれぐらい使ってる?(´・ω・`)

49:デフォルトの名無しさん
09/06/18 08:23:22
Hogeってどういう意味?

50:デフォルトの名無しさん
09/06/18 08:44:24
ジャイアンみたいな感じ?

51:デフォルトの名無しさん
09/06/18 08:49:20
foo, bar

52:デフォルトの名無しさん
09/06/18 10:56:17
>>48
Hoge,Hehe,Gege
foo,bar,baz
くらいかな、サンプルで何でも良い何かを表すときだけしかつかわないし

53:デフォルトの名無しさん
09/06/18 14:17:03
Hoge Fuga Mage

54:デフォルトの名無しさん
09/06/19 00:43:09
俺のお気に入りはPiyo

55:デフォルトの名無しさん
09/06/19 00:49:22
x, xx, xxx, xxxx とかよく使ったりする。
すぐ消すか、後からリネームする変数限定だけど。

56:デフォルトの名無しさん
09/06/19 01:07:05
fox

57:デフォルトの名無しさん
09/06/19 01:09:24
ほげほげ(^q^)

58:デフォルトの名無しさん
09/06/19 08:05:02
Hoge、Hage、Hige
後で見て分からなくなるぜ

59:デフォルトの名無しさん
09/06/19 19:03:27
後で見るやつに適当な名前付けんな

60:デフォルトの名無しさん
09/06/19 22:33:17
Hoge には「意味がない」という意味があるから適当な名前と
いうわけではない。一応。

61:デフォルトの名無しさん
09/06/20 00:39:29
Hogeがとあるmix廃人のhandle名が由来ってのわかる人はすでに鬼籍にしかおらんのかもしらん


62:デフォルトの名無しさん
09/06/20 00:46:12
幽霊さんですか?

63:デフォルトの名無しさん
09/06/20 00:53:47
>>60
Hogeは「意味が無い」と言う意味であれば、何かに使った時点で
その何かの意味を持つので、使うこと自体が間違いである

64:デフォルトの名無しさん
09/06/20 01:13:54
ねーぞ?ラテン語かなんか?
URLリンク(eow.alc.co.jp)

65:デフォルトの名無しさん
09/06/20 01:14:46
Hageは?

66:デフォルトの名無しさん
09/06/20 01:21:40
Hogen Sie, bitte.

67:デフォルトの名無しさん
09/06/20 10:21:07
>>61 このあいだshowさんがあれこれ書いてた

68:デフォルトの名無しさん
09/06/20 10:22:09
てか、ウニマガでhogeを使った人はmixとの接点がないのよね。

69:デフォルトの名無しさん
09/06/20 13:30:34
>>63
適当な名前をつけると意味があるように見えて混乱するので、
変数名に意味がないことを示して気に留めるなってことを示す
名前だから「適当な名前」じゃないよって話。
本来それを否定するものだから。メタ構文変数。

実コーディングに使うな(実コードで意味がないものなどないと
いう考え方)とかはまた別の話。

70:デフォルトの名無しさん
09/06/20 17:05:58
テスト的に動かすときに、クラスメイトか変数名でHogeは多用されています(´・ω・`)

71:デフォルトの名無しさん
09/06/21 03:11:40
aaa,bbb

72:デフォルトの名無しさん
09/06/21 08:40:00
>>70
そのテストプログラムが間違って配布されたら…ガクガクブルブル
うp wktk

73:デフォルトの名無しさん
09/06/21 09:22:24
そういえばジャグ配列と多次元配列でパフォーマンスが違うのは有名だが、
環境によっても左右されるんだな。
家のPCだと簡単な計算ならジャグ配列の方が速い時が多いのに、
全く同じコードを研究室のPCで実行すると多次元配列の方が圧倒的に速い。
この辺はJITコンパイラがまだまだだな。

74:デフォルトの名無しさん
09/06/21 09:36:49
ちなみに CPU に違いとかあるの?

75:デフォルトの名無しさん
09/06/21 13:40:16
JITが吐くマシン語が見れたらいいのに

76:デフォルトの名無しさん
09/06/21 15:04:45
CheckedListBoxみたいなやつで1つの項目に対して項目を追加できるのを
使いたいんですが名前がわからないので誰か知ってたら教えていただけますか。

77:デフォルトの名無しさん
09/06/21 15:07:45
日本語でおk

ListView……か?

78:デフォルトの名無しさん
09/06/21 15:08:41
よくわからん・・・
TreeView にチェックボックスつけたような感じ?

79:デフォルトの名無しさん
09/06/21 15:22:15
ちっこくてわかりにくいですが
URLリンク(118.82.122.42)
にあるムービーの5分07秒の真ん中らへんにあるやつです。

80:デフォルトの名無しさん
09/06/21 15:29:00
キャプチャして画像だけあげるとかしようよと思わんでもない
TreeViewという言葉が出てこないのはさすがにどうかと思う

81:デフォルトの名無しさん
09/06/21 15:37:17
TreeViewそのままだね。CheckBoxes = True で。

82:デフォルトの名無しさん
09/06/21 15:53:25
>>75
C#Builderならブレークポイントを掛けたら見れた

83:デフォルトの名無しさん
09/06/21 16:35:03
>>82
JIT結果のよ?
MSIL コードじゃなくて、それをさらに JIT したネイティブのマシン語。

84:デフォルトの名無しさん
09/06/21 16:38:58
TreeViewそのままでしたね、ありがとうございます。

テキストボックスに入力されているテキストとCheckedListBoxに追加した項目の名前を同期させたいと
思ってTextChangedで変更されてる瞬間にテキストを設定してるはずなのですがうまくいきません。
Refreshも最後にやったりしてるんですが変更されません。違う箇所で項目の名前の変更自体がうまく
いってないみたいなんですがどなたかわかりませんか?

85:デフォルトの名無しさん
09/06/21 16:42:42
>>83
そうだよ
x86のネイティブコードとソースの混合画面が見られた
C#Builderもラインナップから消えちゃったけどね(´・ω・`)

86:デフォルトの名無しさん
09/06/21 16:44:27
VSだとデバッグ>逆アセンブル
エディションによって見れないかどうかは知らんが

87:デフォルトの名無しさん
09/06/21 16:53:14
>>84
TextChanged内のコード書いてみ

88:デフォルトの名無しさん
09/06/21 21:55:52
>>73
ほんとかよ、ちょっと考えられないんだが。


89:デフォルトの名無しさん
09/06/21 22:12:20
通常はどっちがパフォーマンスいいの?
多次元ぽいけど。

90:デフォルトの名無しさん
09/06/21 22:15:42
要素の参照はジャグの方

91:デフォルトの名無しさん
09/06/21 22:21:30
>>90
なんで?

92:デフォルトの名無しさん
09/06/21 22:30:54
原理的には多次元配列の方が早いはずなんだけど、
.NET の場合は1次元配列の場合にのみ専用の IL 命令持ってるせいで、
JIT 次第で多次元配列がジャグ配列より遅くなることも多々あるとか。


93:デフォルトの名無しさん
09/06/22 12:43:11
フォームにBackgroundImage貼り付けてタイルっぽいデザインにしたら
途端にもの凄く重くなった。
VC++の時も貼り付けてたがこんなに重くならなかったんだが・・・
何か設定がまずいのかな?
ローカルリソースのインポートからjpg指定してるだけなんだけど・・・
プロジェクトリソースにしても余り変化は見られなかった。
どなたか軽くする方法知ってる方いたら教えて下され

94:デフォルトの名無しさん
09/06/22 17:16:56
OnPaintBackgroundをオーバーライドして自分で描画してみたら

95:デフォルトの名無しさん
09/06/22 17:35:13
何もしてない素のフォームアプリで重いの?

96:デフォルトの名無しさん
09/06/22 17:41:24
タイルじゃなくてものすごく大きな画像を貼ってるんじゃないのか?

97:デフォルトの名無しさん
09/06/22 17:49:40
こまいファイルを並べるように表示してるんじゃないの。
一つの大きな画像指定するとかすれば

98:デフォルトの名無しさん
09/06/22 18:04:38
でかい画像でかつタイル指定だと重い気がするな
タイルはデフォなので、はずして試してみるといいかも。

99:デフォルトの名無しさん
09/06/22 18:44:37
>>93
Stretchとかリッチな条件で貼ってない?

100:デフォルトの名無しさん
09/06/22 19:03:32
みんなが言うようにデカい画像→縮小でタイル表示は
元のサイズ次第で死ぬほど遅いね

101:デフォルトの名無しさん
09/06/22 21:47:51
縮小したイメージでタイルしなはれ(´・ω・`)

102:デフォルトの名無しさん
09/06/22 22:14:27
アドバイスどうもです。
縮小してやってみます。

そんな大きくないんだけどなぁ
後、余り小さくてするとちょっとしたグロ画像になってまうかもw

103:デフォルトの名無しさん
09/06/23 19:13:42
ファイルのパスだけを得たいためOpenFileDialogを使用していたの
ですが、使用中のファイルの場合「このファイルは使用されています~」
というエラーメッセージが表示されて選択できません。
回避策はあるでしょうか?
・・自分で作るしかない?

104:デフォルトの名無しさん
09/06/23 19:30:19
>>103
URLリンク(msdn.microsoft.com)

105:デフォルトの名無しさん
09/06/23 20:07:01
>>103
プロパティにない以上OpenFileDialogクラスじゃどうしようもないね

106:デフォルトの名無しさん
09/06/24 18:54:22
>>68
その系列はロビン電子経由で直接本人と面識ある派だと思う


107:デフォルトの名無しさん
09/06/24 19:17:01
ふらっとC#,C♯,C#(初心者用) Part42
スレリンク(tech板)

ふらっとの新スレご案内

108:デフォルトの名無しさん
09/06/25 14:26:55
>>106
そうなのかなぁ。
Hoge!さんから、メタ構文変数のhogeへの系譜(があるのか否か)って
まだ検証されてないよね。

109:デフォルトの名無しさん
09/06/26 22:37:12
>>104
>>105
ありがとう。
どうしても解決できなかったのと、他の理由で
作る必要が出たので自作しときます。

110:デフォルトの名無しさん
09/06/29 19:37:54
webBrowser.Navigate("URLリンク(www.xxx)");
でアクセスするとアクセスした記録が残るのに
WebRequestなどでアクセスしてもninjaツールなどで
アクセス記録が表示されないのはなんでやろ?



111:デフォルトの名無しさん
09/06/29 19:47:59
agentだろ

112:デフォルトの名無しさん
09/06/29 20:21:45
UserAgent設定してみたけどあかんね…


113:デフォルトの名無しさん
09/06/29 20:31:31
スクリプトとimg辺りで履歴取ってんだろ

114:デフォルトの名無しさん
09/07/03 15:52:52
相談させてください。

PDFのセキュリティ設定(コピー許可、印刷許可など)を読み取りできるライブラリを
どなたかご存じないですか?

アンテナハウスのサーバーベース・コンバーターはR/Wとあったからできそうですが、
たったそれだけのことに導入するのは辛すぎです。

115:デフォルトの名無しさん
09/07/03 18:51:12
>>114
PDFはアドビが仕様書配布してるよん

116:デフォルトの名無しさん
09/07/03 20:50:41
C#2008を使用しています。
エディタのプロパティウィンドのように
DataGridViewに指定クラスのプロパティを
表示、編集することは出来るでしょうか?
DataTableを作って表示させることは出来ると
思いますが、できれば
Grid.DataSource = クラス
のように簡単にいかないものかと。
BindingSourceを使ってもうまくいきませんでした。

117:デフォルトの名無しさん
09/07/03 20:54:36
PropertyGridじゃだめか

118:デフォルトの名無しさん
09/07/03 21:05:44
PropertyGridって表示する分には超お手軽だけど
ちょっと凝ったことしようとすると一気に難しくなるよねw

119:116
09/07/03 21:09:57
ぬぉぉおぉぉぉ
どんぴしゃです!ありがとう!

C#って思った以上にいろいろ揃ってますねぇ

120:デフォルトの名無しさん
09/07/03 23:38:30
>>114
中身はテキストベースだから、仕様書を精査すれば気合でパースできなくもない
Javaでいくつかライブラリあるから参考にしてみるのはどうか

121:デフォルトの名無しさん
09/07/04 00:33:17
PropertyGridは開発者専用と考えたほうがいいよ
そもそもこんなものが標準のライブラリにあるのがおかしい
WPFでは無くなってるし

122:デフォルトの名無しさん
09/07/04 03:33:20
何がおかしいの?


123:デフォルトの名無しさん
09/07/04 07:09:21
高機能で自動的過ぎて潰しが効かないという意味じゃね?
SelectedObjectのpublicなプロパティを自動表示するとかの部分。
明らかにユーティリティであって、コントロールとしては度を越えている。
WPFでは無くなっているっていうより、まだまだ練れていないから、導入は
見送っているんじゃないかなMS。

124:デフォルトの名無しさん
09/07/04 07:59:50
>>123
自動表示するから楽ちんなんじゃんw
カスタムしたければ好きなように隠せるし
存在しないプロパティをあるように見せたりも出来る

125:デフォルトの名無しさん
09/07/04 08:58:21
WPFでなくなってるのって
リストとかグリッドがアホみたいに高機能化して
PropertyGridの存在意義がなくなったからだろ
リストやグリッドの子要素として「何でも」埋め込めるんだぜ
自動表示ってのもBindingでどんなデータにも紐付けられるし

126:デフォルトの名無しさん
09/07/04 09:37:02
いずれにせよ開発者向けのツールを作るためのコントロールであって
一般のユーザーに触らせるのは間違い

127:デフォルトの名無しさん
09/07/04 09:37:46
>>114
やったことないからよくわからないけど
Acrobat SDK とか使えばできるんじゃないの。
Adobe Reader とかインストールされた環境が前提になるだろうけど。

128:デフォルトの名無しさん
09/07/04 11:35:32
hoge.GetType()==typeof(Hoge)
で型チェックしたらえらい速いんだけどJITで特別に最適化されてたりする?
左辺をいったんローカル変数に入れたら10倍くらい遅くなるみたい

129:デフォルトの名無しさん
09/07/04 11:38:45
>>127
たぶんむり
セキュリティ絡みはAdobeの有料アプリ買わないと出来ない機能だし
どうやっても金払わないことには無理だろうね

130:デフォルトの名無しさん
09/07/04 15:46:22
べつにセキュリティの設定を変更するわけじゃないんじゃないの。
たんにプロパティみたいだけでしょ。

131:デフォルトの名無しさん
09/07/04 16:05:46
>>114
URLリンク(www.ujihara.jp)
これで出来そう

132:デフォルトの名無しさん
09/07/04 16:08:37
URLリンク(stackoverflow.com)
ここに載ってるの確認すれば?
iTextSharpで全部できそうだけど(よく見てない)

133:デフォルトの名無しさん
09/07/04 16:54:20
null と 空文字 どちらでも良い場合、どっちで管理するのが一般的なの?
空文字だと??が使えなくなるから不便かな?
nullはnullで何か面倒なことになりそうな気もするし

134:デフォルトの名無しさん
09/07/04 17:51:24
文字列の操作なら""
オブジェクトの操作ならnull

135:デフォルトの名無しさん
09/07/04 18:28:25
>>128
確認してないけどコンパイル時に is に変えてるんじゃないの?
ローカル変数に入れちゃうと is に変換できないからとか

136:デフォルトの名無しさん
09/07/04 23:40:05
isに変えてるわけはない。
動作が変わってしまうから。

変数に入れると遅くなるのはTypeの取得が走るからで、
何らかの方法でハンドルの比較だけに変えられてるとかか?


137:デフォルトの名無しさん
09/07/04 23:47:47
Type.GetTypeHandle(hoge)==typeof(Hoge).TypeHandle
こんな感じになってるとか。


138:デフォルトの名無しさん
09/07/05 08:14:14
ILを見た限り違いはなかった。JITでいろいろやってるのかな。

139:114
09/07/05 08:19:35
>>131
iTextSharpならTitleとAuthorの読み取りに使ったけど、
AllowCopy関連はWriteできるけどReadIがなかった(と思う)。

140:デフォルトの名無しさん
09/07/06 08:39:41
コメントのXMLドキュメントタグって使ってる?
どうにもとっつきにくいわ、冗長だわ、読みづらいわで使わずじまいなんだけど。

141:デフォルトの名無しさん
09/07/06 08:42:26
なにそれ?といってのける俺はもしかして勝ち組?

142:デフォルトの名無しさん
09/07/06 09:43:53
大敗

143:デフォルトの名無しさん
09/07/06 09:46:03
>>140
あれは、メタデータに加工するためのものだから、読みづらい言われても…

144:デフォルトの名無しさん
09/07/06 11:08:37
//
// 機能 : あんなことやこんなことを行う
//
// 機能説明 : あんなことやこんなことを行う。
//        その中であんなことやこんなことが起きればあんなことやこんなことを行う。
//
// 引数  : ARG1 - あんなの
//        ARG2 - こんなの
//
// 返り値 : そんなの
//
// 備考 : 簡単なサンプルです。
//




145:デフォルトの名無しさん
09/07/06 11:35:22
XMLドキュメントタグを使わないと、インテリセンスにちゃんと説明が出てこないだろ。

146:デフォルトの名無しさん
09/07/06 15:09:38
>>140
どうやって読んでいるのか気になるところ

147:デフォルトの名無しさん
09/07/06 16:40:13
あのXMLは超便利だろ
インテリ効くしビルド時に出力すればヘルプファイルも作れるし

148:デフォルトの名無しさん
09/07/06 17:48:51
とあるクラスからDispoes付きのコレクションを取得して
foreachにかけるとき、全部Dispoesすべきなんでしょうか?
要素は出来るだけ早く開放したほうがいいものを想定しています。

using( クラス )
{
using( コレクション = クラス.取得 )
{
foreach( 要素 in コレクション ) {
要素.Dispoes();
}
}


149:デフォルトの名無しさん
09/07/06 17:53:22
そんなんしらんがな
クラスとコレクションと要素の製作者に聞け

150:デフォルトの名無しさん
09/07/06 18:30:19
>>140
とっつきにくい?

冗長さと読みづらさはまあ分からんでもない
コードが多少ごちゃごちゃになるからな

とっつきにくいことは無いだろう
関数とかの宣言の上でスラッシュをカカカっと三回入力するだけで
テンプレ出てくるんだから

151:デフォルトの名無しさん
09/07/06 19:16:13
>>148
using()するなら、Disposeしちゃ駄目。

152:デフォルトの名無しさん
09/07/06 19:19:40
>>151
usingしてるのはコレクション
disposeしてるのは要素
>>149のツッコミが正しい

153:デフォルトの名無しさん
09/07/06 21:27:37
Dispose は何度呼ばれても大丈夫なように作らなければならないから
何度呼んでもいいべ

154:デフォルトの名無しさん
09/07/06 23:50:03
>>140
もったいなさ過ぎると思います

155:デフォルトの名無しさん
09/07/07 00:02:46
あれだな、とりあえず

・/// で VS は色々生成してくれる
・エディタのツリーでコメントはたためる
・インテリセンスのツールヒントに注目
・Sandcastle とか使ってみる

この辺押さえろみたいな

156:デフォルトの名無しさん
09/07/07 00:13:10
>>144
なにこれ見やすい

157:デフォルトの名無しさん
09/07/07 00:25:22
>>156
そんな所見やすくてもしかたないだろ、ヘルプは使う所(インテリセンス)で見るんだから

158:デフォルトの名無しさん
09/07/07 00:37:24
>>156
タグ嫌い?英語嫌い?

159:デフォルトの名無しさん
09/07/07 03:17:06
そんなにたくさんコメント書くの('A`)マンドクセ

160:デフォルトの名無しさん
09/07/07 08:58:46
わずか2,3行のメソッドに長々としたコメントが付いてるのは糞ウザイ

161:デフォルトの名無しさん
09/07/07 21:09:34
俺が一生懸命コメント書いてドキュメント生成しても誰も読まない

162:デフォルトの名無しさん
09/07/07 21:10:40
無駄な努力乙

163:デフォルトの名無しさん
09/07/07 21:38:51
ドキュメントはたまにしか見ないな。
インテリセンスとVSのオブジェクト ブラウザでほとんどの場合は事足りてる。

164:デフォルトの名無しさん
09/07/07 21:55:13
ドキュメントは全体の流れと思想が書いてあれば大体足りる。

165:デフォルトの名無しさん
09/07/07 21:56:11
そして投げられる例外の記述が無くてキレる

166:デフォルトの名無しさん
09/07/07 22:28:40
>>160
XMLコメントやインテリセンスの登場は、ソースを読むというくだらない時間を割くのはやめるといいよ
という事なんだと思うよ

最近C#慣れしてきて、だんだんコメント不要の意見が変わってきたオレ
ソースコードの変更にコメントの変更が遅れるぐらいならソースコードをきっちり書けというのは間違っている
コメント(仕様書)にソースコードが管理されるべきだなとw
こんなに楽ちんならもう元には戻れない

167:デフォルトの名無しさん
09/07/07 22:35:21
>>166
WEB というものがあってだな・・・

168:デフォルトの名無しさん
09/07/07 22:37:54
WebもASP.NETで!

169:デフォルトの名無しさん
09/07/07 22:41:08
WEB と Web は違う。クヌース先生の Web サイトでも見てこい。

170:デフォルトの名無しさん
09/07/08 09:35:25
>>165
MSDNですら書いてない例外が飛んでくることは普通にあるしな。

171:デフォルトの名無しさん
09/07/08 19:26:11
最近やたら煽りが多いと思ったらストールマン発狂つづいてオプソ信者発狂でC#狙い撃ちだったんだなw
タコつぼで暴れてろよお前らよ

172:デフォルトの名無しさん
09/07/08 19:34:18
         ,,-‐----‐、 , -'"` ̄ ̄"`''-,__, --‐‐-..,
        /  、゙ヽ、 ‐-'´          ヽ‐- / /   ヽ
      ,/´ .., ヽ,,l_)'    zェェェァ'  ;rfァt ヽ ,ト/ /    ヽ
     /    ヽ,r' ,l′    _,,,   . __,,  ,l゙.-〈__r,'、   ヽ_
    _.l    ヽ」   ,l    .イてソ` l イにj`,/    ゙‐ヽ、_,,  /l   
    ,l l|  -'´ll   ,l      rソi"  ヽ じ'' f゙l    .,//゙l   //\ ココおかしいんじゃねえか
    l`l|     l|ヽ  v'⌒ヽ        .,ノ  j/    |l    //   }
   l  \    l| ,l  l_U>     r‐--‐ァ  ,l    |,l   //    l
   /   '\   l|`l   ゝ_,´    ゙ヽ__r′ .,.'   ___l ヽ /

173:デフォルトの名無しさん
09/07/08 20:41:31
なんかめったにこのスレで見ない大 AA が現れたの見て
>>171 はひょっとしてとちょっと思った

174:デフォルトの名無しさん
09/07/10 17:16:57
C#のソケットですが、.NET1.1から何か変更はありますか?
ソケット関連の本を買おうかと思ってるのですが、2004年の
ものなので情報が古いかなと思いまして。

175:デフォルトの名無しさん
09/07/10 17:48:38
1.1はもはやC#の方言だからやめた方がいい。

176:デフォルトの名無しさん
09/07/10 18:37:37
MSDN見て自分で補正できないレベルだったら、2.0以降用を探すようにすすめる。

177:デフォルトの名無しさん
09/07/10 19:34:02
>>176
>>175
ありがとうございます。2.0対応だったら買うことにします。


178:デフォルトの名無しさん
09/07/10 21:42:28
イベントに関して質問です。
イベント += Onイベント
イベント -= Onイベント
のように+=および-=演算子でイベントを登録/解除できると思いますが、
イベントにOnイベントが既に登録されているかどうか判断することは出来ないのでしょうか?


179:デフォルトの名無しさん
09/07/10 21:50:35
うん

180:デフォルトの名無しさん
09/07/10 21:57:56
ですよね。
残念。

181:デフォルトの名無しさん
09/07/11 01:03:27
自分で定義したイベントなら取れる。

182:デフォルトの名無しさん
09/07/11 01:11:34
>>178
通常は判別できる必要性など無いと思うが
逆に必要と思った理由を教えて欲しい
ただし、「多重登録の回避」という回答は却下

183:デフォルトの名無しさん
09/07/11 01:14:00
自分で定義したイベントでなくても取れそうだ。
Reflction なコード書くのが面倒だから、サンプルは作らんけど。

Component の Events、EventHandlerList、Delegate.GetInvocationList() あたりを
調べてみて。

184:デフォルトの名無しさん
09/07/11 01:35:17
それはそれに結びついている保証もないというか
ロジック確認してみたいなハックに等しいから
分離を破壊する(実装変わったら終了って話)ので
さすがに薦めるのどうよ
アクセサが add/remove しかないんで無理でもう
いいじゃん

185:デフォルトの名無しさん
09/07/11 10:24:34
クラスAがイベントHogedを持っていて、クラスBのなかでクラスAのインスタンスaを作り自分のメソッドHogeをHogedに登録するとする。
あるタイミングでaは破棄されるんだけど、そのときHogeはHogedからRemoveする必要ないよね?


186:デフォルトの名無しさん
09/07/11 11:02:04
うむ

187:デフォルトの名無しさん
09/07/11 11:05:58
COBOLは、データラベルについてREDIFINEで再定義を行うことができますが、
C#でも同様に、
 01 DATE
  05 YY
  05 MM
  05 DD
みたいな再定義はできますか?
よろしくお願いします。

188:デフォルトの名無しさん
09/07/11 11:19:50
union かなあ

189:デフォルトの名無しさん
09/07/11 11:21:45
ってここC#か、MarshalAs属性とか?

190:デフォルトの名無しさん
09/07/11 12:49:04
>>184
保証はあるだろ。

できる/できない の話として「できる」ってだけで、
薦める/薦めないの話じゃない。

191:デフォルトの名無しさん
09/07/11 12:58:02
ないよ
イベントはデリゲート型ではあるけど実装としてデリゲートを使う必要はない

192:デフォルトの名無しさん
09/07/11 13:05:49
+=、-= でデリゲートを使わない、具体的な例を頼む。

193:デフォルトの名無しさん
09/07/11 14:14:03
int a = 1, b = 2;
a += b;
a -= b;

194:デフォルトの名無しさん
09/07/11 14:26:49
>>190
いや、完全に実装依存。
あるイベントについて現時点で動作するロジックなら書ける。
でも、全てのイベントについて今後永久に動作するロジックは無理。


195:デフォルトの名無しさん
09/07/11 14:29:51
>>191
イベントはデリゲート型ではあるけど

これは違うような。。

196:デフォルトの名無しさん
09/07/11 15:13:43
C#のテキストボックスで、
・高さ指定&文字列の縦配置を中央にする。
・高さ指定&padingを設定する。
以上のいずれかは可能でしょうか。
老人向けの大きな見栄えの良いボックスを作りたいのですが…。

197:デフォルトの名無しさん
09/07/11 16:15:45
>>185-186
の件だけど、これってデリゲートが弱参照だってことだよね。
ヘルプで見つからないフシアナな俺に、どこに書いてあるか教えて。

198:197
09/07/11 16:16:58
あ、ごめん。aを破棄した時か。
じゃあ問題ないな。

199:デフォルトの名無しさん
09/07/11 16:33:39
Win32APIのスレで聴いたのですがスレ違いとのことでした。.NETの
クラスで解決できるでしょうか?

現在、.NETアプリケーションでWebBrowserコントロールにおいて
フォルダのExplorer表示を出しています。そうすると必ずあの青色の
「タスクメニュー」が現れてきます。

通常のエクスプロ-ラだとそれをフォルダツリーに置き換えたり、
検索ツールに置き換えたりできました。

自分のアプリケーション上で、あのタスクメニューを消してしまうことは
できるでしょうか?できるようであればその方法を教えてほしく。

ちなみに、エクスプローラのオプションで「全般」タブ→「作業」のところ
で、「従来のWindowsフォルダを使う」を選ぶとタスクメニューはでなくは
なるのですが、そうすると、Xpでは「写真」表示ビューが使えなくなって
しまうので、「フォルダに共通の作業を表示する」の方で使いたいので
した。このオプションの状態で、プログラムから「タスクメニュー」を消す
方法がありましたら教えてください。

よろしくお願いします!

200:デフォルトの名無しさん
09/07/11 20:20:40
>>187
自分ならプロパティで実装するかな?
.NETクラスライブラリのSystem.DateTimeにも
Year, Month, Dayプロパティがあるから、プロパティによる実装がC#流のはず

201:デフォルトの名無しさん
09/07/11 21:06:20
>>196
Multiline=trueにすれば高さ指定はできるけど、
老人向けならフォントをでかくすればいいだけじゃないの?

202:デフォルトの名無しさん
09/07/11 21:58:13
>>200追記
REDEFINES句の例としてはSystem.DateTimeは不適切だったかも

01 DATE-STRING PIC X(6).
01 DATE REDEFINES DATE-STRING.
05 YY PIC 9(2).
05 MM PIC 9(2).
05 DD PIC 9(2).

のようなことをやりたい?
これもプロパティによる実装が良いと思う。

203:デフォルトの名無しさん
09/07/11 23:37:33
>>202
ありがとうございます。
プロパティをオリジナルで定義するということでしょうか。

204:デフォルトの名無しさん
09/07/11 23:42:26
>>201
ありがとうございます。
操作性と見栄えを重視したシステムにしなければならないんので、
テキストボックス内の上下の余白をゆったり目にとって、
かつ中央揃えにしたいんです。
これはc#では不可能なのでしょうか…。

205:デフォルトの名無しさん
09/07/11 23:48:30
>>204
TextBox を使わないで独自コントロールを使うとか
Panel 上に透明な TextBox を乗せてごまかすとか。

206:デフォルトの名無しさん
09/07/12 00:16:23
system.windows.controls.control.padding

207:デフォルトの名無しさん
09/07/12 00:27:58
>>204
少なくとも、C#そのものは関係ない。
(というか、C#のテキストボックスなんてないだろ)
どういうGUIコンポーネントを使うかは関係がある。

208:デフォルトの名無しさん
09/07/12 00:35:48
WPFを使えばどうも簡単にできるみたいだけどね・・・。開発環境がまだ完成しきってないし、Vista以降ターゲットになっちゃうけど

209:デフォルトの名無しさん
09/07/12 00:41:51
>>208
普通にXPで動くけど?

210:デフォルトの名無しさん
09/07/12 01:14:44
>>209
そうなんだ!勘違いしていたよ!

211:デフォルトの名無しさん
09/07/12 01:25:20
>>206
そんな名前空間、あったっけ…?
探しても見つからない(-_-;)。

212:デフォルトの名無しさん
09/07/12 01:27:42
すいません。
VisualC#2008で、フォームアプリケーションを作っているんですけど
フォームの多重表示を禁止したいのですが、検索してみつけたソースどおりにしても
まだ多重表示をされます。なにかソースがおかしいのでしょうか?

表示するフォーム=about.cs

about about = null;
if ((about == null) || about.IsDisposed)
{
about = new about();
about.Show();

}
参考ページ:URLリンク(homepage3.nifty.com)

213:デフォルトの名無しさん
09/07/12 01:29:00
ローカル変数においといちゃダメだろ

214:デフォルトの名無しさん
09/07/12 01:44:44
>>206
C#でその名前空間を使うにはどうすればいいの?

215:デフォルトの名無しさん
09/07/12 02:21:36
>>211>>214
WPFの一部だから基本的にWPFプロジェクトで使う。
URLリンク(msdn.microsoft.com)

216:デフォルトの名無しさん
09/07/12 03:06:00
C♯では、テキストボックスのパディングや縦位置の中央揃えが存在ないということ?
そんな…まさか…。

217:デフォルトの名無しさん
09/07/12 03:25:54
>>216
C#に押し付けるとは・・・まだまだ青いな

218:デフォルトの名無しさん
09/07/12 06:56:46
>>217
もしかしてこれからはWPFの時代ですかね…?
C♯でできる裏技があればゆいのですが(*_*)

219:デフォルトの名無しさん
09/07/12 07:29:19
>>216
あるからググレ

220:デフォルトの名無しさん
09/07/12 08:01:33
WPFの柔軟性は異常。
Formsは今後のバージョンアップ
は見込めないらしいね。

221:デフォルトの名無しさん
09/07/12 08:50:00
ググるまでもなく>>215のリンク先に答えが書いてあるし
>>216とか>>218は言語フィルタでC#外しているのか

222:デフォルトの名無しさん
09/07/12 11:51:05
          ____   
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    
    |      |r┬-|    |      今後永久に動作するロジックは無理
     \     `ー'´   /      
    ノ            \
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /     |r┬-|    | (⌒)/ / / //  だっておwwwwwwwwwwwwwwwwwww
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/    当たり前だろwwwwwwwwwwwwwww
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー'´      ヽ /    /     バ
 |    |   l||l 从人 l||l      l||l 从人 l||l  バ   ン
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、    ン
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


223:デフォルトの名無しさん
09/07/12 12:47:15
>>215
俺も読んでみたけど、分からないんですが…。
テキストボックスのプロパティで縦の位置を中央揃えに指定できないし、
windows.control名前空間もC#だと見当たらない。
>>216
ぐぐっても出てこないよー…。

224:デフォルトの名無しさん
09/07/12 13:02:34
>>223
URLリンク(hanatyan.sakura.ne.jp)
vbだけど

225:デフォルトの名無しさん
09/07/12 13:48:29
system.windows.controls.control.padding
ってアドインみたいなものっすか?
3.5入れてるけど出てこないんです。

226:デフォルトの名無しさん
09/07/12 13:54:21
>>225
URLリンク(msdn.microsoft.com)

227:226
09/07/12 14:09:55
>>225
暇だからきちんと説明するか。
新規のwindowsアプリケーションを作成する。
追加->新しい項目->ユーザーコントロール(WPF)
UserControl1.xamlの<Grid></Grid>要素の間に>>226の<Button>~</Buttion>を入れる。
デザイナにPaddingと表示されたButtonができる。
これをダブルクリックすればvoid ChangePadding(object sender,RoutedEventArgs e)がソースに自動追記される。
>>226にあるコードを実装する。
そしてwindowアプリケーションの方に戻り、Form1のデザイナの上にツールボックスからUserControl1を貼り付ける。

以上

228:デフォルトの名無しさん
09/07/12 14:42:14
>>227
ありがとうございます。
すみませんが、
テキストボックスの高さをゆったりともたせ、
paddingを使って文字を縦中央に配置したい場合、
このコントロールでどう設定すればよいのでしょうか。
どうか、見捨てないでください。

229:デフォルトの名無しさん
09/07/12 15:03:52
C#は関係ないし、WPFスレに行けば?
その前に、URLリンク(msdn.microsoft.com)
ここと、関連する情報は読んで理解しておいてね。

230:デフォルトの名無しさん
09/07/12 15:26:29
>>229
C♯は関係ないの?
今までの話とちがうよ。

231:デフォルトの名無しさん
09/07/12 15:29:02
そもそもFormsもC#と関係ないがな(´・ω・`)


232:デフォルトの名無しさん
09/07/12 15:33:41
>>230
System.Windows.FormsもC#と関係ない。
C#という言語を使って、System.Windows.Formsというアセンブリを使う
だけ。C#から使おうがVisual Basicから使おうがIronPythonから
使おうが、使い方に違いはない。

言語(C#)とフレームワーク(.NET)とその中のライブラリ(System.Windows.Formsアセンブリ)の
区別が全くつきませんか?

233:デフォルトの名無しさん
09/07/12 15:41:14
232を書いた後、あれ、アセンブリは不適切?名前空間と言うべきだった?
でもこの文脈で区別するとますますとっつきにくくなるよな。

と思ったが、System.Windows.Forms.dllだった。よかった。

234:デフォルトの名無しさん
09/07/12 15:50:18
>>229


235:デフォルトの名無しさん
09/07/12 15:52:06
>>229
結局、テキストボックスの縦中央に配置するにはどうしたらよいの?

236:デフォルトの名無しさん
09/07/12 15:59:01
プロパティで項目一通り探してみればいいダロ
VerticalContentAlignmentとかそのものな項目が見えるけど

237:デフォルトの名無しさん
09/07/12 16:30:51
>>235
>>229のリンク先は読んだの?読んだら、どこが分からなかったの?

238:デフォルトの名無しさん
09/07/12 16:45:01
言語非依存WinFormsスレなんかあってもまず機能しないだろうな
WPFは現状VBerがほとんどいないからこそ専用スレが成り立つ

239:デフォルトの名無しさん
09/07/12 16:50:33
>>238
実際、以前.NETスレがあったが、過疎だった。
みんなC#とかVB.NETのスレへ流れるもんだから。

240:デフォルトの名無しさん
09/07/12 17:01:34
WPFにはXAMLという共通言語があるし
言語とライブラリを混同するようなレベルの初心者ユーザも少ないからな

241:デフォルトの名無しさん
09/07/12 17:17:18
>>212
aboutっていわゆるバージョン情報のフォーム?
だとすると、面倒なことをせずにShow()ではなくShowDialog()で一つ表示する方法が普通だと思うけど

242:デフォルトの名無しさん
09/07/12 17:29:10
>>237
あの…恥ずかしながら、
ユーザーコントロールを追加しましたが、
テキストボックスのパディングをどこで設定するのか…
またはテキストボックスの垂直の位置をどこで中央にするのか…
(水平の中央はありますが)
が分からないんです。

243:デフォルトの名無しさん
09/07/12 17:29:31
>>239
俺もそのスレ見てたわ。
次スレどうしようか悩んだけど、過疎ってたのでやめといたら結局誰も立てなかった・・。

244:デフォルトの名無しさん
09/07/12 17:33:08
Gridの中にテキストボックスを入れるんだよ

245:デフォルトの名無しさん
09/07/12 17:34:11
テキストボックスじゃなくていいならラベルで出来る

246:デフォルトの名無しさん
09/07/12 17:37:31
関係ないけど、WPFではLabelは特殊なコントロールで、普通の文字描画には使わないんだよ
TextBlockというのを使う

247:デフォルトの名無しさん
09/07/12 17:41:23
グリッドってなんだろ…
(T_T)?

ところで、テキストボックスのパディング設定は果たしてできるのかな。

248:デフォルトの名無しさん
09/07/12 17:46:47
Paddingの追加って、こんな感じに入力するだけでしょ。
<TextBlock …… Padding="10">……</TextBlock>

249:デフォルトの名無しさん
09/07/12 17:49:58
Paddingプロパティがあるだろ?
パディングはそのコントロールの親(GridやBorderなど)を基準にして行われる
WPFはとにかくコンテナ(WinFormsでいうPanelみたいなもの)をネストしまくるんだ

250:デフォルトの名無しさん
09/07/12 18:19:59
>>249
それは、Windowsアプリケーションでも可能なの?

251:デフォルトの名無しさん
09/07/12 18:22:24
>>217

252:デフォルトの名無しさん
09/07/12 18:24:16
何この馬鹿は。
やってから言えよカス。

253:デフォルトの名無しさん
09/07/12 18:26:27
Windowsアプリケーションには
textblockとかgridってあるのかな。

254:デフォルトの名無しさん
09/07/12 18:30:15
WinFormsなら無い
ユーザーコントロールに枠線消したTextBoxを張る
みたいな汚い方法しかない

255:デフォルトの名無しさん
09/07/12 19:02:18
ビジュアル重視ならば、
WPFで作った方がよかったんじゃないかな。
俺もよく知らないけど。

256:デフォルトの名無しさん
09/07/13 00:13:27
見た目こそWPFの領分だね

257:デフォルトの名無しさん
09/07/13 00:55:49
しまったな…
俺もWPFで作れば良かった。
できることはWindowsアプリケーションと変わらないし。

258:デフォルトの名無しさん
09/07/13 01:37:11
何だか勘違いしてるようだけど、WPFで作ってもWindowsアプリケーションだよ。
場合によってはMFCとか.NETじゃないやつまで含んじゃう言葉だから、誤解を避けるためにWinFormsって書く方がいい。

WinFormsで見た目をちょっと改善しようと思ったら、自前で描画するとか泥臭い手段しか無かったというのはよくある話。
WPFでは馬鹿みたいに(褒め言葉)柔軟で何でも出来るけど、設計思想がWinFormsやMFCとは別物の新しいやつだから、最初は戸惑うと思う。

259:デフォルトの名無しさん
09/07/13 07:29:50
そして起動が遅いと言われるわけですな

260:デフォルトの名無しさん
09/07/13 09:54:35
Formでやるなら>>224でいいじゃない

261:デフォルトの名無しさん
09/07/13 11:19:26
ListViewでItemをひとつひとつ.Selected=Trueする方法で選択していくと、
Items.Count が非常に多い場合にはあまりに時間がかかりすぎることが
わかりました。

Items.Count=10000ぐらいで2分ぐらい(Core2Duo/2GHz)。

ところが例えばExplorerでファイルを同じくらい用意してやってみると瞬時に
全部が選択されました(3秒ぐらい)。これと同じ程度のスピードで選択
したいと思います。良い方法がありましたらご指導のほどお願いしたく。

よろしくお願いします。

262:デフォルトの名無しさん
09/07/13 11:49:28
試したけど3秒くらいだったよ。
イベントハンドラがあったりする?
あと描画関係なら、BeginUpdate - EndUpdateで挟むとか

263:デフォルトの名無しさん
09/07/13 11:59:23
>>262
実地に調べてまでして下さり、大変ありがとうございます!
いろいろすみませんです。

>BeginUpdate - EndUpdateで挟む

これたった今やってみました。結果として時間の変化はありませんでした。

>イベントハンドラがあったりする?

わかりました、すぐ調べてみます。どうもです!


264:261
09/07/13 12:15:11
>>262
>イベントハンドラ

この件、仰るとおりでした。Selectされた時点で、何かのメッセージの
Hookが行われているようでした!これは別のコントロールのものでしたが
対策を考えてみます。ご指導、大変どうもでした!助かりました!


265:デフォルトの名無しさん
09/07/13 19:26:25
インデックスで回してない?
foreachにすれば大丈夫だと思うけど。

266:デフォルトの名無しさん
09/07/13 23:23:23
VirtualModeにしてみたら?

267:デフォルトの名無しさん
09/07/14 09:41:49
良く使うジェネリックコレクションは何?
とりあえずList<T>とDictionary<T>覚えておけばいい?

268:デフォルトの名無しさん
09/07/14 09:42:31
Dictionary<K,V>だった。

269:デフォルトの名無しさん
09/07/14 09:52:07
K,VじゃなくてTKey,TValueな
型パラメータの命名ガイドラインは接頭辞Tプラスその型引数の意味
(ただし用途が明らかな場合List<T>とかはT一字でOK)

2.0ならあとはLinkedList<T>, KeyedCollection<TKey, TItem>辺り?
あ、Queue<T>とStack<T>があった
3.0(WPF)ならObservableCollection<T>
3.5はHashSet<T>とか? コレクションじゃないけどやはり最重要はIEnumerable<T>だな

270:デフォルトの名無しさん
09/07/14 10:24:18
>>269
ふむふむ。
IEnumerable<T>はLINQで出て来るなあ。
ObservableCollection<T>はWPF本で出てきたけど
まだいいや。

List<T>
LinkedList<T>
KeyedCollection<TKey, TItem>
Dictionary<TKey, TValue>
IEnumerable<T>

とりあえずこのあたりからマスターする。


271:デフォルトの名無しさん
09/07/14 10:29:51
あ、KeyedCollectionは後で良いよ
つか全体にマスターするほどでもないような
IEnumerable<T>以外は

272:デフォルトの名無しさん
09/07/14 13:37:18
T[] も忘れないで上げてください、影薄いですけど

273:デフォルトの名無しさん
09/07/14 21:15:32
>>269
.NETの型引数の命名規則は合理的で優れてるよな
java式のK,Vとかイミフ

274:デフォルトの名無しさん
09/07/14 21:33:54
Tとかそういう意味だったのかw
ほかの引数にSとかUとかつけてたわw

275:デフォルトの名無しさん
09/07/14 21:43:12
c++テンプレートのTypenameだよね

276:デフォルトの名無しさん
09/07/14 21:44:53
>>274
SとかUってどういう意味よ?w

277:デフォルトの名無しさん
09/07/14 21:45:31
SとかUつける人いるんだw

278:デフォルトの名無しさん
09/07/14 21:46:57
アルティメットファイナルクソワロチw

ま、俺はVをつけてたけど。

279:デフォルトの名無しさん
09/07/14 21:56:52
>276,277
いや、Tの前とか次の文字とかw
HogeHoge<S,T,U>ってかんじ。

280:デフォルトの名無しさん
09/07/14 22:08:04
型引数を真面目に変数っぽく名前考えてるのって
C#くらいだよね
javaもc++もそんな習慣無い

281:デフォルトの名無しさん
09/07/14 22:23:47
C++には型引数に普通の名前付ける文化もある(STLなど)
わかりやすいけど普通の型名と見分けがつかないので、
.NETの(プリフィクス)+(意味)はその落としどころ

282:デフォルトの名無しさん
09/07/14 22:30:04
>>281
今VC9見たら真面目に命名してるな
VC6とか_Aとか_Cとかだったんだが

283:デフォルトの名無しさん
09/07/14 23:45:07
>>280
.NET も初めからそうだったわけではなく、型引数のこの命名は
ベータかどっかでやっぱりこうしようみたいに一気に変えたんだよ
確か。Connect とかの Suggestion も絡んでた気がする

出来上がりとか見てみんな思うところがあったんじゃないかな

284:デフォルトの名無しさん
09/07/14 23:52:12
>>283
.NET 2.0ベータ中は一文字だった、ように記憶してる
リリースされた正式版のドキュメント見て初めは違和感あった

285:デフォルトの名無しさん
09/07/14 23:57:32
制約がわかりやすいのはいいよね
TEventArgs : EventArgs なんか神

286:デフォルトの名無しさん
09/07/15 00:09:02
>>284
ああごめん。
>出来上がりとか見て
はベータのです。
なんか変わると発表したときにフィードバックの存在を
書いていた記憶があるから。

287:デフォルトの名無しさん
09/07/15 00:17:22
おまいらC#でオープンソースとか使ってる?
Log4netはつかってるがほかゴリゴリ書いてるので時間かかるお(´・ω・`)
URLリンク(csharp-source.net)

288:デフォルトの名無しさん
09/07/15 03:22:30
SerialPortクラスについて質問

DataReceivedイベント使えばVC++の時みたいに自分でスレッド組まなくて済みそうで楽出来そうなんだけど
実際に受けてみると欠ける時がある
STXhoge123ETX
↑見たいなデータが改行無しで垂れ流しで延々と来るんだけど
たまに
STXhoge123ETX
STXhoge124ETX
STXhoge125ETX
STXhoge126ETX
STXhoge127ETX
STXhoge128ETX
STXhoge129   ←ETXが受けれて無かったり
STXhoge134ETX←間の130-133までが無かったり・・・

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
 string recvData = serialPort1.ReadExisting();
 Console.WriteLine(recvData);
}
こんな感じで直接出力しても途切れる・・・
何故なんでしょうか?誰か詳しい人教えて

289:デフォルトの名無しさん
09/07/15 03:22:38
すいません。質問ですが、
new RelayCommand(param => this.OnRequestClose());
この=>はどういう意味があるのでしょうか?


290:デフォルトの名無しさん
09/07/15 03:34:36
ラムダ式
URLリンク(ufcpp.net)

291:デフォルトの名無しさん
09/07/15 05:26:44
>>288
フロー制御はうまく言ってる?

292:デフォルトの名無しさん
09/07/15 06:30:27
>>290
おお、ラムダ式。
どうもありがとうございました。

293:デフォルトの名無しさん
09/07/15 14:06:19
ジェネリクスのクラスの型パラメータを配列に制限したい
のですが、以下だと上手く行かないようです。

class Widget<T> where T : IEnumerable
{
public void Iterate(T arr)
{
foreach (object item in arr)
{
Console.WriteLine(item);
}
}
}

・型パラメータTは、競合する制約IEnumerableおよびobjectを継承します
・foreachステートメントは、TがGetEnumeratorのパブリック定義を含んで
いないため、型Tの変数に対して使用できません。

というエラーが出ます。どうかご教示願います。

294:デフォルトの名無しさん
09/07/15 14:13:11
間違ってない
それだけならコンパイル通るし動く
他のところに問題がある

295:デフォルトの名無しさん
09/07/15 14:13:14
ジェネリックでdelegateを指定するにはどうすれば
いいでしょうか?
やりたいことは
public delegate_T func<delegate_T>( string str )
こんな感じなんですが。

296:デフォルトの名無しさん
09/07/15 14:25:37
コンパイル時にチェックするのは無理
Expression<TDelegate>みたいに、名前だけそれっぽくして実行時にチェックする

297:デフォルトの名無しさん
09/07/15 14:31:40
typedefがないので無名になるが
Func<string, int> func;
funcがstringを受け取ってintを返す関数になる
戻り値がdelegateって言うなら
Func<string, Action> func;
とかです

298:デフォルトの名無しさん
09/07/15 14:44:14
>>294
レスありがとうございます。
using System.Collections;
を宣言していませんでした。

299:デフォルトの名無しさん
09/07/15 15:04:49
>>296>>297
上で書いたような書式じゃ無理ということとですね。
Funcとか知らなかったので試してみます
ありがとう

300:デフォルトの名無しさん
09/07/15 16:12:22
C#入門としてオススメな本があれば教えて下さい

301:デフォルトの名無しさん
09/07/15 16:20:19
>>291
レスありがとう

フロー制御に問題がある様には思えません
送信側と合わせてるので


疑似で
STXhoge0ETX~STXhoge5000ETX
までのデータを作ってtxtファイルにして
ハイパーターミナルからテキストファイルの送信で流してみたんですが
5000までデータはあるのにコンソール上には200行から300行くらいまでしか出てこない・・・
フロー制御もいろいろ設定変えて試したんですが変わらずです・・・


302:デフォルトの名無しさん
09/07/15 16:53:02
症状はどう見てもバッファあふれだろう。

>フロー制御に問題がある様には思えません 
経験的にいえば強く思い込んでるところが間違ってる可能性が高いな。
コントロールパネルで設定したとか言うなよ。
あとPC-PCでの接続だったらリバースケーブルになるけど、
結線に種類があってハード制御用のラインが自分のほうに戻ってきてるのもあるから要注意。

303:デフォルトの名無しさん
09/07/15 17:36:23
threshold設定してるだけ?
アレってあんまり信用ならなかったとおもう

304:デフォルトの名無しさん
09/07/15 17:37:26
概算じゃなくてデータのサイズきっちり計算してバッファと比べたりしようぜ

305:デフォルトの名無しさん
09/07/15 19:30:24
すいません。質問です。

C#や.NETの資格で、MS社以外のものはありますか?

また、MCPですが、
70-505 TS: Microsoft .NET Framework 3.5, Windows Forms Application Development
などの「開発経験が 1 年以上」は、大学の研究室での開発や趣味プログラミングでも大丈夫でしょうか?


306:デフォルトの名無しさん
09/07/15 21:48:39
Console.WriteLine(new Uri("URLリンク(example.com)"));

この出力が "URLリンク(example.com)" になるんですが、これってバグですか?

307:デフォルトの名無しさん
09/07/15 21:52:30
いいえ

308:デフォルトの名無しさん
09/07/15 22:03:26
sample/../foobar.txt

/ を足して味噌

309:デフォルトの名無しさん
09/07/15 22:07:41
>>308
いや、それはわかるけど、俺が聞きたいのはそれじゃない。
".." が消えているのはなぜかと、どうすれば回避できるのか、だ (´・ω・`)

310:デフォルトの名無しさん
09/07/15 22:22:46
OriginalStringプロパティ

311:デフォルトの名無しさん
09/07/15 22:27:16
URIの仕様としては>>306の動作は正しいのかい?

312:デフォルトの名無しさん
09/07/15 22:42:31
RFC2396

Similarly, parsers must avoid treating "." and ".." as special when
they are not complete components of a relative path.

これ?

313:デフォルトの名無しさん
09/07/15 22:45:45
sample.. の .. を特別扱いしちゃいけないから
>>306の動作は仕様を満たしてないってことかな

314:デフォルトの名無しさん
09/07/15 22:49:36
>>310
Console.WriteLine(new Uri(new Uri("URLリンク(example.com)"), "sample../foobar.txt").OriginalString);
ごめん。こういうのを書いて、ちょっと (´・ω・`) とした。

RFC か何かで規定されているなら、まあ無視しちゃって良いかなって気にはなるんだけど、
まだ読みきってないス (´・ω・)

315:デフォルトの名無しさん
09/07/15 23:25:59
全然関係ない。
趣味でも十分な奴もいれば仕事でも無理な奴もいる。


316:デフォルトの名無しさん
09/07/15 23:27:39
ふらっとの誤爆か?

317:デフォルトの名無しさん
09/07/16 19:30:14
Path.DirectorySeparatorCharとPath.AltDirectorySeparatorCharを
くっつけたものを出来ればconstで定数にしたいんですが
どう書けばよいでしょうか?
もしくはC++の関数内で
static string str = "123";
みたいなことは出来ないでしょうか?

別な方法はありますが、これが出来るとすっきりしそうなのです。

318:デフォルトの名無しさん
09/07/16 19:40:42
readonlyじゃ駄目なの?

319:デフォルトの名無しさん
09/07/16 19:57:42
>>318
なるほど。うまくいきました。
readonly static string str = string.Format( "{0}{1}", Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar );
ちなみに
>もしくはC++の関数内で
>static string str = "123";
>みたいなことは出来ないでしょうか?
これって出来ますか?

320:デフォルトの名無しさん
09/07/16 20:01:25
できない

321:デフォルトの名無しさん
09/07/16 20:04:56
そうですか・・。
了解しました。

322:デフォルトの名無しさん
09/07/16 21:15:10
>>319
C++で関数内のstatic string str = "123";は可能では?
まあスレ違いになるからC++スレで聞け。

323:デフォルトの名無しさん
09/07/18 00:36:11
internal修飾子の使いどころがイマイチわからん

324:デフォルトの名無しさん
09/07/18 00:40:57
ライブラリ作成をしてみると分かるんじゃないか

325:デフォルトの名無しさん
09/07/18 00:41:24
プログラムをDLLで分割しまくって
アクセス制限考え出すとわかる

326:デフォルトの名無しさん
09/07/18 02:26:16
TabIndexに-1を指定できるようにしてほしい

327:デフォルトの名無しさん
09/07/18 03:00:27
何故?

328:デフォルトの名無しさん
09/07/18 03:09:19
使用していないことを明確に表すため

329:デフォルトの名無しさん
09/07/18 03:16:08
継承して、使用していないことを明確に表すため のプロパティを用意すればいいじゃん

330:デフォルトの名無しさん
09/07/18 03:31:49
いえ、相談ではなく提案です
TabIndexプロパティの仕様の話で、-1が使えた方がスマートだということ

331:デフォルトの名無しさん
09/07/18 03:35:20
でもそれだとデザイナで設定できなくなるし、
そもそもTabStopがあるからいらないと思う

332:デフォルトの名無しさん
09/07/18 03:38:55
どうでもいいオブジェクトのTabIndexの値がふらふらしてて気持ち悪い
収まりが悪い

333:デフォルトの名無しさん
09/07/18 07:04:28
そう良かったね。

334:デフォルトの名無しさん
09/07/18 08:19:21
使ってないやつは-1とか
発想が前時代的

335:デフォルトの名無しさん
09/07/18 14:04:06
そうだな。
TabIndexはタブの移動順序を決めるためのプロパティだから、タブの有効/無効とは無関係だよな。
TabEnableてきなプロパティを作るべき。


336:デフォルトの名無しさん
09/07/18 14:27:34
ヌルあぶればいいじゃない

337:デフォルトの名無しさん
09/07/19 04:05:27
おまえらセンス無い

338:デフォルトの名無しさん
09/07/19 04:05:56
ごめん

339:デフォルトの名無しさん
09/07/20 10:11:32
2つの256色ビットマップを読み込んで(パレットは2つとも同じ)、
1つの大きな256ビットマップに描画して、保存したいと思っています。

System.Drawing.Bitmapオブジェクトは作成できたのですが、
ピクセルフォーマットがFormat8bppIndexedになっているので、Graphicsオブジェクトが作成できません。

256色ビットマップに描画するには、どのようにすればよいでしょうか?

340:デフォルトの名無しさん
09/07/20 10:42:12
1枚をRead→Writeはできてるの?

341:デフォルトの名無しさん
09/07/20 10:44:29
>>339
Bitmap コンストラクタ (Int32, Int32, PixelFormat) でコピー先ビットマップ作って
GetPixcel/SetPixelで書き写すしかないんじゃね?

342:デフォルトの名無しさん
09/07/20 11:45:19
最近、ビットマップ合成がらみを色々見てて、
2.0以前のSystem.Drawing.Bitmapよりも、
3.0以降のSystem.Windows.Media.Imaging.BitmapSource と
WriteableBitmap の方が使いやすかった。

343:デフォルトの名無しさん
09/07/20 12:19:39
そんなことSetPixelでやったら死ぬよ
LockBitsだな
WPFが使えるならもちろんそっちの方が遥かに便利で強力

344:デフォルトの名無しさん
09/07/20 12:27:12
結局、32bitBitmap上に描画し、LockBitsして32bit->8bit変換を行いました。

回答してくださった方、どうもありがとうございました。

345:デフォルトの名無しさん
09/07/20 12:28:08
>>344>>339です。

346:デフォルトの名無しさん
09/07/22 02:08:09
会社で社内の業務改善ツールを任されることになりました
上からJavaかC#を選ぶようにいわれましたが
どちらが扱いやすくて今後の将来性がありますか?

347:デフォルトの名無しさん
09/07/22 02:12:17
C#スレで訊いたらC#と答えるに決まっているだろう

348:デフォルトの名無しさん
09/07/22 02:23:27
>>346
Javaスレで聞いたら?
Javaって返ってくるだろうけど。

まぁ、アレですよ。
自分で使いたいと思うほうを使えばいいと思います。
どっちも将来性なんて分からないので。

349:デフォルトの名無しさん
09/07/22 02:29:17
>>346
製作されたソフトウェアのどちらが長期使用に耐えられるかと言ったら
C#だろうな

350:デフォルトの名無しさん
09/07/22 04:16:08
URLリンク(www10.ocn.ne.jp)

RPGClientでログインして、少し動かした後で切断。再度ログインすると、KeyNotFoundExpectionが発生してしまう。

しらべてみると、MapChangReq()のunits.setUnit()でunitlistに登録したキーの値がfindUnit()でキーを元に検索しようとする前の段階で入れ替わってるのが原因だとわかった。

でも、治し方がわからない。
詳しい人がいたら教えてほしい。

351:デフォルトの名無しさん
09/07/22 07:48:58
Windows環境限定でいいんだったらC#でいいんじゃね?


352:デフォルトの名無しさん
09/07/22 07:59:31
互換性考えるとC89だよな

353:デフォルトの名無しさん
09/07/22 08:37:00
コンシューマ用ならC#が俄然有利な気がするが
後方互換保ってくれるかわからないんだよなぁ
なんだかんだで10年来動き続けてるVB6という手も怖い

354:デフォルトの名無しさん
09/07/22 09:17:18
>>352
互換性(笑)

>>353
少なくとも IL は互換性保たれるんじゃないかな。


355:デフォルトの名無しさん
09/07/22 09:48:41
>>350
プロジェクト開けねーじゃねーか・・・XNA入れないとならんのか?メンドクサ

356:デフォルトの名無しさん
09/07/22 10:01:33
>>350
解凍できね

357:デフォルトの名無しさん
09/07/22 10:25:04
>>356
7zipで解凍できたよ。

>>350
ぱっと見なんだけどRPGServerをリブートしていたというオチではないか?
UnitManagerのunitlistをセーブしたりしている箇所はどこだ?

しかし、なんかUnitの管理とかが微妙な感じがする。
精査したわけじゃないが、unitsが座標ごとに持ってる部分とか。

358:デフォルトの名無しさん
09/07/22 12:04:26
>>357
RPGServerをリブートしているという落ちは残念ながありませんw
unitlistをセーブしている部分はsetunit、removeall、removeUnitの三つです。



359:デフォルトの名無しさん
09/07/22 13:40:05
>>358
右クリックして、送る→圧縮(zip 形式)フォルダ
で圧縮したものでうpしなおしてくれ。

360:358
09/07/22 13:54:39
>>359
すまん。今使ってるウィンドウズにはその機能はない。

361:デフォルトの名無しさん
09/07/22 14:44:12
>>360
機能がないんじゃなくてテメーが無効にしたんだろ。

362:デフォルトの名無しさん
09/07/22 15:05:03
使っているWindowsかビルド環境が古いというオチか。

363:デフォルトの名無しさん
09/07/22 16:11:02
Vistaの標準のエクスプローラで解凍できたけどな

364:デフォルトの名無しさん
09/07/22 16:33:30
>>358
んじゃ、recive_packetでMapChangReqコマンドを投げる前にHandleInput受け取って
SetPosコマンド投げた。とか?
は無いか、initedチェックしてるから。

わかんね。ギブ。

ただ、ひとつ気になったのはunitlist.Add(id, u);。
Dictionary#Addは「ただし、指定したキーが Dictionary<(Of <(TKey, TValue>)>) 内に
既に存在する場合、Item プロパティを設定すると既存の値が上書きされます。
一方、Add メソッドは、指定したキーを持つ値が既に存在する場合、例外をスローします。」

365:デフォルトの名無しさん
09/07/22 22:30:01
何が何だかよくわからない。
切断した後IPとか変わってても大丈夫なの?

366:デフォルトの名無しさん
09/07/22 22:54:46
駄目だけど、そこんとこはまた別の問題。
ツッコミどころはまだまだ多いけど、それは一つずつ解決していくしかなかろう。
とりあえず、結構頑張ってると思う。

367:デフォルトの名無しさん
09/07/26 18:08:18
C++/CLI のスレから誘導されてきた。よろしくお願いしたい。

----------

おしえて。

フォームアプリのテキストボックスとかにデータバインディングで、
DataTable の要素を関連づけて入力値を管理したい。

ここで、テーブル中のレコードが1つの場合はいいんだが、複数あって
かつ、バインドするレコードを動的に変更したい場合ってのはどうすれば
いいのだろうか?

よくわからなかったので、

・バインド用に同じ構造のテーブルを用意して
・そこにレコードをひとつだけ作り
・そのレコードに元テーブルの任意のレコードの値をコピーする
・フォーム終了後にもとのテーブルのレコードに値をコピーし直す

方法で使おうとも思ったのだけど、もっと直接的な方法がありそうな気がする。
いかがだろうか。教示いただけると嬉しい。

368:デフォルトの名無しさん
09/07/26 19:14:08
何を言いたいのかがハッキリわからないけど
DataTableに複数レコードつっこんで
あるときは1レコード目、あるときは2レコード目をバインドすればいいんじゃないの

369:デフォルトの名無しさん
09/07/26 19:37:11
返信をありがとう。

>あるときは1レコード目、あるときは2レコード目をバインドすればいいんじゃないの

その2レコード目をバインドする方法がわからなかったんだ。。。

370:デフォルトの名無しさん
09/07/26 19:38:54
何言ってるんだろ? 次のレコードに進めるだけだろ。

371:デフォルトの名無しさん
09/07/26 23:37:42
ああ。そう言う方法があるんだね。
ごめん。まだこれの経験が浅くてそれ自体がわかってないんだ。
その方向で調べ直すよ。ありがとう。

372:デフォルトの名無しさん
09/07/27 00:35:25
BindingManagerBase::Position のことか。
気がつかなかったよ。お騒がせしました。

373:デフォルトの名無しさん
09/07/27 14:13:58
非ジェネリックのIDictionaryをジェネリックのIDictionary<TKey, TValue>に
変換するスマートな方法があったら教えてください。
foreachで別のDictionayに1つずつ追加するのはやれてます。

374:デフォルトの名無しさん
09/07/27 14:30:54
それが一番だと思うけど。
dic.Cast<DictionaryEntry>().ToDictionary(entry => (TKey)entry.Key, entry => (TValue)entry.Value);
がスマートとは思えない。

375:デフォルトの名無しさん
09/07/27 14:34:42
C# 2.0
で質問です

System.Threading.ManualResetEvent
のインスタンスを使用して1ミリ秒のウェイト処理をループ中にかけようとしているのですが
 ・Vista環境だと上手く1mSec 程度停止するのに
 ・XP環境だと15mSec程度まで跳ね上がる時があります。
 OSの分解能ということで1mSecは諦めるしかないのでしょうか?

 用途は最高速で常時まわしたい処理を以下のソースのWhileの中に組み込んでHOGEの処理をしているのですが
可能であれば10mSec以下で1ループを終わらせたいのです。(中の処理は2~3mSec程度)
 ただしこのままでは別スレッドで実行しているにもかかわらずCPU負荷率が高すぎるために
最低レベルでのスレッド停止処理を行いたいのです。
ちなみにSystem.Threding.Thred.Sleep(1); を行うとVista環境でも1mSecより大きく停止してしまいます。

System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false);
While(True)
{

    HOGE();//処理

    //ストップウォッチ計測開始
    mre.WaitOne(1);
    //ストップウォッチ計測終了
    
    if(exitFlag == true) break;
}

何とか最速でまわしつつ負荷を上げずにWhile文を回し続ける方法はないでしょうか?

376:デフォルトの名無しさん
09/07/27 17:19:40
1msの分解能が欲しかったらCPU負荷率は諦めるしかないと思うけどな
スレッド切り替えるのに1ms以上かかりそうだし

377:デフォルトの名無しさん
09/07/27 17:55:33
>>376
そうですか・・・
まぁヂュアルCPUなんで負荷率は50%なので構わないと言えば構わないのですが・・・
できるだけ使用率を低くして寿命を延ばしてやりたかったのです

378:デフォルトの名無しさん
09/07/27 17:59:39
>>375
Sleepすることが目的ではなく、CPUを使いすぎることを抑えたいだけのように感じる。
もしそうなら、Priorityプロパティでスレッドの優先度を下げるだけというのはどう?

もちろん、優先度を下げるということはCPU使用率を下げることとは違うから、、
ほかにやることがなければCPUを使い尽くすということに変わりはないけど。

379:デフォルトの名無しさん
09/07/27 18:02:17
>>377
何をやりたいのか知らないけど専用マシンを用意すれば?

380:デフォルトの名無しさん
09/07/27 18:32:57
10mSecでTimer回した方が良いように思えてならない。
再入をブロックする必要はあるけど。


381:デフォルトの名無しさん
09/07/27 20:17:27
>>375
よくわかんないけどこういうこと?

Stopwatch sw = new Stopwatch();
long nextTiming = sw.ElapsedMilliseconds + 10;
sw.Start();

while (true)
{
  while (sw.ElapsedMilliseconds < nextTiming) { Thread.Sleep(0); }
  nextTiming += 10;
  Console.WriteLine("Now is {0} ms", sw.ElapsedMilliseconds);
}

Thread.Sleep(1)にしてやればCPU使用率は無駄に上がらない。
その場合、処理のインターバルの精度は落ちるけど、時間あたりの処理回数の精度は
保てるといってよいんじゃないか。

382:デフォルトの名無しさん
09/07/27 23:32:44
マルチメディア系の機能でミリ秒レベルの精度でsleepする方法ってあったりするんだっけ?
普通のSleepって、TimeBeginPeriodで指定した分解能でスレッドの状態変わるんだっけ?

もしSleepの精度にTimeBeginPeriodが効くなら、それやってスレッドの優先度をあげればいいかも。
ただし処理をきちっと終えてちゃんと確実に速やかにSleepしないと死ぬことになるが。


383:デフォルトの名無しさん
09/07/27 23:35:31
各回のインターバルの精度が必要でないなら、10回分繰り返して10回分Sleepとかそういう手もあるが。


384:デフォルトの名無しさん
09/07/27 23:42:24
>>382
timeBeginPeriodは消費電力を増やすと言われているのだから、
寿命を気にする>>377には似つかわしくないと思う。

385:デフォルトの名無しさん
09/07/27 23:54:07
HDDはともかく、CPUはヒートシンクが動作中に外れるとか
余程のことでもなければ「寿命」を縮めるなんてことはないと思うけど。
真空管じゃないんだから

386:デフォルトの名無しさん
09/07/28 00:07:36
まあCPU自体にはあんま関係ないけど、
使用率が高いところを維持するのは全体で見ればあまり望ましいことじゃなかろう。

あと確かに大麻精度あげると電力使用はアップしてしまうのかも知れんが、
CPU使用率が高いままになるよりはましじゃないかと思うがどうだろう。
もちろんそうせずに済むならそれにこしたことはない。


387:デフォルトの名無しさん
09/07/28 00:19:55
結局のところ、何であんな事をやりたいのかハッキリしないと何とも言えん

388:デフォルトの名無しさん
09/07/28 10:43:04
C#では、グラフィック関連のメソッドで、小数の引数はfloat型になってますよね。
floatよりdoubleの方が一般に速いと思うのですが、なぜfloatなんですか?

389:デフォルトの名無しさん
09/07/28 10:49:39
GPUはほぼ単精度までしか扱えなかったぜ
まあGDI+はGPU使わんけどな!

390:デフォルトの名無しさん
09/07/28 10:57:27
計算速度じゃなくて帯域幅の問題。
あとdoubleが速いってのは今のCPUでの話にすぎない。


391:デフォルトの名無しさん
09/07/28 10:58:17
あGPU関係なかったか…

392:デフォルトの名無しさん
09/07/28 11:00:36
>>389
なるほど…。
今まで、座標を保存するための変数x, yをdouble型で宣言して、
描画時にintに変換して使っていたのですが、
これはfloatにしてキャストなしで使った方がいいんでしょうか?
「float同士の演算(座標計算時)」と「double同士の演算(座標計算時)+intへのキャスト(描画時)」
では、どっちが速いんでしょうか。

393:デフォルトの名無しさん
09/07/28 11:05:11
>>390
> 今のCPUでの話にすぎない。
昔のCPUのことを想定してどうすんだよw

394:デフォルトの名無しさん
09/07/28 11:19:55
>>392
自分でベンチ書いて試しなよ
その方が納得できるだろ

395:デフォルトの名無しさん
09/07/28 11:53:38
昔のCPUの話じゃなくて今のGPUの話だよ。
関係なかったけど。

396:デフォルトの名無しさん
09/07/28 12:20:35
レスが遅くなりました。

>>378
おっしゃる通り現在の処理速度を犠牲にせずにCPUの負荷を下げてあげたいということです。
スレッドの優先度は、この処理部分以外にあまり同時に激しい処理をしているわけではないので微妙な感じです

>>379
まぁ専用マシンを用意してもCPU負荷がずっと大きな値に張り付くのは・・・微妙なきがします。
FA系なので安定して長く動作させたいのです。

>>380
やってみた感じスレッドのタイマで1mSecで動かしてもどうも間隔はOSに引っ張られるようですorz
例えばですが・・・再入ブロックはこんな感じの処理のことでしたっけ?

タイマコントロール
void tick
{
 タイマ停止
 処理
 タイマ開始
}

スレッドタイマ (間隔で動かすというか1回だけ動かすのを繰り返す)
void Tick()
{
処理
次回Tickを動かす時に1mSec間隔をあけて実行
}

397:デフォルトの名無しさん
09/07/28 12:37:37
>>381->>383, >>387

本当はWhileの中は最速でまわしてあげたいのです。
しかし、CPU負荷率が高くなりすぎるのでそれを防ぐためだけに仕方なく1mSecのスレッド停止を挟んでいるのですが
そのスレッド停止がXPではきっちり1mSec止まってくれない
(別に2mSecとかでもいいのですが15mSecとか止まってしまうのです。)

結局やりたいことを説明すると

FAの工場内のでラインの制御をおこなうのに1スキャンあたり(1ループ)25mSec以内で処理しなければ処理ヌケが発生する。
→処理ヌケが発生しないようにする処理は現在のループ処理の中では余裕
→だけどCPUがずっと高い使用率に張り付いたまま
→基本的に長期安定動作させたいので使用率は大きいよりは小さいほうがいい
→SleepやManualResetEvent.WaitOneではXP上で停止時間が不安定 (これで運用すると少しでもOSの動きに引っ張られると処理時間が延びて処理ヌケしてしまう)
→VISTAはなぜか停止時間が結構安定する
→上に VISTAにしてくれというと「FAでVISTAとかまじありえね XPでやれ」 と言われ取り合ってももらえず
→打つ手が思い付かずに ここへ知恵を借りに
    ↑いまここ

そして同じPC内にはコスト削減とかでラインの画像判定を撮って判定するソフトが・・・
(これ自身はCPU負荷はそこまで使いません。 一瞬5~10%まで上がる程度が50mSec程度の間隔)

こんな状況ですorz
そもそも、Pgを別のPCに分けてもメインのループ部分がCPU使いっぱなしになるので問題の解決はしないという・・・

>>385-386
CPU自体は迷信なのかもれません。
まぁ、ただずっと高しようりつで張り付くと結局温度が上がってしまうので
色々と起きてきそうなのです。

398:デフォルトの名無しさん
09/07/28 12:49:09
CPUのタイムスライスってレジストリでいじれなかったっけ?
そこまでシビアなFAの制御なら専用のCPUボードにやらせて、
OSはサマリーだけ受け取るような仕掛けにしないといかんだろう。


399:デフォルトの名無しさん
09/07/28 12:53:35
>>398
本当はそうなんですよね
せめてPLC使って処理させるとか

でも・・・今回は期限ないうえにコストも落とせという色々無茶な状態が重なってしまいまして…

400: [―{}@{}@{}-] デフォルトの名無しさん
09/07/28 13:11:31
>>399
RTOSが必要なんじゃね?

この辺にも色々書いてあるけど
URLリンク(www.microsoft.com)

401:デフォルトの名無しさん
09/07/28 13:13:02
他のプロセス(サービス含む)が動いたらあっという間に25ミリ秒とか過ぎ去るな

402:デフォルトの名無しさん
09/07/28 13:17:34
>>400
エンベデッド(これで読みはいいのか?)ですよね
そう、せめてそれがあれば最低限のコンポーネント入れていけるとおもうんです
しかし普通のPCに普通のXP PRO
サービスとかはできる限りとめて動かしていますがなんというか・・・がっくりです

>>401
そうなんです!

というか、やる気起きないのでダラダラと

403:デフォルトの名無しさん
09/07/28 13:22:06
連投ばっかですみません

なんとなくですが
>>382
のTimeBeginPeriodでいけそうな気がします。
また詳しいことは微妙ですが
これ使って簡単に1日程度動かして様子を一回見てみようかと

404:デフォルトの名無しさん
09/07/28 17:53:02
>>392
描画メソッドの呼び出し頻度なんか知れてる
呼び出してからの実際の描画処理の方が遥かに時間がかかるからそんな細かい差は全く意味がない

405:デフォルトの名無しさん
09/07/28 19:47:21
>>403
なんか>>397を読んでもやっぱりよく分からないんだけど、
要するにDIOか何かをポーリングしてるのかな?

それでそのDIOのイベントに応答するときのレイテンシの最大許容時間が25ms、
みたいなこと?

406:デフォルトの名無しさん
09/07/28 20:18:16
浮動小数から整数への丸め制御方法によっては、intにキャストする回数が多いと遅くなるかもね

407:デフォルトの名無しさん
09/07/28 20:24:57
そんな差が目に見えるほど描画メソッド呼び出したらそれこそ死亡

408:デフォルトの名無しさん
09/07/28 21:33:20
>>397 >>403
タイマーが15ms間隔でしか発動しないのはWindowsの仕様。
パラメータでは1ms単位の数値が設定できるけど、実際の動作は約15.5ms間隔に切り上げられる。

TimeBeginPeriodを使えば間隔を詰めることはできるけど、実際に試してみると、
最短の間隔がせいぜい2ms程度で、それより長くなることもある。
それにTimeBeginPeriodには副作用があって、他のアプリがたまたまTimeBeginPeriodを再設定してしまうと、
そのマシンで動いているすべてのアプリが影響を受けてしまう。
>>375でVistaは1msてのは、たまたま何かのアプリがTimeBeginPeriodをいじってただけの可能性が高い。

そもそもSleep関数の動作は「少なくとも」指定した時間経過、だから、どれだけオーバーするかは運次第。
ただしこれはVistaまでの話で、Windows7ではタイマー関係がようやく強化される予定なので、
どうしても2ms以下の間隔を死守したいならWindows7を使えばすんなり解決するかもしれない。

409:デフォルトの名無しさん
09/07/28 21:47:44
タイマっていうかタイムスライスの問題だからちょっと話がズレてると思うけど。。

410:デフォルトの名無しさん
09/07/28 21:53:02
>>408
XPしかだめっつうてんだろw


XPにPLCと同じことさせようとしても無理。
制御じゃなく監視だよね?
FA屋で制御までさせようとしてるなら職変えたほうが良いよ。

411:デフォルトの名無しさん
09/07/28 22:08:01
Chrome起動中だと高速化するよ(笑い)

412:デフォルトの名無しさん
09/07/28 22:16:54
25msなら、スレッドの優先度上げてやればSleepでも大丈夫かもしれん(実質15msくらいで)。
まあTimeBeginPeriod使った方がいいと思うけど。

優先度を上げない場合、Sleepでの停止自体は短時間でも、実行順が回ってくるまでに
タイムオーバーする危険がある(他のスレッドがある場合)。
優先度を上げると実行可能になった時優先的に処理が回ってくるので、遅れる危険が小さくなる。
ただし、処理を終えたら確実にSleepしないと、下手すればマシンハングアップ状態になるので注意。

ただ、いずれにしてもWindowsではそういうのを本当に確実に処理することはできない。


413:デフォルトの名無しさん
09/07/28 22:21:58
XPのタイムスライスってどんくらいだっけ?15msくらいだっけ?20msくらいだっけかな?
もしフォアグラウンドで何かを動かしたらそいつは3倍になるから処理にもよるけど簡単に死ねる。


414:デフォルトの名無しさん
09/07/28 22:23:41
スレッドの優先順位?
スレッド?

415:デフォルトの名無しさん
09/07/28 22:29:46
>>413
1/64 s

416:デフォルトの名無しさん
09/07/28 22:37:57
あー大きく上げるにはプロセス側で上げとかないと駄目だったか、
言いたかったのは単に最終的なスレッドの優先度を上げるということ。


417:デフォルトの名無しさん
09/07/28 23:23:52
>397の人件費考えたらVISTAなんて安いものだろうに・・・

418:デフォルトの名無しさん
09/07/29 00:05:42
ていうか・・・なんでWindowsでそんなリアルタイムOS的な制御をやろうと企画した
んだろ、発注元。

419:デフォルトの名無しさん
09/07/29 00:17:34
>>397の言葉遣いも怪しいところがあるから、
必ずしも本来の要求仕様を満たすために必要のない手法を>>397自身が
考えているだけかもしれない。

なんかその可能性が高いように思う。


420:デフォルトの名無しさん
09/07/29 00:36:59
リアルタイムにセンシングするとして、データをキューに入れといて別スレッド
で処理したら駄目なのかな・・・いや、そういう話じゃないな。

382の言うとおりマルチメディアタイマ使えばいいんじゃね?

421:デフォルトの名無しさん
09/07/29 00:47:18
>>410
いや、Vistaはカンベンしてくれって話だろ?

422:デフォルトの名無しさん
09/07/29 00:48:14
マルチメディアタイマーも15ms縛りがあったような…

423:デフォルトの名無しさん
09/07/29 00:49:07
要求が「VistaとXP」なんだからそんなところの議論は無駄無駄

424:デフォルトの名無しさん
09/07/29 01:16:39
てか1ms周期で動かしたら大抵CPU時間使いまくるってオチ

425:397
09/07/29 02:13:03
多くのレスありがとうございます。

そもそもなぜXPなのか?
というのはその上役の人間が安定志向でXPで今まで出来てたんだから という考えのもとに言っているような感じです。
しかし、その実績はせいぜい50~1000mSec程度なのでどのOSでも簡単に実装できるものでした。

新しい機械を開発するにあたり
そこそこ高速で移動するライン状の物の位置をエンコーダで追い、DIOの信号を利用して移動させる という処理が必要になり
上役の人間が打ち合わせをした際にその程度の処理なら出来る という憶測で仕事を受け入れてしまいました。

その尻拭い的な感じをいまやっているわけなのです。
多くの皆様意見をいただき本当にありがとうございます。
さすがに限界を感じる感じなので、CPUをフルに使う状態での運用か、それとも設計や方針自体を変更するべきなのかを上の人間にかけあってみます。

ちなみに単純な処理です

→ 物の流れる方向
|----------------目的地     
センサ            ↓

センサをONしたタイミングでエンコーダ値を取得・保持し、目的地の位置までパルスが移動したらDIO信号をONし、流れているものを矢印の方向へ稼働させる機械を動かす。
たったこれだけです。
PLCでやればどれだけ単純で簡単なレベル という話 orz

多くの意見、今後のPGに生かしていこうと思います。
はぁ・・・月曜日が鬱だw

426:デフォルトの名無しさん
09/07/29 03:16:37
しかもC#でとな('A`

427:デフォルトの名無しさん
09/07/29 06:05:48
>>425
それ本当に1msの精度求められてるの?
仕分けでそこまでの速度を要求されるとは思えんのだが。


428:デフォルトの名無しさん
09/07/29 06:47:49
>>393
intよりdoubleが早い環境なんて少数派だぞ

429:デフォルトの名無しさん
09/07/29 06:58:29
PCでそんな制御やるのがそもそも間違えてる
カーネルから優先度の高い命令が割り込んだら何ぼでも処理落ちするぞ

430:デフォルトの名無しさん
09/07/29 08:05:16
動かないと思ったらWindowsUpdateでリブートしてるんですね。わかります。

431:デフォルトの名無しさん
09/07/29 12:06:08
>>427
初めに書いたとおり1mSecまでは求められてはいませんが
自分がWindowsで制御するなかでは初めての精度になります。

まぁごくまれに処理抜けする程度ならリターンしてもう一度処理をすればいいのでそれはそれで何とかなるわけですが
その為、処理負荷をできるだけ下げつつ処理時間間隔を短くするために可能な範囲で試行錯誤してみています。

>>426
>>429
そうなんですよね
何というか・・・GUIがほしいのはわかるんですが・・・

ちなみに現在実機でタイマ精度変更後に一日動作させた感じ1処理は停止含めて15mSecを超えていない(StopWatch調べ)感じです。
CPU負荷も常時高い位置にあったものが時々大きく上がる程度まで抑えることができている感じです。

でもぶっちゃけ実運用になったら・・・ちょっと怖いかも

432:デフォルトの名無しさん
09/07/29 12:17:58
実際のとこ、全力でぶん回してもリスクは変わらないから。


433:デフォルトの名無しさん
09/07/29 12:31:00
全くもってそのとおり
”ずーっと確実に最長1msの周期で観測する”という要件しか聞いていないから,PCの電源が落とされた時点でアウト,
PCの電源落とさないってんなら,たった一日の観測(>>431)くらいで何か分かるわけでもないし.
おとなしくデバイス作ってUSBかシリアルで接続したほうが安心.

GUIはC#でいいだろうが

434: [―{}@{}@{}-] デフォルトの名無しさん
09/07/29 12:39:49
>>433
なんかPC障害でラインが暴走しそうな悪寒もする。
ちょっとした機能追加で制御不能になったりとか

担当者さんのデスマーチが目に浮かぶ

435:デフォルトの名無しさん
09/07/29 12:44:55
今思った

GC時間考慮してねー


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch