ふらっとC#,C♯,C#(初心者用) Part37 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
09/02/07 23:40:54
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

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


2:デフォルトの名無しさん
09/02/07 23:46:57
うんこ

3:デフォルトの名無しさん
09/02/07 23:47:17
C#, C♯, C#相談室 Part51
スレリンク(tech板)

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

初心者のためのプログラミング言語ガイド Part13
スレリンク(tech板)

4:デフォルトの名無しさん
09/02/07 23:48:05
参考サイト。まずはここで検索してから。
URLリンク(www.google.co.jp)
URLリンク(msdn.microsoft.com)
URLリンク(homepage3.nifty.com)
URLリンク(www.atmarkit.co.jp)
URLリンク(dobon.net)
URLリンク(jeanne.wankuma.com)
URLリンク(www.labasp.net)

5:デフォルトの名無しさん
09/02/08 00:50:53
質問があります。
Formにボタンを作り、それを押すと「終了しますか?」というロゴが出て
「はい」を選択するとプログラを終了、「いいえ」を選択すると
そのまま続行させるプログラムを書きたいのですが、
if文をどのように書けばこのように処理できるのでしょうか?

6:デフォルトの名無しさん
09/02/08 00:57:21
void button1_click(object sender, EventArgs e)
{
if(MessageBox.Show("終了しますか",??.OkCancel) == DialogResult.OK)
this.Close();
}

こんなんだったと思うけど

7:デフォルトの名無しさん
09/02/08 01:04:43
DialogResult result = MessageBox.Show("終了しますか?", "確認", MessageBoxButtons.YesNo);

メッセージボックスで押されたボタンによってresultの値が変わるので、
Yesのときはフォームを閉じ、それ以外のときは何もしなければいい。

if (result == DialogResult.Yes)
{
  Close();
}

でおk。

8:デフォルトの名無しさん
09/02/08 01:07:12
メッセージボックスの返り値ならifよりswitchを勧める

9:7
09/02/08 01:08:16
それから、条件式の中にMessageBox.Show()を突っ込むのはやめたほうが無難。
一概には言えないけどね……

10:デフォルトの名無しさん
09/02/08 01:10:59
なんでswitchのがいいの?

11:デフォルトの名無しさん
09/02/08 01:42:34
それから、条件式の中にMessageBox.Show()を突っ込むのはやめたほうが無難。

これも知りたい

12:デフォルトの名無しさん
09/02/08 01:52:36
Formsのイベントハンドラの中でMessageBox.Showを使うのが良くないというのなら分かる。
中でメッセージループを回す結果、イベントの処理中にもかかわらず
他のイベントが発生する可能性があるためという話だけど。

13:デフォルトの名無しさん
09/02/08 01:59:03
じゃあどうすんの?

14:デフォルトの名無しさん
09/02/08 02:04:19
確かにw

15:デフォルトの名無しさん
09/02/08 02:10:28
タイマーイベントで使うと再入があるから問題が起きるが、
Form上のコントロールからのイベントならFormからフォーカス奪うから問題なし。
switch使えはエスパーするとYesNoCancelなどの3値型の場合かなぁ。
2値型ならifでいいと思うけど。

16:デフォルトの名無しさん
09/02/08 02:31:13
結局、何の根拠もないってことか
自分の流儀ってならわかるけど、それを人に勧めるのはどうなのよ

17:デフォルトの名無しさん
09/02/08 02:35:16
formのイベントでmessagebox中にタイマーイベントが発生した場合は?

18:デフォルトの名無しさん
09/02/08 02:37:49
やってみな
発生しないから

19:デフォルトの名無しさん
09/02/08 02:38:05
>>17
タイマーイベントが呼ばれる。
本当に再入注意ってだけ。そのタイマーイベントの中でメッセージボックスを呼ぶとかしたらw

20:デフォルトの名無しさん
09/02/08 02:38:14
発生してそれで何か困ることがあるの?

起きて困るのは同じ種類のイベントが再入した場合だと思うのだけれど。

21:デフォルトの名無しさん
09/02/08 02:40:52
>>18
発生しないんだ

>>19
呼ばれるんだ

>>20
>発生してそれで何か困ることがあるの?
このように今困ってる

22:デフォルトの名無しさん
09/02/08 02:48:42
Windows.Form+Windows.Forms.Timerだと発生する。
VB6の頃は発生しなかったような記憶があるけど。

23:デフォルトの名無しさん
09/02/08 02:52:17
private void timer1_Tick(object sender, EventArgs e)
{
   MessageBox.Show(”Take it easy !”);
}
ブラクラみたいな状態になる・・・

24:デフォルトの名無しさん
09/02/08 02:53:01
閉じる確認のmessageboxを表示するようなメソッドを作ることはよくある手法でしょ
そのメソッドがユーザの動作で呼ばれることもあれば、
タイムアウトで呼ばれる事もあるでしょ

どうなんの?

25:デフォルトの名無しさん
09/02/08 02:55:55
その場合は慎重に再入を避けるロジックを追加すればいいでない。
どちらかが終了確認に関する処理を始めたらもう一方はすぐに処理を終えるようにする。

26:デフォルトの名無しさん
09/02/08 03:02:48
じゃあ結局、どんな場合でも回避する余地が必要なんじゃん
staticなクラスを作って、それで表示させてあげればいいだけだが

で、条件式の中にMesssageBoxをいれてはいけない理由と、
結果をswitchで判断すべき理由は?

27:デフォルトの名無しさん
09/02/08 03:06:10
>>5
いちおう、本人がそこまで求めてなかろうが何だろうがこれも。
void button1_Click(...)
{
 this.Close();
}
void Form_FormClosing(...FormClosingEventArgs e)
{
 DialogResult result = MessageBox.Show(this, "終了しますか?", this.Text, MessageBoxButtons.YesNo);
 if (result != DialogResult.Yes)
 {
   e.Cancel = true;
 }
}

>>5
そのうち「フォームの[X]ボタンで閉じたら聞いてこなかったぞ?」という
問題に出くわすかもしれませんが、そのとき、Form.ControlBox = false に
する前にこれを思い出してください。

// でも確かFormClosingのキャンセル機能はバグがあるんだっけ?

28:デフォルトの名無しさん
09/02/08 03:10:34
>>27
Xでもちゃんとイベントは発生してる。
FormClosingEventArgsに終了の理由(原因)を示す情報が入ってたと思うけど。

>>12はもう寝てるんじゃね?

29:デフォルトの名無しさん
09/02/08 03:11:36
しかしclose時の確認ダイアログなんて何十年前からある命題なのに
その最適解が存在しないなんて何もは進歩してないんだな

30:デフォルトの名無しさん
09/02/08 03:12:04
>>5の書き方だとDialog使わなくても良さそうな感じだけどな

ボタン押す → OKとCancelボタン付きForm表示 → それぞれのイベントハンドラ実行

って感じで

31:デフォルトの名無しさん
09/02/08 03:12:16
>>28
>>12じゃなかった、>>7-8だ。俺も寝よ。

32:デフォルトの名無しさん
09/02/08 03:14:00
CloseReason使うとわけわかめになるから極力使わない

33:5
09/02/08 04:45:06
回答をくださった方々、本当にありがとうございました。
無事に追加できました。

>>27
ご丁寧にありがとうございます。
FormにFormClosingイベントを追加するにはどうすれば良いのでしょうか?

34:デフォルトの名無しさん
09/02/08 04:48:14
Visual StudioのGUIエディターで
formを選択してプロパティウインドウのカミナリマークを押して探す

35:5
09/02/08 05:08:29
>>34
ありがとうございます。
こういうメニューがあったんですね。
いつもはコンソールでプログラムを書いている為、分かりませんでした。

36:デフォルトの名無しさん
09/02/08 05:31:48
ツール使ってないなら
form.Closing += (sender,e) =>{
 //処理を書く
};

こんなんでいい

37:デフォルトの名無しさん
09/02/08 10:59:23
流れとは関係ないけど、
閉じるボタンでいちいち尋ねてくるなって感じる。
閉じるから押したんだよみたいな。
本当に閉じられたら困るときは別だけど

38:デフォルトの名無しさん
09/02/08 11:29:53
>>977
ガッ

39:デフォルトの名無しさん
09/02/08 12:16:25
if (MessageBox.Show("終了しますか?","",MessageBoxButtons.YesNo) == DialogResult.YesNo)
{
 if (MessageBox.Show("本当に終了しますか?","",MessageBoxButtons.YesNo) == DialogResult.YesNo)
 {
  if (MessageBox.Show("本当に終了しますよ?","",MessageBoxButtons.YesNo) == DialogResult.YesNo)
  {
   MessageBos.Show("じゃぁ終了します");
   return;
  }
 }
}

40:デフォルトの名無しさん
09/02/08 14:24:54
それいいな
VSデバッグ時にアプリをバツボタンで終了させる間違って裏のVSまで押す時ある
デバッグを終了しますか?ってメッセージでるからはいって押すとVSが閉じるのが最初めちゃくちゃムカついた
VSもそれぐらいしつこいUIにしてほしい

41:デフォルトの名無しさん
09/02/08 14:30:43
慣れたら連打するだけなんだから意味ないだろ。

それよりも「デバッグを終了しますか?」でいいえを押す事に慣れろ。

42:デフォルトの名無しさん
09/02/08 14:34:38
>>39
コンパイルエラー
DialogResult.YesNo は存在しません。
MessageBos は存在しません。

43:デフォルトの名無しさん
09/02/08 14:42:29
自作クラスですから

44:デフォルトの名無しさん
09/02/08 16:39:39
class MessageBos:MessageBox

45:デフォルトの名無しさん
09/02/08 17:54:58
保存しました って表示しといて保存してない方がシュールだ

46:デフォルトの名無しさん
09/02/08 18:03:52
>>41
3回とも「しますか?」と「しませんか?」がランダムに入れ替わるようにして、
かつ[スタート]メニューに[今間違えて終わらせたプロセスを元に戻す]コマンドを
つけ、「元に戻しますか?」くらいやっとけば大丈夫だろ。


47:デフォルトの名無しさん
09/02/08 18:04:43
[今間違えて終わらせたプロセスを元に戻す]はおもしろいな

48:デフォルトの名無しさん
09/02/08 18:12:19
>>39
最後のメッセージは「運がよかったな。今日はMPが足りないみたいだ。」で。
[帰れよ]ボタンもいるな。

49:デフォルトの名無しさん
09/02/08 18:38:27
再利用を考えるよりハードコーディングの方が動作は速いんですよね?

50:デフォルトの名無しさん
09/02/08 18:40:39
概ね

51:デフォルトの名無しさん
09/02/08 19:21:46
他のクラスのbool型変数が変わった瞬間に、
とあるForm1をClose()するにはどうしたらいいでしょうか?

52:デフォルトの名無しさん
09/02/08 19:26:30
>>51
bool flag=true;
bool Flag{
get{return flag;}
set{〜}
}
じゃだめ?

53:デフォルトの名無しさん
09/02/08 19:29:58
boolのプロパティを作成して変更時にClose()を呼ぶ

54:デフォルトの名無しさん
09/02/08 19:30:44
リロードしてなかった
すまそ

55:デフォルトの名無しさん
09/02/08 19:30:49
ナイスアドバイス!

bool flag=true;
bool Flag{     ←これから先もbool型変数があるクラスに書くの?
get{return flag;}
set{〜}
}

56:デフォルトの名無しさん
09/02/08 19:35:27
>>55
うん
でset{〜}
にやりたい処理書けばいい
最初にflag=trueにしたりして
あとpublic付けるの忘れたFlagの方
いらないなら良いけど

57:デフォルトの名無しさん
09/02/08 19:36:34
あ、すまん
set{
flag=value;
if(value==true){
//やりたい処理
}
}

58:デフォルトの名無しさん
09/02/08 19:37:20
>>53
プロパティというのはクラス[デザイン]のプロパティ?

59:デフォルトの名無しさん
09/02/08 19:52:31
>>51
他のクラスが何なのかによるけど、
少なくともForm1の状態変化に関する処理は、なるべくそのForm1に記述したほうがいいと思う。
なんで、他のクラスのboolがtrueになったらイベント発生させて、Form1の特定のメソッドを実行させる。
んで、そのメソッド内でCloseする。


60:デフォルトの名無しさん
09/02/08 19:59:47
なぜだ・・・。getしてくれない。
デバックで見ても作成したメソッドに飛ばない

61:デフォルトの名無しさん
09/02/08 20:58:06
>>59
×なんで
○なので

なぜ〜に見えるから最後まで読まないとわからないからね

62:デフォルトの名無しさん
09/02/08 21:52:58
Form1から呼び出した2枚目のFormをアクティブにしない
(常にForm1をアクティブにする)方法を教えてください。

63:デフォルトの名無しさん
09/02/08 21:57:03
URLリンク(msdn.microsoft.com)

64:デフォルトの名無しさん
09/02/08 21:59:53
全スレでも同じレスがあったと思うんだが

Form.ShowWithoutActivation

クリックされてもアクティブにならないなら
ContextMenuStrip あたり改造

65:デフォルトの名無しさん
09/02/08 22:01:01
>>63
どうやって使えば良いのかわからないんです。


66:デフォルトの名無しさん
09/02/08 22:01:08
呼び出した後も絶対に2枚目をActiveにしたくないの?
それとも呼び出し時にForm1をActiveにしたいだけで、その後は2枚目がActiveになってもいいの?

後者なら2枚目が表示された段階で、呼び出し元がForm1なら、
Form1.Activate();すればいいだけじゃない?

67:デフォルトの名無しさん
09/02/08 22:03:49
>>65
Form2 で override して true 返すだけだよ

68:デフォルトの名無しさん
09/02/08 22:04:20
これ?
めんどくせーな

URLリンク(www.atmarkit.co.jp)

69:デフォルトの名無しさん
09/02/08 22:08:23
>>63-67
ありがとうございました。

70:デフォルトの名無しさん
09/02/08 22:08:54
>>68
ありがとうございました。

71:デフォルトの名無しさん
09/02/08 22:09:23
>>68
実際にはインテリセンスが効くからあっという間にオーバーライドできる。
ov[space]showw[space] くらいタイプすればプロパティの形ができるから、
あとは戻り値をtrueに書き換えればおk。

72:デフォルトの名無しさん
09/02/08 22:21:36
こういうのって、何で最初から設定できないんだろうな
TableAdapterのタイムアウト時間が設定できないとか、ほんと糞仕様だわ

73:デフォルトの名無しさん
09/02/08 22:27:05
開発者も全部が全部必要な機能に気がまわんないだけ。
MS はまだフィードバック入れたら修正されるだけマシ。

74:デフォルトの名無しさん
09/02/08 22:29:23
TableAdapter は別にしてこれ(ShowWithoutActivation)は実装上、互換性上
自然だと思う。細かい話をするとめんどくさいんでしないけど。

75:デフォルトの名無しさん
09/02/08 22:32:46
人間だから仕方ない、放置より修正されるほうがマシ的な論議は飽き飽き。
最初から糞仕様には糞仕様と言い続けることが圧力になって反映されやすくなる。

76:デフォルトの名無しさん
09/02/08 23:02:19
2chで騒いでも何にもならん。時間の無駄。
然るべき場所からフィードバックとして送らんと意味がない。

77:デフォルトの名無しさん
09/02/08 23:11:16
Expression Blend 2 欲しいよ。だれか、買って。SilverlightとC#でばりばりしたい。

78:デフォルトの名無しさん
09/02/08 23:19:08
Web2とBlend2を2万円で買う方法を教えてください。

79:デフォルトの名無しさん
09/02/08 23:22:10
評価版を仮想OSに入れてOS時間をストップさせるのはどうでしょうか

80:デフォルトの名無しさん
09/02/08 23:33:19
amazonの新品を中古リストから買うとアカデミックが手続きなしでいきなり送られくるのは常識


81:デフォルトの名無しさん
09/02/08 23:34:49
なら、尚更、人間だから仕方ない、フィードバック反映されるからマシ的な書き込みのほうが無意味だろ
何言ってるんだ?

82:デフォルトの名無しさん
09/02/08 23:37:24
int型より小さいサイズの演算はint型に揃えられると書いてあるんですが、
uintの値を演算で使うとintにそろえられるんでしょうか?それともlongですか?

83:デフォルトの名無しさん
09/02/08 23:39:24
>>81
それ書いたの俺じゃねぇし
どっちも無意味で程度の差などない。何言ってるんだ?

まぁ、俺もお前もスレチだな。

84:デフォルトの名無しさん
09/02/08 23:40:16
blendはvistaとC#を戦略的に広めるためのものだからわざわざ買う必要ない
学生には配ってるし、知り合いいないのか?
使ってくれるだけでもうれしいはず。それで作ったアプリが宣伝になるからね。
俺はお金をもらわなきゃblendなんか使わない

85:デフォルトの名無しさん
09/02/08 23:43:42
WPFとSilverlightの動作の重さには絶望した

86:デフォルトの名無しさん
09/02/08 23:43:57
>>83
別にお前に対して言ってるわけじゃないんだが?
一方的にお前だけがスレチだな

87:デフォルトの名無しさん
09/02/08 23:48:09
>>86
何言ってるんだ?

88:デフォルトの名無しさん
09/02/08 23:48:24
Formアプリケーションを新規プロジェクトで作ったのですが、
このあと何ができるのか知るにはどうすればいいんですか?
置ける部品はリストにあるので置けばいいのはわかるんですが
その中の細かい動作のプログラムの部品の一覧はどうやってわかるんでしょうか?

89:デフォルトの名無しさん
09/02/08 23:49:52
WPF,そんなに遅いのか?
DirectX使ってるってんで期待してたんだが

90:デフォルトの名無しさん
09/02/08 23:53:00
今日K'sでOffice.macのアカデミックパケ見たら
「身分証の提示は一切必要ありません」って書いてあってワラタ

91:デフォルトの名無しさん
09/02/08 23:58:08
配列を作るには

int []a = new int[10];

絶対こう書くしかないんですか?

int a[10];

こういう風にかけませんか?

92:デフォルトの名無しさん
09/02/08 23:59:04
>>89
まあ、高機能な分、少々重い。

でも、たぶん、WPF に限らず .NET 全般の、初回起動時の遅さが一番でかくて、
後はそんなに気になるレベルじゃないと思う。

ただ、DirectX 使ってるからってゲームに使えると思っちゃダメ。


93:デフォルトの名無しさん
09/02/08 23:59:25
マシンが遅いからいけないとか本末転倒なこと言い出すからやめろよ

94:デフォルトの名無しさん
09/02/09 00:00:04
>>91
基本的に書けない。

unsafe な struct 内限定で、
fixed int a[10]; とは書けるけども、
これは基本的にネイティブとの相互運用専用。

95:デフォルトの名無しさん
09/02/09 00:01:31
>>94
ありがとうございました。
変数の宣言はすべてnewをつけないといけないの大変じゃないですか?

96:デフォルトの名無しさん
09/02/09 00:01:44
>>91
var a = new int[10]
が限界かな

97:デフォルトの名無しさん
09/02/09 00:03:04
Formをダブルクリックして自動で作られたFormLoadを丸ごと削除したら
コンパイルできなくなりました。
一度自動で出来たメソッドをきれいになかったことにするには、後どこをいじればいいんでしょうか?

98:デフォルトの名無しさん
09/02/09 00:07:59
>>87
お前に対してレスした記憶がないんだが?
何で突っかかってくるんだ?

99:デフォルトの名無しさん
09/02/09 00:13:27


100:デフォルトの名無しさん
09/02/09 00:13:56
>>95
変数は実体持たないただの入れ物。
new 付けてる方が本体。


101:デフォルトの名無しさん
09/02/09 00:14:58
プロパティウィンドウのイベントマークをクリック
ドロップダウンのハンドラを削除

102:デフォルトの名無しさん
09/02/09 00:15:06
>>95
仕様だから大変とは思わん

103:デフォルトの名無しさん
09/02/09 00:15:25
入れ物を作ったあと、その変数に値を代入すれば
newがいらないってことですか?


104:デフォルトの名無しさん
09/02/09 00:15:30
>>97
デザイン画面で、Form1 の [プロパティ ウィンドウ]->[イベント タブ]->[Load] に、Form1_Load があるから、それを消すとおk
もしくは、Form1.Designer.csを直接編集して↓の一行を削除。
> this.Load += new System.EventHandler(this.Form1_Load);

105:デフォルトの名無しさん
09/02/09 00:20:38
>>101
thx。しかし項目になにもないんですけど、
手動で削除するのはもう無理ですか?
新しくプロジェクトを作ってイベントから削除したらコードからも消えてました。
間違ってコードから消した場合、すでに大量に中身を書いていたらもうお手上げなんでしょうか?

106:デフォルトの名無しさん
09/02/09 00:21:20
>>104
それですどうもです!

107:デフォルトの名無しさん
09/02/09 00:24:36
ここはコード エディタで変更しないでください。と書いてありました。
今後気をつけますthx

108:デフォルトの名無しさん
09/02/09 00:28:10
コードとデザイナを切り替えるたびに5秒前後PCが固まるんですが、
これは許容範囲ですか?みなさんどのぐらいかかりますか?
PenD3.2*2 Mem3.3BG です。

109:デフォルトの名無しさん
09/02/09 00:30:49
>>108
とりあえずスタートページOFF
ついでに、スタートアップのコンテンツをダウンロードする間隔もOFF

110:デフォルトの名無しさん
09/02/09 00:39:05
こりゃVSをゲストOSで使うのは無理っぽいですね

111:デフォルトの名無しさん
09/02/09 00:40:24
>>103
そりゃ、だって、
var a1 = new int [10];
var a2 = a1;
は合法なわけで。

112:デフォルトの名無しさん
09/02/09 00:48:17
構造体にメソッドが入れられると書いてあるんですが、
もしかしてCの構造体とは別物と考えたほうがいいんでしょうか?

113:デフォルトの名無しさん
09/02/09 00:49:54
>>112
DateTimeの定義をたどってみてみるといいよ
構造体なんだけど、クラスのようでもあり、メソッドらしきものもある


114:デフォルトの名無しさん
09/02/09 00:55:21
>>88をお願いします。
ストップウォッチを作りたいんですが、時間が来たら音で知らせる物にしたいんです。
音を出すの部分はどうやってコードにするんですか?
キリがないと思うので一覧のある場所を教えてほしいです。

115:デフォルトの名無しさん
09/02/09 00:57:04
>>114
URLリンク(www.codepanic.net)

116:デフォルトの名無しさん
09/02/09 01:02:12
おーありがとうです。
組み合わせて頑張ってみます!

117:デフォルトの名無しさん
09/02/09 01:05:32
>>95
そんなあなたにはVisual Basicをおすすめします。Dim a(9) As Integer

118:デフォルトの名無しさん
09/02/09 01:11:17
>>117
どう考えても、DelphiかC++/CLIのほうがいいだろ
C#はDelphiのぱくりだし、ぱくりというか設計者が同じか。
今となってはマイナーなC#よりC++/CLIのほうが将来的に役立つ。

119:デフォルトの名無しさん
09/02/09 01:12:46
どう考えても、F#のほうがいいだろ 
C#はDelphiのぱくりだし、ぱくりというか設計者が同じか。 
今となってはマイナーなC#よりF#のほうが将来的に役立つ。 

120:デフォルトの名無しさん
09/02/09 01:14:29
(´・∀・`)… どう考えても、JScript.NETのほうが  

121:デフォルトの名無しさん
09/02/09 01:17:34
C#はなんでこんなにマイナー言語なんだろうなぁ

122:デフォルトの名無しさん
09/02/09 01:17:58
WPFとかがC++/CLI絶対対応しないからしょうがなくc#やってんじゃないの?
で結局WPFが糞だったみたいなw

123:デフォルトの名無しさん
09/02/09 01:20:17
普通にVBかC++でよかったよな
C#は中途半端
騙された

124:デフォルトの名無しさん
09/02/09 01:20:19
Delphiは良い言語だと思うが、会社がころころ変わって行く末が不安だ

125:デフォルトの名無しさん
09/02/09 01:20:52
最初は低レベルな所をやって基本を固めるべき。
MSILしかありえんだろw

126:デフォルトの名無しさん
09/02/09 01:22:27
ニーモニックをマスターすれば、オブジェクト指向はマスター出来たも当然ですか?

127:デフォルトの名無しさん
09/02/09 01:23:36
>>124
Delphi Prismは機会があれば使ってみたいけど、その機会が(ry

128:デフォルトの名無しさん
09/02/09 01:27:39
言語選定に関しては顧客の意見が優先されることもあるからな
普段、Windowsの仕様をボロクソに言うクセに、開発言語はMS製にしろという矛盾

129:デフォルトの名無しさん
09/02/09 01:33:03
つかC#はdelphiそのもの

130:デフォルトの名無しさん
09/02/09 01:38:21
frameworkもvclそのものだよな

131:デフォルトの名無しさん
09/02/09 01:43:56
>>125
人はそうやって挫折しますw

132:デフォルトの名無しさん
09/02/09 01:52:11
Objectってvoidのようなものですか?

133:デフォルトの名無しさん
09/02/09 01:52:36
いいえ

134:デフォルトの名無しさん
09/02/09 01:53:02
ということにしたいのですね。

135:デフォルトの名無しさん
09/02/09 01:55:38
C++のスレでC++は重いからアセンブラが必要とかいってるんだけどwww
C#って勝ち組じゃね?

136:デフォルトの名無しさん
09/02/09 01:57:02
だってObjectに一度する必要なくないですか?
どういうときに使うんですか?

137:デフォルトの名無しさん
09/02/09 01:58:17
んで、C++とC#はどっちが思いっていってた?

138:デフォルトの名無しさん
09/02/09 01:59:55
ある意味勝ち組

139:デフォルトの名無しさん
09/02/09 02:00:05
>>136
一度ってどういうことよ
条件があとからどんどん変わっていったら誰も正確な意見なんていえないぜ

140:デフォルトの名無しさん
09/02/09 02:01:52
一度というか型がわからないからObjectにするんですよね
で後でstringにするみたいな
Objectはどう必要なんですか?

141:デフォルトの名無しさん
09/02/09 02:05:07
じゃあvoidとの違いを教えてください

142:デフォルトの名無しさん
09/02/09 02:05:45
もしかして、void*のようなものと言いたかったんじゃないの?

143:デフォルトの名無しさん
09/02/09 02:10:52
>>140
型がわからないんじゃなくて、どんな型でも入れられるようにobject
クラスの状態などが変化した場合、それに応じてコントロールを変化させたいような場合、
そのクラスにコントロールのポインタを格納できれば便利でしょ

144:デフォルトの名無しさん
09/02/09 02:19:35
C#でもあるっちゃあるな
unsafe
{
   void* p = stackalloc byte[100];
}


145:デフォルトの名無しさん
09/02/09 17:57:40
VS2010からC++が0xになるみたいですが、C#にはなにか追加されないんですか?

146:デフォルトの名無しさん
09/02/09 18:04:48
>>145
C# 4.0でググレ。

147:デフォルトの名無しさん
09/02/09 18:05:04
A 変数a =(A)b
ってなんぞ。わけわかめです New使うのと、左辺の変数に右辺の値を入れるくらいしかわからんのです。

148:デフォルトの名無しさん
09/02/09 18:06:44
こんなところでアホ晒しとらんと勉強しなはれ

149:デフォルトの名無しさん
09/02/09 18:18:30
どこ勉強すればいいかわからないです。
何で検索すればでてきます?カッコでキーワード?囲う意味がわからない

150:デフォルトの名無しさん
09/02/09 18:38:34
>>147 cast

151:デフォルトの名無しさん
09/02/09 18:48:55
クラスを継承した時に基本クラスのコンストラクタに引数がある場合はどうすればいいですか?

152:デフォルトの名無しさん
09/02/09 18:50:40
>>149

URLリンク(msdn.microsoft.com)(VS.80).aspx

153:デフォルトの名無しさん
09/02/09 18:51:24
あと、静的コンストラクタがよくわからないんですが、
一つのクラスにインスタンスコンストラクタと静的コンストラクタがある場合
インスタンスを作ったら両方よびだされるってことですか?

154:デフォルトの名無しさん
09/02/09 18:53:46
>>153
質問する前にできる事は一度自分で試してみたほうが勉強になると思います。


155:デフォルトの名無しさん
09/02/09 18:56:52
すいません。一通り入門書を読まないとコンパイルまで行かないような気がして。すいません

156:デフォルトの名無しさん
09/02/09 19:10:02
using System;
namespace HogeHoge
{
class Test
{
static int i;

static Test()
{
i = 100;
Console.WriteLine(@"staticコンストラクタ i={0}", i);
}
public Test()
{
Console.WriteLine(@"コンストラクタ1 i={0}", ++i);
}
public Test(string str)
{
Console.WriteLine(@"コンストラクタ2 i={0}", ++i);
}
}
class Program
{
static void Main(string[] args)
{
Test t1 = new Test();
Test t2 = new Test(@"test");
Console.ReadLine();
}
}
}

157:デフォルトの名無しさん
09/02/09 19:37:14
ありがとうございます!
t1の後ろにもConsole.ReadLine();を入れて静動両方のコンストラクタが呼ばれているのが確認できました。
しかし、これがうまくコンパイルできませんお願いします
class Test
{
static int i;
static Test() {
i = 100;
Console.WriteLine(@"staticコンストラクタ i={0}", i);
}
public Test() {
Console.WriteLine(@"コンストラクタ1 i={0}", ++i);
}
public Test(string str) {
Console.WriteLine(@"コンストラクタ2 i={0}", ++i);
}
}
class test2 : Test {
test2()
: base(str) { }
}
class Program {
static void Main(string[] args) {
Test t1 = new Test();
Console.ReadLine();
Test t2 = new Test("test");
Console.ReadLine();
test2 t3 = new test2("test");
Console.ReadLine();
}
}


158:デフォルトの名無しさん
09/02/09 19:41:27
>しかし、これがうまくコンパイルできませんお願いします

たぶんこういう発言している間はあなたはプログラミングに向いていないと思います。

159:デフォルトの名無しさん
09/02/09 19:58:08
アイちゃんが終わっちゃう

160:デフォルトの名無しさん
09/02/09 19:58:45
うはまじごめん誤爆

161:デフォルトの名無しさん
09/02/09 20:16:55
>>150 ありがとう。アイちゃんには難しすぎた;;()内の型にデータを変換できるって適当に覚えちゃっていいのかな

162:デフォルトの名無しさん
09/02/09 20:57:21
C#ってなんで流行ってるの?
ソースコード見られちゃうのに。

それと、C#で書いたコードは、
PHPみたいに、WEB上だけで動かせられるの?

つまり、ソースコードを見られないで運用する、って意味だけど。
それがC#.NETなの?

163:デフォルトの名無しさん
09/02/09 21:00:05
なにを言っているのかね君は

164:デフォルトの名無しさん
09/02/09 21:01:12
おいらはVS2005でC#使うからー
C#以外でも動作するの?まあ、デザインはJavaとHTML使ってるけど

165:デフォルトの名無しさん
09/02/09 21:13:40
デザインはJava(笑)

166:デフォルトの名無しさん
09/02/09 21:27:51
>デザインはJava
これは流行る


167:デフォルトの名無しさん
09/02/09 21:30:07
javafx script だったりして(笑

168:デフォルトの名無しさん
09/02/09 21:38:33
デジャバ

169:デフォルトの名無しさん
09/02/09 22:06:57
baseの使い方わかる方はいませんか?
157です。

170:デフォルトの名無しさん
09/02/09 22:11:12
>>169
どこでどんなエラーになるかまで書かないと
自前でコンパイルまでしてくれる人はあんまりいないよ。
おそらくコンパイルエラーのメッセージがそのまま答えなのだろうけど。

171:デフォルトの名無しさん
09/02/09 22:32:51
>>157
> test2 t3 = new test2("test");
これがどのコンストラクタを呼んでるのか考えてみろ

172:デフォルトの名無しさん
09/02/09 22:44:21
PHPだってみられちゃわないか?

173:デフォルトの名無しさん
09/02/09 22:44:27
class test2 : Test {
test2( string str ) : base(str) { }
}



174:デフォルトの名無しさん
09/02/10 00:59:01
引数がどうしても渡せません
string a = new string("test");
test2 t3 = new test2(a);
どこがだめですか?

175:デフォルトの名無しさん
09/02/10 01:00:26
大事なことなので2回言います
>どこでどんなエラーになるかまで書かないと 


176:デフォルトの名無しさん
09/02/10 01:35:31
str2は現在のコンテキスト内に存在しませんです。
class BASE
{
public BASE(string str)
{
Console.WriteLine(str);
}
}
class TEST : BASE
{
public TEST(string str)
: base(str2)
{
}
}
class Program
{
static void Main(string[] args)
{
string str = "abc";
TEST t3 = new TEST(str);
Console.ReadLine();
}
}

177:デフォルトの名無しさん
09/02/10 01:46:00
public TEST(string str2) : base(str2) { } 


178:デフォルトの名無しさん
09/02/10 01:48:27
おーできました!ありがとう!

179:デフォルトの名無しさん
09/02/10 04:21:09
デリゲートがよくわからないんですが、
イベントハンドラをまとめたクラスを作ってイベントに対応させるように使えばいいんでしょうか?
それとも個々にイベントハンドラをクラスに混ぜて使っていくものなんでしょうか?

180:デフォルトの名無しさん
09/02/10 05:17:59
WPFとFormアプリって何が違うんですか?

181:デフォルトの名無しさん
09/02/10 05:26:57
何が違うか・・というか、完全に別物。

182:デフォルトの名無しさん
09/02/10 06:14:21
GUIエディターがFormなみになったらWPF使おうと思ってるけど
いつなるの?

183:デフォルトの名無しさん
09/02/10 06:50:56
Form並ってどの辺を指して言ってるの?
SP1で改善されたが、それでも不満ならBlend使うかVS2010待つかしかないだろうね。

184:デフォルトの名無しさん
09/02/10 07:12:56
Visual StudioのGUIデザイナからFormBorderStyle.FixedSingle;を追加するにはどうすれば良いのでしょうか?

185:デフォルトの名無しさん
09/02/10 07:18:12
フォームを選択して、プロパティ ウィンドウのFormBorderStyleをFixedSingleに設定するだけ

186:デフォルトの名無しさん
09/02/10 07:51:17
>>185
ありがとうございます。

187:デフォルトの名無しさん
09/02/10 08:28:28
>>162
欠点差し引いても言語仕様がいいから。

ソース見られちゃうってのでいうと、JavaScript とか Flash だってそうだし。

PHP みたいなのの .NET 版は ASP.NET。
ASP.NET と比べたら PHP はかわいそうな子。

188:デフォルトの名無しさん
09/02/10 08:42:00
そんなこたーねーよ。
アメリカ軍とベトコンくらいの違いだろ

189:デフォルトの名無しさん
09/02/10 08:49:17
逆に言えば.NETソフトをぱくって.NETソフト作ってもソースが丸見えだから
パクッたかどうかもバレバレ
パクられて困ってるなら訴えればいい

190:デフォルトの名無しさん
09/02/10 08:57:05
難読化 訴訟コスト

巷のフリーソフトウェアは難読化とかしてるのかね
商用でもWebベースでなければ難読化必須な気がするが

191:デフォルトの名無しさん
09/02/10 09:14:49
知られたらやばいぐらいのアルゴリズムなら特許取るんじゃね?
それ以外で難読化が必要なケースが思い浮かばないんだけど

つか.Net以外でも実行ファイルをリリースする時点でアルゴリズムも見ようと思えば見れるし


192:デフォルトの名無しさん
09/02/10 09:17:47
PHPよくわかんないけど、PHPもイベント駆動型で書けるの?

193:デフォルトの名無しさん
09/02/10 09:19:53
有料のツールなら安価なやつでもデコンパイルできなくなったよ

194:デフォルトの名無しさん
09/02/10 09:31:57
デコンパイルできないってどういうこと?
難読可って名前を分かりにくくするぐらいしかやってなくて
リフレクションでぶっ壊れるイメージしかないけど

195:デフォルトの名無しさん
09/02/10 09:34:46
文字列を暗号化でもしたんだろうか

196:デフォルトの名無しさん
09/02/10 10:06:08
CLI 的には C# とかではどうやっても無理な識別子やコードは
確かに使えるけども

197:デフォルトの名無しさん
09/02/10 10:51:06
自分が書いたコードを見られるのはちょっと恥ずかしいというのはある

198:デフォルトの名無しさん
09/02/10 11:48:26
listboxのClearSelected( )についての質問です。
コンパイルを終えて、実行するとエラーが起きてしまいます。
listboxの項目を何も選択していないのにClearSelected( )をするのはダメなのでしょうか?

199:デフォルトの名無しさん
09/02/10 11:53:52
質問です。
プロパティの中で、自身の名前(プロパティ名)を取得することってできますか?
調べましたがわからなかったため、方法があれば教えてください。よろしくお願いします。


200:デフォルトの名無しさん
09/02/10 12:21:47
>>198
そんなことはないよ。
InitializeComponent()より前で呼んでるんじゃない?

201:デフォルトの名無しさん
09/02/10 12:54:19
outとかref修飾子ってどういう時に使うんですか?

202:デフォルトの名無しさん
09/02/10 12:58:45
>>201
MSDNに書いてあるから嫁よ

URLリンク(msdn.microsoft.com)(VS.80).aspx

203:デフォルトの名無しさん
09/02/10 14:01:10
Labelやメニューバーなど、Fontを変更させない場所にメイリオ等を使った場合
FontがインストールされていないXPや2000ではどのFontで表示されるのでしょうか?

204:デフォルトの名無しさん
09/02/10 14:07:57
YAHOO!「みんなの政治工作」
URLリンク(seiji.yahoo.co.jp)

大江康弘? 誰? 高橋千秋?? 知らない。どちら様ですか? 
そんな民主党のマイナー議員の皆様が激しく高得点。
そもそもどこの選挙区で何の実績を挙げてるのかすらよく知らん。誰かちゃんと全部知ってる? 
そんな人が70人通りかかって69人も支持。嘘だろー。
それに何か10,259件も誰かのコメントに支持したり反対したりしている。
何この超絶ヒマそうな民主党支持者。わけわかんない。一時間ほど経過したところ、
評価数がさらに増えて10,289件になっている。見て回った中では最高得点のクリッカーだ。
懸命にクリックしているのだとすると腱鞘炎まっしぐらだし、
スクリプトだとするとBOT使いは死ねという話である。おとなげない。

ヤフーが捏造した政党支持率 自民3% 民主76% 共産6% 社民3% 新党日本4% 国民新党2% 公明1%
URLリンク(quizzes.yahoo.co.jp)
アンケート操作疑惑
URLリンク(wiki.livedoor.jp)

205:デフォルトの名無しさん
09/02/10 14:16:59
これだとnodeがnullになるのですがこれはD&Dの時にtreeviewにフォーカスがない
からなのでしょうか?。またどうやったらD&Dしたノードを調べる事ができますか?。

private void treeView_sites_DragDrop(object sender, DragEventArgs e)
{
TreeNode node = treeView_sites.GetNodeAt(e.X, e.Y);
}


206:デフォルトの名無しさん
09/02/10 14:22:37
クライアント(TreeView)のXYに変換しないとだめじゃないかな?
PointToClient とかで。

207:デフォルトの名無しさん
09/02/10 14:25:10
TreeView.ItemDragでも使った方が面倒な事考えなくていいから楽だと思うよ

208:デフォルトの名無しさん
09/02/10 14:28:22
Form1が他のFormが最前列にあって視覚的に見れないときは、
TopMost = trueにすればよいですが、
TopMostみたいにずっと最前列じゃなくて、後ろのFormをクッリクした時みたいに、
FormにあるBottomを押したときに最前列にする方法はありませんか?

209:デフォルトの名無しさん
09/02/10 14:32:36
APIのSetWindowPos呼ぶとか

210:デフォルトの名無しさん
09/02/10 14:35:12
>>206-207
ありがとうございます。
PointToClientで解決しました。

ノードの移動も追加するつもりでいますのでItemDragでも色々と試してみます。

211:デフォルトの名無しさん
09/02/10 15:04:14
listboxがありまして、listbox_SelectedIndexChangedの動作のなかで
listbox.SelectedItem.ToString( )を使っています。
listboxの項目を選択した状態で、他の場所からlistbox.ClearSelected( )を行いました。

すると実行時に、listbox.SelectedItemが未定義になってしまいます。
別にlistboxの項目をクリックした分けでもないのに、選択解除をしたせいで、
listbox_SelectedIndexChangedの動作に入ってしまってエラーを起こしてしまいます。
お力添えお願いします。

212:デフォルトの名無しさん
09/02/10 15:12:09
>>211
MSDN嫁

URLリンク(msdn.microsoft.com)(VS.80).aspx

213:デフォルトの名無しさん
09/02/10 15:18:54
C++のソースをC#に書き直しているんですが,
STLのmapのように入れ子にできて一意の値が代入できるコンテナってC#にありますか?

214:デフォルトの名無しさん
09/02/10 15:22:21
あります。

215:デフォルトの名無しさん
09/02/10 15:22:57
>>214
どれですか

216:デフォルトの名無しさん
09/02/10 15:32:05
Dictionaryのことか?

217:デフォルトの名無しさん
09/02/10 15:39:03
>>216
ありがとうございます
使ってみます

218:デフォルトの名無しさん
09/02/10 15:49:30
>>212
ありがとうございます。
選択されていなかったらnullを返す。
未定義ってことは他に原因があるのでしょうか?

219:デフォルトの名無しさん
09/02/10 15:54:17
Windowsフォームのクラス(ClassA : System.Windows.Forms.Form)では
thisの型はForm型?それともClassA型?

220:デフォルトの名無しさん
09/02/10 17:40:23
Form型クラスの中にForm型をnewで生成することはできますか?

221:デフォルトの名無しさん
09/02/10 17:44:53
うん

222:デフォルトの名無しさん
09/02/10 17:56:08
>>219
つ this.GetType()

223:デフォルトの名無しさん
09/02/10 18:04:39
俺も難読化に興味ある。
現状ではDLLを暗号化しておいて、実行時にネイティブコードを呼び出して
デコード→読み込みみたいな感じにしてる。
Reflectorだけでは解析不可だけど、ちょっと詳しい人なら簡単に突破される。

将来的には
ネイティブの実行ファイル起動→スプラッシュロゴ表示(.Netの遅い起動対策)
→裏でマネージコードをデコード&exeの起動
みたいな事ができないかと考えてる。

224:デフォルトの名無しさん
09/02/10 18:16:12
ぼくのHelloWorldも難読化したほうがいいですか

225:デフォルトの名無しさん
09/02/10 19:48:02
Managed D3Dスレに誰もいないのでこちらで質問させていただきます
C#でD3D上にUI作るにはどういった方法がありますか?

226:デフォルトの名無しさん
09/02/10 20:14:05
D3Dか、俺もやってみたいな

227:デフォルトの名無しさん
09/02/10 20:29:56
俺がやってる方法は通常のアプリと同じ様にコントロールをつけて、
OnPaintイベントでD3D描画。これだけで3D表示とコントロールは共存できる。
ツールとかならこれでいーんだろーけど、ゲーム等、リアルタイムで
アニメーションさせる場合とかは一考が必要。
ただD3Dのパフォーマンスをギリギリまで求めると
コントロールのレスポンスが悪くなる。作るものに応じて何通りか試すといいかと。

228:デフォルトの名無しさん
09/02/10 20:40:54
完全に自前でフレームワーク作るのが普通
各コントロールは自作のMyControlクラスを継承して,
それぞれOnRenderをオーバーライドして描画するとかWinFormsっぽくするとそんなに難しくない

229:デフォルトの名無しさん
09/02/10 20:40:56
>>218
ListBox.ClearSelected()を見たほうがいいかもね。

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox ctl = (ListBox)sender;
if (ctl.SelectedIndex == -1)
{
label1.Text = "Cleared!";
}
else
{
label1.Text = ctl.SelectedItem.ToString();
}
}


230:デフォルトの名無しさん
09/02/10 22:41:34
配列の要素数や、ArrayListの要素数など、
0以上の数値にしかなり得ないような数値の返り値がintなのはなぜでしょうか?
uintであるべきではない理由があったら教えて下さい。

231:デフォルトの名無しさん
09/02/10 22:44:39
統一した方が便利だから
intに最適化されてるから
符号なし数値型はCLS非準拠だから

232:デフォルトの名無しさん
09/02/10 22:48:41
むしろ「わざわざ」uintにする理由がないからだと思うんですが。。
「わざわざ」uintなんぞにしちまったらintと演算するごとに(以下略

233:デフォルトの名無しさん
09/02/10 22:51:19
常識的に考えて、MaxValue個以上の要素を持つArrayListなんて使わないから実用上の問題もないしねぇ

234:デフォルトの名無しさん
09/02/10 22:54:34
クラスライブラリでは基本的に符号なし整数型を公開したらダメ
サポートしてない言語がありうるから
CLSは言語間の相互運用性を確保するための仕様

235:デフォルトの名無しさん
09/02/10 22:56:05
なに#define DEBUGって
コンパイルするとき選べるDebug Releaseの選択とはまた違うのか

236:デフォルトの名無しさん
09/02/10 22:57:03
素早いレスありがとうございます

CLS非準拠というのは理解できました。
intの最適化されているというのは、これだけの情報では検索範囲が広すぎて
どういう意味なのかがわかりませんでした。
よろしければ、何がどのように、何に対して最適化されているのか、補足いただけないでしょうか。
また統一したほうが便利というのは、
このような要素数を格納するような変数はこれまでintを使用していたので、
仮に-1などの要素数が代入されエラーが発生する可能性を許容しても、
変数としてintを利用することの便利性のほうが勝るということでいいでしょうか?

>>232
uintを宣言した段階で正数しか入らないということが、
クラス設計上わかりやすいのではと思いました。
例えば配列のindexをプロパティで入力してもらうとき、intだと負数の入る余地があり、
実際に数値を判断して例外なりを出す必要があるのではと思ったということです。

237:デフォルトの名無しさん
09/02/10 23:05:29
randは速度重視で正確なんでしょうか?
それとも偏って使い物になりませんか?

238:デフォルトの名無しさん
09/02/10 23:07:22
>>235
いわゆるプリプロセッサシンボルというやつ。用途はググれ
プロジェクト構成でDebugを選ぶと自動的にDEBUGは定義されるから#define DEBUGは書く必要ない
プロジェクト構成で設定している意味がなくなるからむしろ書いてはいけない
>>237
なにか問題が出たらそれから考えればいいだろ

239:225
09/02/10 23:09:26
自前でコントロール作成ですか・・・
にほんご入力とかも、必要があれば自分で実装しないといけないのかしら

240:デフォルトの名無しさん
09/02/10 23:11:12
>>238
なるほどthx


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

4850日前に更新/200 KB
担当:undef