ふらっとC#,C♯,C#(初心者用) Part22

このエントリーをはてなブックマークに追加
1ななしぃ#
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

前スレ: ふらっとC#,C♯,C#(初心者用) Part21
http://pc11.2ch.net/test/read.cgi/tech/1195368821/
2ななしぃ#:2007/12/16(日) 19:52:44
C#, C♯, C#相談室 Part44
http://pc11.2ch.net/test/read.cgi/tech/1194956418/

C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
http://pc11.2ch.net/test/read.cgi/tech/1162950198/

Windows Live プログラミング
http://pc11.2ch.net/test/read.cgi/tech/1188112572/

初心者のためのプログラミング言語ガイド Part6
http://pc11.2ch.net/test/read.cgi/tech/1193132235/
3デフォルトの名無しさん:2007/12/16(日) 20:04:54
>>1乙なんて言わないんだからね!
4デフォルトの名無しさん:2007/12/16(日) 20:29:55
C#3.0の日本語版解説本早く出せよ。
5デフォルトの名無しさん:2007/12/16(日) 20:35:41
Milan
6デフォルトの名無しさん:2007/12/16(日) 20:51:56
VisualStudio2008はWin9Xをサポートしているかな?
7デフォルトの名無しさん:2007/12/16(日) 21:09:55
>>1
8デフォルトの名無しさん:2007/12/16(日) 22:58:42
右クリックメニューをクリックでColorDialogを表示させてフォームの透過色を指定させるようにしたいんですが
ShowDialogメソッドを使うとOKボタンや×ボタンをクリックしてもフォームに反映されないうえに
なぜか繰り返しダイアログが出てきてしまいます
どうすればいいでしょうか?
9デフォルトの名無しさん:2007/12/16(日) 23:02:03
そんな風にプログラムしてるからだろ。
10デフォルトの名無しさん:2007/12/16(日) 23:04:13
>>8
そのあたりのコード晒してみそ
11デフォルトの名無しさん:2007/12/16(日) 23:11:35
始めたばかりなので簡単なことも理解できてないかもしれませんがお許しください
ほとんどあるサイトから引用したんですがこんな感じです、よろしくお願いします

private void StripItem1_Click(object sender, EventArgs e)
{
Form1 F = new Form1();

ColorDialog colorDialog1 = new ColorDialog();

colorDialog1.AnyColor = true;

colorDialog1.SolidColorOnly = true;
// カスタム カラーを任意の色で設定する
colorDialog1.CustomColors = new int[] { 0x8040FF, 0xFF8040, 0x80FF40, 0x4080FF };
DialogResult dr = colorDialog1.ShowDialog();
// ダイアログを表示し、戻り値が [OK] の場合は選択した色を textBox1 に適用する
if (dr == DialogResult.OK)
{
F.TransparencyKey = colorDialog1.Color;
}
// 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照)
colorDialog1.Dispose();
}
12デフォルトの名無しさん:2007/12/16(日) 23:25:14
変なサンプルだなあ
private void StripItem1_Click(object sender, EventArgs e) {
 using (ColorDialog dialog = new ColorDialog()) {
  //設定は略
  if (dialog.ShowDialog() == DialogResult.OK)
   this.TransparencyKey = dialog.Color;
 }
}
こういうこと?
13デフォルトの名無しさん:2007/12/16(日) 23:34:42
>>12
わざわざありがとうございます
そういうことだと思います
あと書き忘れたのですが、デバッグするとクリックに関係なくはじめからダイアログがでてきてしまいます
14デフォルトの名無しさん:2007/12/16(日) 23:39:55
とりあえずフォームに反映されないのは
>Form1 F = new Form1();
ここでいきなり作成したフォーム(Showもされてない、現在のフォームとムカンケイ)の透過色を設定してるから

F.TransparencyKey = colorDialog1.Color;

this.TransparencyKey = colorDialog1.Color;

15デフォルトの名無しさん:2007/12/16(日) 23:49:04
変なサンプルだけど
ほとんど流用しといて肝心なところをおかしくしてるのはなんでだw
16デフォルトの名無しさん:2007/12/16(日) 23:53:31
>>14
ありがとうございます、理解しました

しかしやっぱりダイアログは始めから出てますし、どのボタンを押しても一瞬消えてまたすぐ出てきてしまいます
いったいどういうことなんでしょうか
178:2007/12/16(日) 23:55:28
>>15
本当にお恥ずかしい限りです、、、
そこの理解すらもあいまいでした
18デフォルトの名無しさん:2007/12/16(日) 23:56:31
また他のところに問題があるんだろう
いきなりToolStripなんて使わずに、自分で十分把握できるミニマムなサンプルから
ちょっとづつ変えていった方がいいよ
198:2007/12/17(月) 00:21:18
>>18
分りました、ちょっと急ぎすぎたのかもしれません
少しづつ勉強して行きたいと思います
ありがとうございました
20デフォルトの名無しさん:2007/12/17(月) 11:46:35
Xボタン(閉じる)を表示させないウインドウ(フォーム)を作るにはどうすればいいですか?
21デフォルトの名無しさん:2007/12/17(月) 12:02:52
22デフォルトの名無しさん:2007/12/17(月) 12:23:02
おおこれです、どうもありがと。
23デフォルトの名無しさん:2007/12/17(月) 15:54:55
FormBorderStyle.Noneに設定したときタスクバーに表示されるフォームに対する
右クリックを無視させない方法ってありますか?
「閉じる」だけでもできるとありがたいんですが。
24デフォルトの名無しさん:2007/12/17(月) 16:47:40
テキストボックスを使ってキー入力から出力までにタイムラグを生じさせるプログラムを組んでいるのですが、
上手くいきません。
キー入力には携帯電話型入力デバイスを使用して携帯電話と同じテンキーによるカナ入力を行っています。
現状のプログラムだと、1文字目の遷移にはタイムラグが発生するのですが、2文字目以降はタイムラグが生じません。
また決定キーを押した際にはタイムラグが生じます。
2524:2007/12/17(月) 16:49:13
ソースコードは以下です。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
Sleep(1000);
}
[DllImport("kernel32.dll")]
static extern Int32 Sleep(Int32 millisecs);
}
}
どのように改修すればよいでしょうか?
感覚としてはキーを押すごとにタイムラグが生じるようにしたいのですが。
26デフォルトの名無しさん:2007/12/17(月) 18:18:43
キーの方のイベントでやったらどうなる?
ってかなんでスリープにAPI使ってんだよ。
27デフォルトの名無しさん:2007/12/17(月) 18:34:22
なんで2文字目から……っていうと、単にスレッド眠らせてる間にキーのキューに溜まってるから

ふつうイベントでフラグ立ててタイマー起こす
タイマーのTickでフラグ降ろす
フラグ立ってるときのキー入力を破棄する
28デフォルトの名無しさん:2007/12/17(月) 19:00:16
破棄していいのかよっw
29デフォルトの名無しさん:2007/12/17(月) 19:23:58
>>27
破棄したらだめだろw
それだったら、わざとタイミング遅らせて入力してるのと一緒じゃないか
ド素人は黙ってなさい
30デフォルトの名無しさん:2007/12/17(月) 20:19:09
もう1個スレッド立ててそっちで出力処理させて
inはどんどんためてけばいいんでないの?
31デフォルトの名無しさん:2007/12/17(月) 20:30:51
スタートアップ常駐アプリ作れる?
32デフォルトの名無しさん:2007/12/17(月) 20:31:55
作れる
33デフォルトの名無しさん:2007/12/17(月) 23:57:45
>>23
FormBorderStyle使わずにRegionでクリッピングすればいいんじゃない?
34デフォルトの名無しさん:2007/12/18(火) 01:42:14
>>33
ありがとうございます。
追加で質問なんですが読み込んだ画像サイズに自動的にクリッピングすることは可能でしょうか?
35デフォルトの名無しさん:2007/12/18(火) 01:54:06
まずやってみろよ
36デフォルトの名無しさん:2007/12/18(火) 02:18:03
調べてみましたが、「平行四辺形にする」とか「楕円にする」という記事ばかりでした。
もしよかったら教えてください、お願いします。
37デフォルトの名無しさん:2007/12/18(火) 10:30:51
C#でブラウザ作りたいのだが
とりあえず自分で作ったんだがエラーばかりで起動しない
基本部分だけでいいんで誰か教えてくれ
38デフォルトの名無しさん:2007/12/18(火) 10:37:25
基本ねぇ……


んじゃ
using System;
39デフォルトの名無しさん:2007/12/18(火) 10:45:29
>>38
とりあえずURL入力して表示できるところまで頼むww
40デフォルトの名無しさん:2007/12/18(火) 10:56:29
どこまで作ったのか
それを見せて間違いを指摘してもらうんじゃないのか
41デフォルトの名無しさん:2007/12/18(火) 11:00:55
WebBrowserコントロールを使うつもりなのかそうでないのかもわからないな
4237:2007/12/18(火) 11:08:30
>>40
ttp://www.uploda.org/uporg1160638.zip.html
途中までのだがうpした
4337:2007/12/18(火) 11:10:56
WebBrowserコントロール使用でお願いします
44デフォルトの名無しさん:2007/12/18(火) 11:31:06
passがわからん
45デフォルトの名無しさん:2007/12/18(火) 11:43:34
釣りだろ
46デフォルトの名無しさん:2007/12/18(火) 11:59:32
超解説サイトは
47デフォルトの名無しさん:2007/12/18(火) 12:18:09
C#を使い始めて1週間の超初心者ですがよろしくお願いします。
問題のコードを単純化するとこんな感じです。

private static void TestMethod() {
textBox1.Text = "文字書き込み";
}
「オブジェクト参照が必要です」というエラーが出て困っています。
このメソッドの呼び出し元からでなく、何とかしてstaticメソッドから
textboxに文字を書き出したいのですが、どのようにしたらよいでしょうか?
48デフォルトの名無しさん:2007/12/18(火) 12:19:56
>>47
static を消す。
49デフォルトの名無しさん:2007/12/18(火) 12:22:05
textBox1 のスコープ外なんだろ?
50デフォルトの名無しさん:2007/12/18(火) 12:25:09
それだけじゃオブジェクトを特定できないから当然といえば当然
5147:2007/12/18(火) 12:31:34
このメソッドのstaticを消すと、TestMethodを呼び出してるところで
「オブジェクト参照が必要です」となって、
結局全てのstaticを外さないとダメなことになります。
何とかしてstaticメソッドからtextboxに文字を書き出したいのですが、
textBox1があるメインフォームをインスタンス化すればいいのでしょうか?
5247:2007/12/18(火) 12:46:12
textBox1があるメインフォームをインスタンス化してみたところ、
とてつもなく重たくなって、しかも肝心のtextBox1に文字出力されませんでした;;
53デフォルトの名無しさん:2007/12/18(火) 13:08:29
>>52
フォームが表示されているなら既にインスタンスはあるだろ。
別のインスタンスを作ってどうするんだよ。
54デフォルトの名無しさん:2007/12/18(火) 13:11:06
メソッド設計がマヌケなんだしょ
インスタンスフィールドに触る可能性があるのにstaticにするなんてよ

private static void TestMethod( TextBox tb ) {
 tb.Text = "文字書き込み";
}

とすればおk
元をたどっていって始めのメソッドにTextBox渡さないといかんけどね

もっと超マヌケな方法としては、staticなフィールドにtextBox1をあらかじめいれとく
55デフォルトの名無しさん:2007/12/18(火) 14:02:14
C#でもSetProp/GetProp的なことができれば静的関数からthisポインタの参照もできなくは無いな
56デフォルトの名無しさん:2007/12/18(火) 15:35:33
何を言ってるの?
57デフォルトの名無しさん:2007/12/18(火) 15:38:00
何を言ってるの?

ちなみに多分言ってること自体は
デリゲートで実は出来るが
全然何の意味もない。
58デフォルトの名無しさん:2007/12/18(火) 16:32:57
デリケートな問題ですね
59デフォルトの名無しさん:2007/12/18(火) 18:09:23
オススメの解説サイト教えて
ここ見て今ではこんなに立派になりました
みたいな
60デフォルトの名無しさん:2007/12/18(火) 18:09:55
MSDN2
61デフォルトの名無しさん:2007/12/18(火) 18:19:47
初心者向けでこれだけでいけるッてのはないような
まんべんなくあちこち見てくうちにそれなりに理解できる

http://dobon.net/
http://jeanne.wankuma.com/
http://www12.plala.or.jp/dokugaku/index.html
http://uchukamen.com/
http://ufcpp.net/study/csharp/index.html
http://wisdom.sakura.ne.jp/programming/cs/index.html
http://homepage3.nifty.com/midori_no_bike/CS/

ただし効果は保証できないッ
62デフォルトの名無しさん:2007/12/18(火) 18:47:14
プログラムは本当におもしろい
小学校の頃からずっとやってる
今はプログラムしなくてもいい役職についたが
それでも趣味でフリーなものを作りつづけている
本当にありがとうございました
63デフォルトの名無しさん:2007/12/18(火) 19:00:34
はいはいベテランベテラン
満足したら寝ろ
64デフォルトの名無しさん:2007/12/18(火) 19:06:32
嫉妬は見苦しいよ。低所得者
65デフォルトの名無しさん:2007/12/18(火) 19:09:35
本当に好きなことは仕事にするなってことだな。
66デフォルトの名無しさん:2007/12/18(火) 19:19:19
プログラム好きな小学生なんてキモイオタクだな
67デフォルトの名無しさん:2007/12/18(火) 19:24:43
>>66
きつい下っ端の仕事ばかり押し付けられて鬱になって自宅療養中ですか?w
68デフォルトの名無しさん:2007/12/18(火) 19:30:36
>>67
体動かせよ
どうせスポーツ経験もない帰宅部だったんだろ
キモ
69デフォルトの名無しさん:2007/12/18(火) 19:31:23
伝説はここから始まっ
70デフォルトの名無しさん:2007/12/18(火) 19:32:17
そういったのはマ板でやったほうが釣れるよ
71デフォルトの名無しさん:2007/12/18(火) 19:34:12
>>68
こんなとこきてスポーツとか言ってるしw
お前は両方できないんだろw

できる人間は何でもそれなりにできるんだよ
俺は毎週ジムに通ってる
低所得者はそんな金も時間もないだろうがなw
72デフォルトの名無しさん:2007/12/18(火) 19:37:29
VC#2008Express日本語版が出たのにお前らときたら…
73デフォルトの名無しさん:2007/12/18(火) 19:38:08
安月給の僻みにしか聞こえないかもしれんが、
正直あのガラス張りだったりするジムでわざわざ銭払って汗流す価値観がわからんよ俺には。
なんかネズミが例のくるくる回る奴で遊んでるのを連想して滑稽に思っちゃう。
っていうか、そこらのジムでできるようなことって自宅でも普通にできないか?
74デフォルトの名無しさん:2007/12/18(火) 19:41:02
貧乏なので自宅にプールないんです
75デフォルトの名無しさん:2007/12/18(火) 19:53:33
>>73
やりたいところでやればいいじゃないか
田舎なら排気ガスも気にせずに外走れば気持ちいいだろうしな
76デフォルトの名無しさん:2007/12/18(火) 20:00:31
>>75
都内でも川沿いはそれなりに走れるよ
77デフォルトの名無しさん:2007/12/18(火) 20:14:06
VC#2008Expressって2005EEと共存できるみたいだけど
本当に大丈夫?
78デフォルトの名無しさん:2007/12/18(火) 22:06:41
C# と C++

身に着けるならドッチ!?   がいいですか
79デフォルトの名無しさん:2007/12/18(火) 22:08:09
だからそれをこのスレで聞くなって。
このスレ的には C# よりの回答が多いに決まってる。
80デフォルトの名無しさん:2007/12/18(火) 22:09:06
どっちもやれ
81デフォルトの名無しさん:2007/12/18(火) 22:18:32
>>77
2005のProとEE、2008のProとEE、全部同じマシンに入ってるが問題ない
82デフォルトの名無しさん:2007/12/18(火) 22:42:53
>>78
C#は.NETが無いと何もできん。
C++をお勧めする。いろいろな分野で利用できるのは
C++の強みだ。
83デフォルトの名無しさん:2007/12/18(火) 22:46:29
>>79
ですよね・・・趣味で使う、且つ、業務でも活用できるってのがどちらかなと

>>82
なるほど、どもです。
そもそも.NETを覚えたくてC#とかVBとかいろいろでてますがどれを覚えるのが一番いいのかなと思いまして。
84デフォルトの名無しさん:2007/12/18(火) 22:49:30
.NETやるならC#
85デフォルトの名無しさん:2007/12/18(火) 22:50:22
まあ.NETなら間違ってもC++/CLIは選ばないように
8682:2007/12/18(火) 22:50:47
>>83
.NET覚えたいんだったらC#が分かりやすいと思う。
適用範囲は限定されるが。
87デフォルトの名無しさん:2007/12/19(水) 00:40:56
VC#2008をいじり始めたんですが、
DelphiのTActionのようにメニューとかツールボタンとかの設定を
一括で管理するにはどうすれば良いのでしょうか?
88デフォルトの名無しさん:2007/12/19(水) 00:43:32
質問です。

メニューに似たような処理をする以下のようなアイテムがあります。
outputCsvFile と outputHtmlFile

これらのクリックイベントにはいずれも以下のメソッドが関連付けられています。
OutputFile(object sender, EventArgs e)

出力するファイル形式が異なるので処理の一部を分岐しなければならず、
sender で分岐されるしかないのですが、一般的に使われる定番の分岐方法って
ありますか?

現在はキャストして .Name プロパティで分岐させていますが、
他人がメンテナンスしてコントロール名を変えたときなどに、分岐で使用している
文字列が置き換わらないので、いまいちのような気がしています。
もっとよい分岐のさせ方があったらお教えください。
89デフォルトの名無しさん:2007/12/19(水) 00:51:37
マイクロソフトの人が書いたサンプルコードは多くの場合
string hoge = String.Empty;
と初期化していますが、
string hoge = string.Empty;
と組み込み型の.Emptyを使用しない理由って何なんでしょう??

stringの頭文字を大文字にしたり小文字にしたりするのが面倒くさいので
常に小文字のを使っていますが、何か問題ありますか?
90デフォルトの名無しさん:2007/12/19(水) 00:54:20
>>88
MenuItemインスタンス自体で判定しちゃいかんのか
91デフォルトの名無しさん:2007/12/19(水) 00:55:41
>>89
string.Empty と String.Emptyの違いはわかってる?
92デフォルトの名無しさん:2007/12/19(水) 00:56:00
>>89
stringはSystem.Stringのエイリアスに過ぎないよ
using System;してるならstringとStringは全く等価

でも静的メンバ使う場合はStringって書かないとどうも気持ち悪いな個人的に
93デフォルトの名無しさん:2007/12/19(水) 01:01:11
>>88
onClickじゃなくてOnCommandにするとか?
CommandEventArgsのCommandNameとかCommandArgumentで分岐。
94デフォルトの名無しさん:2007/12/19(水) 01:21:18
>>90, 93
ありがとうございます。
95デフォルトの名無しさん:2007/12/19(水) 01:29:59
>>91-92
組み込み型とクラスということ、エイリアスで等価ということも
知っていますが、だとしたらコードで高速に書いていきやすいのは
すべて小文字のstringに統一することだと思っていたのですが、
そのサンプルコードを書いた人はわざわざString.Emptyのほうを
使っていたんですよね・・・。

個人の趣向かな、とも思ったのですが、デザインパターンとかを
多用してわかりやすいコードを書くレベルの高そうな人だったので
何か深い訳があるのかなと思いまして・・。
96デフォルトの名無しさん:2007/12/19(水) 01:35:43
後払いについて
http://snipurl.com/1vhgw
97デフォルトの名無しさん:2007/12/19(水) 01:36:40
大文字小文字程度じゃ速さは変わらんよ
98デフォルトの名無しさん:2007/12/19(水) 01:40:35
ソースをキーボードから打ち込む速さのことでは?
99デフォルトの名無しさん:2007/12/19(水) 01:42:07
そうだよ
変わらんよ
100デフォルトの名無しさん:2007/12/19(水) 01:58:14
ただし小指が死ぬ
101デフォルトの名無しさん:2007/12/19(水) 02:00:01
最近定数を
private const int MAX_ROW_COUNT = 7;
ではなくて
private const int MaxRowCount = 7;
と書く人が増えてきている気がするのですが、
気のせいでしょうか?
102デフォルトの名無しさん:2007/12/19(水) 02:00:01
正しい書き方をしているだけだろ
stringはただのエイリアスなんだから
103デフォルトの名無しさん:2007/12/19(水) 02:03:46
>>101
そうなん?
俺のまわりは全然居ないな
104デフォルトの名無しさん:2007/12/19(水) 02:08:24
左側は小文字(たとえばstring)、右側は大文字(String)が普通でしょ。
105デフォルトの名無しさん:2007/12/19(水) 02:32:04
???
106デフォルトの名無しさん:2007/12/19(水) 02:33:16
左側はint 右側はInt32か
Int32.Parseは嫌だな
107デフォルトの名無しさん:2007/12/19(水) 02:52:33
string str = String.Empty;

int i;
if( Int32.TryParse( str, out i ) )

みたいな感じにしてしまう。どうでもいいけど
108デフォルトの名無しさん:2007/12/19(水) 02:53:11
なんか間違ったけどいいや
酔ってるし
109デフォルトの名無しさん:2007/12/19(水) 02:59:41
無駄に明示したいときなんか Int32 ってやっちゃうな。
全く意味が無いと知りつつも。
110デフォルトの名無しさん:2007/12/19(水) 06:38:07
これから C# を覚えてみたいと思っています。
他のソフトウェアのプラグインというものを作ってみたいのですが
C#.Net でそういった DLL を作ることはできますか?
それともその場合は C++ といった他の言語を選択した方がよいのでしょうか
111デフォルトの名無しさん:2007/12/19(水) 06:41:10
>>110
他のソフトウェアの言語次第
112デフォルトの名無しさん:2007/12/19(水) 10:15:53
言語ってかプラグインの仕組み次第だろ。
まあ無理にやれないことはないにしても。
113デフォルトの名無しさん:2007/12/19(水) 12:20:31
C++でやれば手間かかるが全て解決する
114デフォルトの名無しさん:2007/12/19(水) 14:11:44
C#で質問なんですけど、
現在在庫管理のソフトを作ってます。
それで、在庫の変数をclass Declarationで宣言して
frmMainとライフタイムを同じとするように、public class Form1の内側(全てのメソッドの外側)
にpublic Declaration dec = new Declaration();とインスタンスを作成して
frmMainでボタンイベントが起こったときに、現在の在庫数をCSVで出力する用のクラス
FileInOutのInputCsv(Decralation dec) でCSVから取り込んだ値をDeclarationの変数郡に代入す際に
どうしても参照エラーになってしまいます。デバッガで確認すると
dec.sample と参照した変数は0となっており、参照できているはずだと思うんですが・・・
なぜでしょうか。どなたかご教授いただけませんか
115デフォルトの名無しさん:2007/12/19(水) 14:12:21
ライフタイム ⇒ ライフサイクルの間違いです^^;
116デフォルトの名無しさん:2007/12/19(水) 14:18:10
dec.sampleがクラスだったりしないん?
117デフォルトの名無しさん:2007/12/19(水) 14:18:37
dec.sample は Declaration中に宣言されているint型の変数です。
118デフォルトの名無しさん:2007/12/19(水) 14:50:13
privateだったりとか・・・・
classのメンバは明示的にpublicにしないとprivate扱いなんだけど
119デフォルトの名無しさん:2007/12/19(水) 14:52:46
ううぅん・・・
public int なんですけどねえ・・・;;

VisualC#を使っているんですが、
そもそもはForm1に在庫の操作をするときに使用する変数を全ておいておくと
あまりに莫大になりすぎる為に、それ専用のクラスを作成し、
常にForm1、およびFileInOutクラスから参照したいと考えたのが始まりなんですが
他にいい方法があればそれでもいいんですけどね・・・。

なぜ通らないんだろう・・・。
120デフォルトの名無しさん:2007/12/19(水) 14:56:45
VB6とかとちがってintもInt32ていうクラスだしコンストラクタで初期値設定とかしないと
参照できないんじゃないかなぁ?
121デフォルトの名無しさん:2007/12/19(水) 14:58:20
コンストラクタで初期値設定って具体的には
dec.sample = 0; とかって感じですか?
122デフォルトの名無しさん:2007/12/19(水) 15:26:14
かなりエスパーしてるつもりなんだけど
そっちももうすこし、具体的にクラスを貼ったりしてくれると嬉しいんだけど。

こういうのだとダメじゃね?
class Declaration
{
   public int sample;
      :
}

たとえば
class Declaration
{
   public int sample;
   
   public Declaration()
   {
      sample = 0;
   }
}

または

class Declaration
{
   public int sample = 0;
      :
}

とか?
123デフォルトの名無しさん:2007/12/19(水) 15:29:36
あっ!そうなんですか?
すぐに試してみます。
124デフォルトの名無しさん:2007/12/19(水) 15:30:18
ダメでした;;
125デフォルトの名無しさん:2007/12/19(水) 15:33:42
クラスは今明示的に0を代入しました。

<class Decralation>
public class Declaration
{
#region "宣言"
//********抵抗**************
public int stk_25CKF1002FL=0;
public int stk_25CKF3901FL=0;
public int stk_25CKF1001FL=0;
public int stk_25CKF8201FL=0;
public int stk_25CKF4700FL=0;
public int stk_25CKF1303FL=0;
public int stk_25CKF2202FL=0;
}

public class Form1 : System.Windows.Forms.Form
{
       ・
       ・
       ・
private System.Windows.Forms.TextBox CLLC4RNCount_tbx;
private System.Windows.Forms.ComboBox decide_cbx;
private System.Windows.Forms.Button decide_btn;
/// <summary>
/// 必要なデザイナ変数です。
/// </summary>
private System.ComponentModel.Container components = null;

public Declaration dec = new Declaration(); //ここに宣言
}
126デフォルトの名無しさん:2007/12/19(水) 15:35:34
せめてエラーメッセージ貼ってくれw
127デフォルトの名無しさん:2007/12/19(水) 15:36:07
private void Form1_Load(object sender, System.EventArgs e)
{
FileInOut fio = new FileInOut(this.dec);
fio.InputCsv();
InitializeComboBox();
}
これがFileInOutを呼び出す記述で
クラスFileInOutは

public class FileInOut
{
public Declaration dec;
public FileInOut(Declaration Dec)
{
dec = Dec;
}
public void InputCsv()
{
System.IO.StreamReader strRead = new System.IO.StreamReader("CLLC4RN.txt",System.Text.Encoding.Default);

                                  ・
                                  ・
}
}
こうなってます。
128デフォルトの名無しさん:2007/12/19(水) 15:36:51
エラーメッセージは

'System.NullReferenceException' のハンドルされていない例外が 在庫管理.exe で発生しました。

追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。

です><
129デフォルトの名無しさん:2007/12/19(水) 15:39:55
public void InputCsv()
{
System.IO.StreamReader strRead = new System.IO.StreamReader("CLLC4RN.txt",System.Text.Encoding.Default);
  
dec.stk_25CKF1002FL = int.Parse((strRead.ReadLine().Split(',').GetValue(2)).ToString());                                
                                  ・
                                  ・
                                  ・
}
}

失礼! InputCsv()からDecralationの変数の参照は上の通りでした。
dec.stk_25CKF1002FL = int.Parse((strRead.ReadLine().Split(',').GetValue(2)).ToString()); 
が抜けてました・・・
130デフォルトの名無しさん:2007/12/19(水) 15:44:17
FileInOutに渡してるDecがnullとかじゃなくて?
131デフォルトの名無しさん:2007/12/19(水) 15:48:33
えーと、

private void Form1_Load(object sender, System.EventArgs e)
{
FileInOut fio = new FileInOut(this.dec);
fio.InputCsv();
InitializeComboBox();
}
の時点で
{
dec.stk_25CKF1002FL = 1; //追加

FileInOut fio = new FileInOut(this.dec);
fio.InputCsv();
InitializeComboBox();
}
としてみると stk_25CKF1002FL = 1 となったので
NULLではないと思うんですが、再度確認してみます。
132デフォルトの名無しさん:2007/12/19(水) 15:49:58
出来ました^^;
133デフォルトの名無しさん:2007/12/19(水) 15:52:28
結局原因はなんだったの?

次からはもう少し解りやすく質問してくれよ
ヒマだったからいいけどw
134デフォルトの名無しさん:2007/12/19(水) 15:53:47
あ、いや
{
dec.stk_25CKF1002FL = 88; //追加

FileInOut fio = new FileInOut(this.dec);
fio.InputCsv();
InitializeComboBox();
}


とやってみたらインスタンスdecのstk_25CKF1002FLの値が88に変わりました。
以前、参照の渡しはできない状態です・・・。
135デフォルトの名無しさん:2007/12/19(水) 15:56:09
わかりにくくて申し訳ないです・・・。
136デフォルトの名無しさん:2007/12/19(水) 17:17:02
質問です!
C#で
ある文字列と一致する名前の変数があれば
参照をその変数に渡すとかってできますか?

例えば

string str = "hoge";
int hoge;

の時に、 str = 5;

としたときに hoge == 5 となるような。

かなりわかりにくいと思うんですが!
分かる方いらっしゃったら教えてください!
137デフォルトの名無しさん:2007/12/19(水) 17:20:06
マジレス
そんなことしないですむようにコーディングしろ
138デフォルトの名無しさん:2007/12/19(水) 17:21:56
Hashtable おすすめ
139デフォルトの名無しさん:2007/12/19(水) 17:24:05
レス早っw
ありがとうございますww
140デフォルトの名無しさん:2007/12/19(水) 17:24:54
やはり、変数の名前を文字列と見なす事はできないんですね〜
141デフォルトの名無しさん:2007/12/19(水) 17:26:09
例が間違っている気がするのだが
142デフォルトの名無しさん:2007/12/19(水) 17:27:34
>>141
そうですか・・・?

関連付けるために一回一回 文字列をselect caseで比較して代入してもいいんですけど
手間かかりすぎるなあって思って。
143デフォルトの名無しさん:2007/12/19(水) 17:46:19
何がしたいのかよく分からん
そもそもstrはstring型だからstr = 5;とはできないだろ?
144デフォルトの名無しさん:2007/12/19(水) 17:49:00
スクリプト言語からきた奴がよく患ってる、
「文字列で変数名を指定したい」って病気だろ。
碌なことないからとっとと治せ。
145デフォルトの名無しさん:2007/12/19(水) 18:05:42
.NETのソースはどこにありますか?
146デフォルトの名無しさん:2007/12/19(水) 18:06:49
レドモンド
147デフォルトの名無しさん:2007/12/19(水) 18:07:27
>>145
MSにありますよ
148デフォルトの名無しさん:2007/12/19(水) 18:10:34
マッチについてなんですが

Match m2 = reg.Match(name);
name = name.Remove(0, name.Length - m2);
気持ちとしてはこんな感じで、文字列nameの0文字目からregでマッチした文字までを削除したいのですが
マッチしたのが何文字目かを得るにはどうしたらいいんでしょうか?
てっきり↑の場合m2に文字数が入るのかと思っていたのですがそうでもないようです
149デフォルトの名無しさん:2007/12/19(水) 18:36:06
>>148
name = name.Substring( m2.Index );
150デフォルトの名無しさん:2007/12/19(水) 18:37:38
>>134
ぬるりのスタックトレースは?
151デフォルトの名無しさん:2007/12/19(水) 19:18:03
>>149
それ微妙に違うw
name = name.Substring(0, m2.Index);
152デフォルトの名無しさん:2007/12/19(水) 19:19:48
>>101
XNA Frameworkではpublicな定数はそうなってるよ
Microsoft.Xna.Framework.MathHelper.PiOver2みたいに
153デフォルトの名無しさん:2007/12/19(水) 19:31:50
リストビューに入れるデータは少し長かったり少し短いだけでダメなんでしょうか?なぜかエラーがでる
154デフォルトの名無しさん:2007/12/19(水) 19:35:39
C++やらないでC#やる意味あるの?
155デフォルトの名無しさん:2007/12/19(水) 19:52:24
>>154
C++は玄人用、実力者用
C#はお手軽Winアプリ開発者用
156デフォルトの名無しさん:2007/12/19(水) 19:54:51
実用的な練習台になるならそれでいいです
157デフォルトの名無しさん:2007/12/19(水) 20:07:47
C++はゲーム開発者用
C#はお手軽Winアプリ開発者用
158デフォルトの名無しさん:2007/12/19(水) 20:11:06
.NETアプリは簡単に逆アセできてソース丸見えなんですよね?
これはずっと改善されないの?
M$ですら、.NETでゲームなどを開発していないのに
これを薦めている訳がわからないんですけど
159デフォルトの名無しさん:2007/12/19(水) 20:16:29
ぶっちゃけMFCでさえ必要になるようなアプリを個人で作れない

仕事は別だが
160デフォルトの名無しさん:2007/12/19(水) 20:20:25
DllImportでの質問なんですが、SetLastErrorをtureしたら成功した・しないに関わらず
必ずSetLastError();が呼ばれて何らかの値が入ると思うのですが、.NET 3.5を入れた後
からかどうかわかりませんが

Exception e = Marshal.GetExceptionForHR(Marshal.GetLastWin32Error());

としてもなぜかeはnullのままで、成功しても入ってたはずのCOMExceptionが入らなく
なってしまいました。なぜでしょうか?
161デフォルトの名無しさん:2007/12/19(水) 21:45:44
GetLastErrorの値は一般的にHRESULTではないからGetExceptionForHRする意味がないと思うのだが
162デフォルトの名無しさん:2007/12/19(水) 22:55:09
ただし、その気になればHRESULT_FROM_WIN32でHRESULT値へ変換できる。
163デフォルトの名無しさん:2007/12/19(水) 23:01:17
Marshalに変換メソッド用意されてるよ
164デフォルトの名無しさん:2007/12/19(水) 23:32:49
>>158
C++でも簡単に逆アセできるよ
165デフォルトの名無しさん:2007/12/19(水) 23:39:53
まあ.NETにはReflectorという最強の仲間で最強の敵がいるからな
166デフォルトの名無しさん:2007/12/20(木) 00:27:04
Visual Studio 2008日本語版がつい最近出たみたいだね・・・

久しぶりにVisual C++ 2008 Express Editionも落としてみたけど、
フォームにぺたぺた&ボタンをダブルクリックでクリックイベント追加と
VB見たいになってる・・・
167デフォルトの名無しさん:2007/12/20(木) 00:39:21
いや昔もMFC使えばそんなもんだったろ。
168デフォルトの名無しさん:2007/12/20(木) 00:43:28
>>158
難読化ツール売ってる会社が商売にならなくなるじゃん。
169デフォルトの名無しさん:2007/12/20(木) 00:54:43
なんか変なの来てるの?
170デフォルトの名無しさん:2007/12/20(木) 01:06:43
>>158
時々でいいので XNA を思い出してあげてください・・・・・
171デフォルトの名無しさん:2007/12/20(木) 01:08:32
MSはXNAつかってないじゃん
172デフォルトの名無しさん:2007/12/20(木) 02:01:20
難読化は.netz使えば良い。
自前のソースは圧縮されて影も形も無くなる。
173デフォルトの名無しさん:2007/12/20(木) 02:39:00
Windows.Forms.Form の背景色だけを半透明にすることは出来ますか?
Opacity では全域が半透明になってしまいますし、TransparencyKey では完全に透明になってしまいます。
174デフォルトの名無しさん:2007/12/20(木) 08:17:21
C#でウィルスソフト作れますか?作るとバレますかね?
使用マシン識別シリアルコードとか暗号化して入れられてるんですかね?
175デフォルトの名無しさん:2007/12/20(木) 08:23:29
>>174
通報(ry
176デフォルトの名無しさん:2007/12/20(木) 08:25:21
C# つーか、 .net Frx3.5 における XML について質問があります。
ある XElement に対して、
This is a <b>BOLD</b> string.
みたいなのをそのまま入れたいんだけど、どうすればいいですか?
aXElement.Add(XElement.Parse("This is a <b>BOLD</b> string."));
みたいにできればいいのですが。
177176:2007/12/20(木) 08:29:44
言い忘れてました。
<b>BOLD</b>
はテキストではなく、エレメントとして扱いたいです。
178デフォルトの名無しさん:2007/12/20(木) 08:43:52
DataSet xmlDS = new DataSet();
StringReader xmlSR = new StringReader(xml);
xmlDS.ReadXmlSchema(global::Test01.Properties.Resources.schema); // ←リソースとして埋め込んだXML Schemaを使いたいのですが、 どうすればいいのでしょうか?
xmlDS.ReadXml(xmlSR);
179デフォルトの名無しさん:2007/12/20(木) 09:52:37
>>173
DwmEnableBlurBehindWindow
DwmExtendFrameIntoClientArea
180173:2007/12/20(木) 11:20:12
>>179
ごめん。それ検討したんだけど、FormWindowState.Maximized かつ BorderStyle.None だと反映されないことに絶望したんだ (;´Д`)
やりたいのは WindowsFlip のアレなんだけどなぁ……。Form の2枚重ねでもしてるのかな。
181デフォルトの名無しさん:2007/12/20(木) 11:24:31
>>180
API
182173:2007/12/20(木) 11:26:24
>>181
ごめん。API だけじゃさすがにわかんない (;´Д`)
せめて関数名だけでも教えてくださいな orz
183デフォルトの名無しさん:2007/12/20(木) 11:29:38
>>182
教えてあげない><
184173:2007/12/20(木) 11:30:45
>>183
><;
185デフォルトの名無しさん:2007/12/20(木) 11:34:46
知らないならレスしないでください!うざいだけです!
186デフォルトの名無しさん:2007/12/20(木) 12:31:47
>>185
名言キター!
187173:2007/12/20(木) 13:25:58
ごめん。言い過ぎた
でも、インターネットのリソースは有限なんだから、無駄な書き込みしないでください……。
188デフォルトの名無しさん:2007/12/20(木) 13:29:48
>>185を見てああここID無しだったなってぼんやり思ったw
189デフォルトの名無しさん:2007/12/20(木) 13:30:54
ID欲しいな
でも俺の過去の自演もバレるんかな
190デフォルトの名無しさん:2007/12/20(木) 13:35:42
>>173
DIB を使ってみては?
確か一部分だけ半透明にできるはずだし。
191デフォルトの名無しさん:2007/12/20(木) 13:36:10
難読化しなくても本気で読まれちゃいけないところはC++で組むとかすりゃいいのにね
192デフォルトの名無しさん:2007/12/20(木) 14:09:56
>>189
2ちゃんでは復活しないよ。
datに入ってないでしょ、id。
193デフォルトの名無しさん:2007/12/20(木) 14:12:40
ブラウザ作りたいんだが

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MyBrowser
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Url = new Uri("http://www.yahoo.co.jp/");
}
}
}

で、InitializeComponentにエラー、というか注意が出てならないのだが
誰か解決方法おしえてくれ
194デフォルトの名無しさん:2007/12/20(木) 14:20:42
>>193
具体的に何が出るの?
うちじゃそんな風にならんけど。
195193:2007/12/20(木) 14:31:24
デバックすると
InitializeComponentのところに

「▲SecurityExceptionはハンドルされませんでした。」
要求が失敗しました。

て表示される
196デフォルトの名無しさん:2007/12/20(木) 14:36:06
>>195
多分実行ファイルの場所が悪い。
ネットワークフォルダ上で実行してないか?
197193:2007/12/20(木) 14:58:12
>>196
マイドキュメントに移したらなりましたw
まじサンクス
198デフォルトの名無しさん:2007/12/20(木) 16:04:13
なりましたw
199デフォルトの名無しさん:2007/12/20(木) 18:19:20
簡単なブラウザのようなものを作っています。
webページを取得&整形で時間を食ってしまっています。
そこは仕方がないとして、とりあえず先にフォームを出して、それからwebページ取得&整形をしたいのですが方法がわかりません

form_loadが終わったら・・のようにしたいのですがどうすればいいんでしょう
200デフォルトの名無しさん:2007/12/20(木) 19:12:52
ブラウザ人気あるねぇw


WebBrowser コントロールというものがある。
貼り付けるだけでブラウザの完成だ。
201デフォルトの名無しさん:2007/12/20(木) 19:15:14
Load時にタイマー投げて1回目のタイマー処理でタイマー止めるとかはどうだろう
202デフォルトの名無しさん:2007/12/20(木) 19:21:48
>>199>>201
WebBrowserコントロール使ったこと無いの?
203199:2007/12/20(木) 19:47:45
>>201
.NET系はどうも混乱するんだけどやってみる、さんくす

>>202
別にウェブブラウザ作る訳でもないしなぁ
204デフォルトの名無しさん:2007/12/20(木) 19:49:35
>>202
というかそんなんについては聞いてない
205デフォルトの名無しさん:2007/12/20(木) 19:51:01
ウェブブラウザでない簡単なブラウザって何だ?
ウェブページを取得してそれはブラウズせずに何をブラウズするんだ?
206デフォルトの名無しさん:2007/12/20(木) 19:56:34
>>205
どうしてもWebBrowserコントロールについてひけらかしたいのか、やりたいなら好きにやればいいと思うよ

全く質問と関係ないこと言ってるじゃないの
207デフォルトの名無しさん:2007/12/20(木) 20:00:04
という事にしたいのですね:-)
208199:2007/12/20(木) 20:02:50
なんとも言えないけど少なからずそのWebBrowserコントロールとやらは意識して使ったことないなぁ

ウェブページ取得してマッチングとループとで整形して形にしてるだけなんだけどな、俺がなんか勘違いしてるのだろうか
2chブラウザとかみたいな感じなんだけども
209デフォルトの名無しさん:2007/12/20(木) 20:04:54
こんな単純な煽りが散発するあたりふらっとなんだろうかC#なんだろうか
210デフォルトの名無しさん:2007/12/20(木) 20:11:36
データ取りに行くの別スレッドにすれば良し
211デフォルトの名無しさん:2007/12/20(木) 20:15:20
便利な方法を知らないで変な方に突っ込んでいく初心者多いからね
とりあえずWebBrowserを教えるのは適切だろ >>199にとって適切かは別にして
212デフォルトの名無しさん:2007/12/20(木) 20:16:29
うん
213デフォルトの名無しさん:2007/12/20(木) 20:19:02
>>199
イベントの使い方がわかってないから教えてくれっていう質問?
214デフォルトの名無しさん:2007/12/20(木) 20:24:01
もっとも、WebBrowserコントロールを知ったところで、
199は欲しいものじゃないと突っぱねると言う展開もありえる気がする。
例えば自分でHTMLをレンダリングするのが目的という場合とか。
215デフォルトの名無しさん:2007/12/20(木) 20:27:37
いずれにしろあの質問じゃ何とも言えないな
誰かエスパー呼んできて
216デフォルトの名無しさん:2007/12/20(木) 20:30:27
217デフォルトの名無しさん:2007/12/20(木) 20:33:34
ソケットプログラミングのためのクラスってありますか?
Linux C言語でのコーディングのときのようにソケット関連
のシステムコールを直接呼び出すのは面倒です。
218デフォルトの名無しさん:2007/12/20(木) 20:34:10
あります。
219デフォルトの名無しさん:2007/12/20(木) 21:14:11
システムコール呼ぶほうが何してるかわかりやすくて良いけどな
220デフォルトの名無しさん:2007/12/20(木) 22:15:16
ソケットそのものが低レベルだから.NETのライブラリ使っても大して変わらん気がする
TcpClient 辺りになればずいぶん抽象化されてる感じがするけど
221あにす ◆sGTL1yK0.6 :2007/12/21(金) 00:58:49
>>199
Shownイベントなら表示後に発生するよ。
222デフォルトの名無しさん:2007/12/21(金) 06:06:26
別ウィンドウのClassName(Spy++で表示されるクラス)を知りたいのですが、どうやって取得するのでしょうか?
メモ帳みたいにタイトルバーの文字列がコロコロ変わるようなウィンドウを見つけ出したいのです。

public void hoge(Process proc) {
IntPtr hWnd ;
if (proc.MainWindowHandle == IntPtr.Zero) {
hWnd = FindWindow(xxx, IntPtr.Zero); // ここで使いたいのですが。
} else {
hWnd = proc.MainWindowHandle;
}
[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
223デフォルトの名無しさん:2007/12/21(金) 06:44:47
GetClassName
224デフォルトの名無しさん:2007/12/21(金) 07:17:43
225デフォルトの名無しさん:2007/12/21(金) 07:34:56
Unicodeの"U+12AB"のような形式のコードポイントの文字列を文字に変換するメソッドはありますか?
あれば名前を教えてください
226デフォルトの名無しさん:2007/12/21(金) 07:53:59
U+消してintにしてChar.ConvertFromUtf32
227デフォルトの名無しさん:2007/12/21(金) 08:08:02
>>226
できました
ありがとうございます〜
228デフォルトの名無しさん:2007/12/21(金) 09:27:00
>>223
ウィンドハンドルが取れないウィンドなので使えないです…

C#ではウィンドクラス名を明示的に設定できないのでしょうか?
Spy++で見ると自動生成とおぼしき謎の文字列になっているのですが。
229デフォルトの名無しさん:2007/12/21(金) 09:56:27
>>202
HTTPで2ちゃんのdatファイルを取得してスレ表示
株価データをHTMLで取得してグラフ表示

これをWebBrowserコントロールでやってみろ
230デフォルトの名無しさん:2007/12/21(金) 09:57:29
明らかにミスアプローチじゃん
231デフォルトの名無しさん:2007/12/21(金) 09:59:06
>>229
199のどこにもそんな要件は挙がってないんだけど
ここってエスパースレだっけ?
232デフォルトの名無しさん:2007/12/21(金) 10:00:02
前者はWebBrowserコントロールでできるな
233デフォルトの名無しさん:2007/12/21(金) 10:01:48
質問が糞すぐる
234デフォルトの名無しさん:2007/12/21(金) 10:03:51
そんなこと自分でできるような人があんなくだらない質問しないだろう
と考えるのは自然だろ
235デフォルトの名無しさん:2007/12/21(金) 10:06:03
うん
236デフォルトの名無しさん:2007/12/21(金) 10:08:14
なぜ質問スレなのにやってみろとか言い出しちゃう人がいるのはなんで?
237デフォルトの名無しさん:2007/12/21(金) 10:11:28
株価データもHTMLで取得するんだからWebBrowserコントロールで表示できるだろ。
238デフォルトの名無しさん:2007/12/21(金) 10:36:37
>>228
.NET のコントロールは実行時に動的にクラス作ってサブクラス化するのでクラス名は静的には決定できない。
EnumWindows 使って GetWindowThreadProcessId で判定するとかしたら?
239デフォルトの名無しさん:2007/12/21(金) 12:29:20
HTML で株価チャートを書きたくないなぁw
WebBrowser でやるやらない以前の問題だ
240デフォルトの名無しさん:2007/12/21(金) 12:35:05
そもそもこいつは答を求めてるのだろうか
241デフォルトの名無しさん:2007/12/21(金) 12:40:23
変にプライド高くて何か言われると反論しちゃうんだろうな
242デフォルトの名無しさん:2007/12/21(金) 12:41:38
既に質問者いなくなってるのに、gdgd続けられてもな
243デフォルトの名無しさん:2007/12/21(金) 12:43:24
実はこっそり見てる
244あにす ◆sGTL1yK0.6 :2007/12/21(金) 13:06:04
>>199の要点は
>form_loadが終わったら・・のようにしたい
でそ?だからShown
245デフォルトの名無しさん:2007/12/21(金) 14:29:45
食いついて、無駄にスレ消費しようとするなよレス乞食どもw
246デフォルトの名無しさん:2007/12/21(金) 17:30:04
ahosugi
247デフォルトの名無しさん:2007/12/21(金) 18:43:12
入社から十年たってるのに
構造体を使ったことがないとほざくプログラマーに
C#を仕込むにはどうしたらいいでしょう
248デフォルトの名無しさん:2007/12/21(金) 18:44:50
板違い
249デフォルトの名無しさん:2007/12/21(金) 20:16:16
ものすごい初歩的なことのような気がするんですが、
VisualC#2005 Express Edition を使っていて、

using System.Windows.Input;

と書くと

エラー 1 型または名前空間名 'Input' は名前空間 'System.Windows' に
存在しません。アセンブリ参照が不足しています。

というエラーが出てしまいます。
なぜでしょうか?
250デフォルトの名無しさん:2007/12/21(金) 20:18:56
DLLの参照の追加

でもたぶんそれは使用しようとしてるクラスが間違ってる
251デフォルトの名無しさん:2007/12/21(金) 20:24:13
本当にSystem.Windows.Inputが使いたいんだったら
VisualC#2008Expressに移行してWPFアプリケーションにする
252デフォルトの名無しさん:2007/12/21(金) 20:25:38
と、いうと?
要するに System.Windows.Input.Keyboard が使いたいんですが、
このためになにか参照設定しなきゃいけないですか?
253デフォルトの名無しさん:2007/12/21(金) 20:26:24
2005 じゃ .NET 3.0 開発はできんだろ
254デフォルトの名無しさん:2007/12/21(金) 20:27:31
System.Windows.InputはWPFという新しいGUIフレームワークのものだから
それが使いたいんだったらVS2008でないといけない
255デフォルトの名無しさん:2007/12/21(金) 20:31:31
えーと、まだ使い初めたばかりでよくわかってないんですが、

http://msdn2.microsoft.com/ja-jp/library/system.windows.input.keyboard(VS.80).aspx

ここ見ると、.Net2.0でもKeyboardは使えるような気がするんですが見方が間違ってます?
では逆に、2005でキーボードの状態を取得するにはどうすればいいでしょうか?
256255:2007/12/21(金) 20:34:24
おっと、今見たら、2008の無償ダウンロードが始まってるんですね。
出直してきます。ありがとうございました。
257デフォルトの名無しさん:2007/12/21(金) 20:34:53
>>255
PresentationCore.dll は参照設定から見えるかな?

見えなかったら誘導しよう。
ついさっき設定やったばかりだし。
258デフォルトの名無しさん:2007/12/21(金) 20:36:38
ありゃ。一足遅かったか。
Cider 入れれば 2005 からでも使えたような気がしたんだけどな。
259デフォルトの名無しさん:2007/12/21(金) 20:38:51
Expressだったら2008への移行を躊躇する理由は何もないだろ
2008Expressで.NET2.0をターゲットにしたアプリケーションも作れるし
260デフォルトの名無しさん:2007/12/21(金) 20:43:06
流れを読まずポスターDLページを見つけたので張っとく
http://www.microsoft.com/downloads/details.aspx?FamilyId=7B645F3A-6D22-4548-A0D8-C2A27E1917F8
.net
261デフォルトの名無しさん:2007/12/21(金) 20:53:03
>>260
XPS版おもすぎ
本当にこんなもの実用に堪えるんかいな
262デフォルトの名無しさん:2007/12/21(金) 21:08:37
重いけどスクロールはpdfより綺麗だね
しかしメモリ消費が500Mってw
263デフォルトの名無しさん:2007/12/21(金) 21:08:47
.NETもC#もXPSもWPFもSilverlightもXNAも
数撃ちゃ当たるさ
264255:2007/12/22(土) 00:28:05
2008入れて、いろいろやって結局System.Windows.Input.Keyboardは参照できたんですが、
どーしても Keyboard.IsKeyDown()で押されているキーが取得できないので、
とうとうあきらめて GetKeyState() 使っちまいました w
イベント以外でキーの押下状態を取得するのは、どうするのが正当なんですかねぇ?
265デフォルトの名無しさん:2007/12/22(土) 00:30:26
キーフック
266デフォルトの名無しさん:2007/12/22(土) 10:41:38
初歩的な質問で申し訳ありませんが

アクセスの beforupdate にあたるイベントは何になるのでしょうか?

テキストボックスに文字を入力し、エンターキーが押されたときに自動的に処理を行いたいですが、やり方が判らず困っています
267デフォルトの名無しさん:2007/12/22(土) 10:54:43
Validating/Validatedか?
// FormのAcceptButton設定してない限りEnterの入力も特別視されないぞ
268デフォルトの名無しさん:2007/12/22(土) 15:04:39
TextChangedからタイマーかけるか、
KeyDownで(e.KeyCode == Keys.Return)か?とか。
269デフォルトの名無しさん:2007/12/22(土) 16:24:19
リストボックスを複数選択可能にしてるんだけど 
複数削除がうまくいきません・・・ どうかご教示くださいませ。
270デフォルトの名無しさん:2007/12/22(土) 16:27:16
>>269
どううまくいかんのか書いてくれんと。

おそらく頭から消してるんだろうから、後ろから消していけ。
271デフォルトの名無しさん:2007/12/22(土) 16:31:04
おお まさしくその通りです
けつから消したらindex番号も変わりませんね
即レス感謝です
272デフォルトの名無しさん:2007/12/22(土) 17:52:22
いや、先頭からとか後ろからとか、そういう小手先の問題かよw

そういうのはさあ、普通削除するアイテムをリストなり配列なりにリストアップしといて
まとめて削除するのが定石ってもんでしょ。

こういうのはさ、知識というかパターンとして覚えることじゃなくて
だれが考えても普通の知能があればそうするって程度の話だと思うぞ
273270:2007/12/22(土) 18:12:33
>>272
頭固いね。
リストの後ろからGetSelected()で選択されているかどうかを調べて削除していけば、
わざわざリストなり配列なりを作らなくてもいいんだけど。
274デフォルトの名無しさん:2007/12/22(土) 18:18:37
>>373
そっちの方を「わざわざ」と感じるのがプログラマ的には正しい。というより普通。
残念だけど君がプログラマをやるには頭が悪すぎるだけだよそれは。
275270:2007/12/22(土) 18:23:30
「プログラマ的には正しい」か・・・
定石に囚われて、それ以外の効率のいいアルゴリズムを考えようともしない奴が
プログラマのつもりなんだから世も末だな。

リストボックスから選択されているアイテムをリストアップしてリストを作って
そいつをまたループ回して一個ずつ削除するのと、
ループを後ろから回して選択されているアイテムをその場で消すのと、
どっちが効率がいいかぐらい普通の知能があれば分かりそうなもんだけどね。
276デフォルトの名無しさん:2007/12/22(土) 18:31:30
>>275
さすがにネタで言ってるよね?w
277270:2007/12/22(土) 18:34:19
>>276
試しに、あんたの定石でリストボックスから選択されているアイテムを消す
ロジックを書いてみな?
278デフォルトの名無しさん:2007/12/22(土) 18:36:21
>>276
どーせ冬厨だろ
279デフォルトの名無しさん:2007/12/22(土) 18:39:53
ひょっとして本気で言ってるのか……。
人間として終わってるとまでは言わないが、プログラマとしては始まってすらいないな。

突っ込みどころはいろいろあるんだけど一つだけ。
たぶんVB上がりの人とかじゃないかと推測するけど、そもそも先頭からとかケツからとか
いう話はコレクション内のインデックスを指定して削除することを前提としてるんだと思うが、
そもそもそこからしてちょっと変なんだよ。

君の言葉を返せば「頭が固い」。
俺流に言えば「馬鹿の一つ覚え」。
280デフォルトの名無しさん:2007/12/22(土) 18:40:42
何千件もあるならともかく、せいぜい数十件程度の人間の操作が介入する処理に
最速を求めるコーディングをしようとするほうが効率悪い。
281デフォルトの名無しさん:2007/12/22(土) 18:46:37
>>272
リストボックスのObjectCollectionに、まとめてアイテムを削除するって機能あったっけ?

ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.listbox.objectcollection.aspx
282デフォルトの名無しさん:2007/12/22(土) 18:50:45
いや「まとめて」っていうのは別にAddRangeのRemove版みたいのがあるからそれ使え、
って意図で書いたわけではないよ。
283270:2007/12/22(土) 18:53:00
>>279
ごたくはいいから、書いてみなって。

>>280
そりゃまあ、確かにそういうことも多いけどね。
でも、ちりも積もれば山となる、だ。
284281:2007/12/22(土) 18:55:46
>>282
なんだその程度の話か。
だったら事前にリストアップしようがしまいが後ろからインデックス指定で消していくのは変わらんわけで
お互い好きにすればって感じだ。
285デフォルトの名無しさん:2007/12/22(土) 18:58:02
>>284
おい本気で言ってるの?
だからインデックス指定ってw
286270:2007/12/22(土) 18:59:26
>>285
もしかして、RemoveAt()じゃなくてRemove()を使え、て言ってんの?
それとも、他になにか方法があるんかな?
287デフォルトの名無しさん:2007/12/22(土) 19:00:42
もしかしても糞もあるかよw
288270:2007/12/22(土) 19:03:41
>>287
言っとくけど、Remove()ってのはコレクションの中を「検索」して消してるんだよ?
最初から位置が分かってるならRemoveAt()の方がはるかに効率がいいんだよ?

それを知ってる上で、人に「馬鹿の一つ覚え」て言ってんの???
289デフォルトの名無しさん:2007/12/22(土) 19:08:37
>>288
わかったわかった。もう勝手にすれば?

ただ、そこまで俺流にこだわるなら君こそ実際に両方のやり方のコードを書いてみたら?
そしてここに晒してみ?
どっちがより直観的に読めるコードになるかね果たして。

それと、まあどうでもいいんだが俺はパフォーマンスの観点から物をいってないよ。
既に誰か書いてるけど、今時のCPUからしたらどのみちどんなやり方しようと
たいした問題ではないからね普通はそんなの。
290270:2007/12/22(土) 19:13:23
>>289
そういうだろうと思ったから、ちょうど書いていたところだ。
list がリストボックスな。

ListBox.ObjectCollection obj = list.Items;
for (int i=obj.Count-1; i>=0; i--) {
 if (list.GetSelected(i)) {
  obj.RemoveAt(i);
 }
}

だから、あんたも定石で書いてくれよ。直感的に分かるコードでね。

で、俺は「今時のCPUからしたらどのみちどんなやり方しようと
たいした問題ではないからね普通はそんなの。」
って考え方は嫌いなんだわ。
一つ一つは大した問題でなくともそいつが重なれば大きくなっていく。
今時のCPUでももっさりしてるプログラムが多いのは、こういう慢心が
原因だと思うよ。
291デフォルトの名無しさん:2007/12/22(土) 19:13:57
ブビ厨だけじゃなくて俺出来るぜ学生までC#は背負わされるのか・・・
いい言語なのになぁ・・・
292デフォルトの名無しさん:2007/12/22(土) 19:14:50
>>289
直感的なわかりやすさ何て問題か?
どちらにしたって、コメント一行で終わりだろw
293デフォルトの名無しさん:2007/12/22(土) 19:17:19
リストビューに関してなのですが、選択されたリストビューの項目を取得する方法がわかりません

ColumnHeader A = new ColumnHeader();
ColumnHeader B = new ColumnHeader();
ColumnHeader C = new ColumnHeader();
...
こんな具合でA列B列C列・・・とあり、ここにデータが追加された状態で、
ある行をクリックするとその行の特定列の情報を得たいです。

private void listView1_SelectedIndexChanged(object sender, EventArgs e){}
こいつの中でうまくやればいいのはわかるのですがいまいち他コントロールとは勝手が違う為よくわからないでいます

|A|B|C|
|.1|.2|.3|
|.4|.5|.6|
|.7|.8|.9|
...
こんな具合で2行目をクリックすると4,5,6部分が選択され、例えばその中のB列にある5を取得するといったかんじです

それではよろしくお願いします
294デフォルトの名無しさん:2007/12/22(土) 19:17:34
>>290
悪いけどそれトーシローの発想だよ。
そいつか重なれば、ってその操作はμsecオーダーで何度も実行されるケースがあるの?w
そうでなければ「重なり」ようがないだろう。
小学生でもわかる理屈だよ。

っていうか、そんなに(くだらないことに)こだわるなら実際両方やってパフォーマンス測定してみろってw
俺はそんなわかりきったことやるのはごめんだけどね。
295270:2007/12/22(土) 19:20:29
>>294
この処理に限らず、あらゆることでおまいさんは「今時のCPUは」って
エクスキューズするだろ?
そういうことを言ってんの。
まあ、ああだこうだと偉そうに言う割にはあんたの俺流のコードは書かないみたいだし、
もうどうでもいいや。
296デフォルトの名無しさん:2007/12/22(土) 19:27:40
>>289
書いてみたよ。
listBox1.SelectedIndices.OfType<int>().Reverse()
    .ToList().ForEach(index => listBox1.Items.RemoveAt(index) );
直感的に読めるかどうかは知らんけど。
297デフォルトの名無しさん:2007/12/22(土) 19:29:39
そんなにご自身の頭の悪さをひけらかさなくても^^;
298デフォルトの名無しさん:2007/12/22(土) 19:31:59
中級者気どりがスレの意義を壊すスレ
299デフォルトの名無しさん:2007/12/22(土) 19:32:46
さあ、盛り上がってまいりました。
300デフォルトの名無しさん:2007/12/22(土) 19:36:08
両方ってことでもう一個も。

listBox1.SelectedItems.OfType<object>()
    .ToList().ForEach(obj => listBox1.Items.Remove(obj) );

あんま変わらん気がするw
301デフォルトの名無しさん:2007/12/22(土) 19:40:25
>>300
ToListってなんだよぶち殺すぞ
無駄な処理を書くな
302デフォルトの名無しさん:2007/12/22(土) 19:41:42
後ろからRemoveAtより直感的に分かりやすいコードなんてないだろ
ミスの入り込む余地もないし最善のプログラムだと思うがね
303270:2007/12/22(土) 19:44:10
>>296
>>300
なるほど・・・
これはすごいなぁ。
直感的かどうかは微妙 w
304デフォルトの名無しさん:2007/12/22(土) 19:47:58
そういや、 foreach ステートメント の中でアイテムを書き換えるような操作すると、
実行時に怒られたと思うんだけど、List<>::ForEach() は大丈夫なの?
305デフォルトの名無しさん:2007/12/22(土) 19:50:17
296,300で書き換えてるのは列挙対象とは別のコレクションだろ
306デフォルトの名無しさん:2007/12/22(土) 19:51:46
>>305
あ、よく見たらそうだなw
307デフォルトの名無しさん:2007/12/22(土) 19:59:14
そういやOfTypeも全く無意味か
308デフォルトの名無しさん:2007/12/22(土) 20:03:32
list.ForEach(Console.WriteLine)みたいにメソッドを渡すとき以外は
素直にforeach文使ったほうが書きやすくて見やすい気がする
309デフォルトの名無しさん:2007/12/22(土) 20:07:09
foreachは素直に書くな
310デフォルトの名無しさん:2007/12/22(土) 21:05:44
C#3.0 はその辺の読みやすさの議論になりそうな、
大胆な言語仕様の変更だよなあ。俺は好きだけど。
311デフォルトの名無しさん:2007/12/22(土) 21:10:22
今まで静観してたけど >274 がバカなだけなんじゃね?
312デフォルトの名無しさん:2007/12/22(土) 21:12:37
ID無板で最も無意味なレスを見た
313デフォルトの名無しさん:2007/12/22(土) 21:29:29
>>311
いやいや、>>313が一番バカだろ
314デフォルトの名無しさん:2007/12/22(土) 21:30:02
意味はあると思うよ。
君の会社で隣でウンココード製造してる奴が見てるかもしれないじゃん。
まあ、そういう奴はたいてい他人から学んで「改心」したりしないけどさ。

俺ならやっぱり>>290みたいな(悪いけど)糞コードは書かないな。
標準的なプログラマならやっぱり普通こうじゃないの?
普段はあまり使わないけど行数ケチるためにあえてぶら下がり使うよ。
private void RemoveSelectedItems()
{
if (listBox1.SelectedItems.Count < 1) return;
List<object> removings = new List<object>();
foreach (object o in listBox1.SelectedItems) removings.Add(o);
foreach (object o in removings) listBox1.Items.Remove(o);
}
315311:2007/12/22(土) 21:43:14
>>313
わかりました。
316デフォルトの名無しさん:2007/12/22(土) 21:53:12
290のソースでいいじゃん。見やすいじゃん。駄目なの?
317270:2007/12/22(土) 21:53:25
>>314
いや、あの、それ、ネタだよな?

さっきのは冗長だったんで書き直すわ。
あわせて関数にしておこう。

private void RemoveSelectedItems()
{
 for (int i=list.Items.Count-1; i>=0; i--) {
  if (list.GetSelected(i)) list.Items.RemoveAt(i);
 }
}

さて、どっちが直感的で効率的だろう?
318デフォルトの名無しさん:2007/12/22(土) 22:01:45
>>317
え?w
319デフォルトの名無しさん:2007/12/22(土) 22:03:16
>>317
うんまあ、そういうコードをより直観的(どうでもいいが「直感」じゃないよ)
だと思う気持ちは分からないでもない。
俺も昔そういう時代があったからね。
でも直観的、あるいは可読的っていうのは行数とか記述の簡潔さとは関係ないよ。
もちろん全く無関係でもないけど。

そういうコードが可読性の観点から劣ることに
納得的な説明を与えるのってなかなか難しいんだけど、一言で言えばそういうのは
読むのに余分に「頭使う」でしょ。
keep it simple, stupidっていうよく言われる原則に反する。

もちろんコードがこれだけの分量なら多少余分に頭使おうとどうってことない。
でも全部のコードがこの調子で書かれてたらかなわんよ。
君自身がいってるように「積み重なる」から。
320デフォルトの名無しさん:2007/12/22(土) 22:04:30
まさか同じ言語同士で宗教戦争が繰り広げられるとは思わなかったぜ!
321デフォルトの名無しさん:2007/12/22(土) 22:05:29
みんな、コメント書くことすら許されない環境でコーディングしてんの?
322270:2007/12/22(土) 22:08:18
>>319
これで「頭使う」って言われてもなぁ。
めちゃめちゃシンプルで分かりやすいと思うけど、君にはわかりにくいんだね。
いちいち冗長なリスト作ってからじゃないとなにをしてるのか分からないんだね。
スマンかったよ。
323デフォルトの名無しさん:2007/12/22(土) 22:08:39
>>320
C#3.0 がリリースされて広まるにつれ、そのうち同一言語内でのバージョン違いによる
宗教論争が起こるよ。
ラムダ式やら何やらを前に、「スマートに書けて幸せ派」と「読めない&読みにくい派」と。
324デフォルトの名無しさん:2007/12/22(土) 22:10:14
だからお前らは頭いいよ一番バカなのは>>324
はい終了
325デフォルトの名無しさん:2007/12/22(土) 22:10:40
270はきっと趣味グラマなんだろうな、うんうんこれで納得
326デフォルトの名無しさん:2007/12/22(土) 22:12:41
>>321
よくある勘違いだね。
君はコードを検証的に(要はデバッグ)よむ場合を想定してないんだよ。

コメントなんか書いてあってもコードの正しさは保障されないだろw
つまりコメントに書いてあることが「わかって」もコードが読みにくかったら何の意味もないだろって。
327デフォルトの名無しさん:2007/12/22(土) 22:13:54
ラムダ式拡張メソッド超楽しいw
気をつけないと濫用しちゃいそう
328デフォルトの名無しさん:2007/12/22(土) 22:18:55
>>323
C++も通った道。
そっちはそっちでC++0xでまた同じ道を繰り返しそうな予感だが。
329デフォルトの名無しさん:2007/12/22(土) 22:22:27
>>326
コメントなんて、コードの正しさを保証するために書いてるわけじゃないだろw
検証的に読む場面で、何で逆でループ回してるのか一言コメントが残ってれば、
その考えの下でコードの正しさを検証できるだろ。今回の問題に限って言えば、
誰でもそれですぐに理解できるレベル。
330デフォルトの名無しさん:2007/12/22(土) 22:29:34
>>314 って、foreach 覚えたてで使ってみたくてしょうがないんじゃね?
で、普通にforで書けばいい場所でもなんでもforeach。

俺にもそんな時期がありました。
331デフォルトの名無しさん:2007/12/22(土) 22:31:51
>>330
要素へのアクセス順序が問題にならず、全ての要素を処理する場面では、
foreach を利用するのは正しい。
332デフォルトの名無しさん:2007/12/22(土) 23:20:38
例が単純すぎてどっちでもいい。
どっちのいってることもわからないでもないけど、
今回のようなものじゃどっちでもいいレベル。
ってかどっちがいいともいえない。

まあインデックスリストから逆順で消すなんてのは
定石といってもいい手法だから、このレベルなら毛嫌いするほどでもない。
このやり方だけで、こんなことやるやつは云々なんて判断できるやつはおかしい。
これだけじゃなんも判断できんよ。
333デフォルトの名無しさん:2007/12/22(土) 23:23:15
>>331
そりゃそうなんだけど、こういう場合みたいに素直にインデクスを使った方がいい場合とかね。

ところで>>314に聞きたいんだけど、もしこれがリストコントロールではなくて
万単位のアイテムを持つコレクションで、そのうちのある条件に当てはまるアイテムを
削除したい、なんて場合にもこんな書き方するの?
334デフォルトの名無しさん:2007/12/22(土) 23:25:20
>>333
頭悪いの?ちょっと上にケース次第っていっぱい書いてあるでしょ?
335デフォルトの名無しさん:2007/12/22(土) 23:29:38
>>333
パフォーマンスが優先されるべき場面でそれを優先することにはもちろん異論ないんだよ。
プログラミングっていうのは問題解決の手段なんだから。
ユーザビリティーが低下するんじゃ問題解決にならないよ。

ただ、揚げ足取りかもしれないが、万のオーダーじゃ10年前のPenIIのPCでも
問題にならない処理じゃないの?
336デフォルトの名無しさん:2007/12/23(日) 00:00:47
>>269-271
シンプルな質問と答えで完結したのに。

>>272
バカしね
337側近中の側近 ◆0351148456 :2007/12/23(日) 00:01:00
>>290
(っ´▽`)っ
CODE COMPLETEという名著がある。
君にお勧めするよ。
特に下巻。パフォーマンスの考え方について書かれてるよ。

>一つ一つは大した問題でなくともそいつが重なれば大きくなっていく。
この考え方が20世紀後半にスパゲッティコードが大量生産された原因だよ。

|▽`)っ っていうか、パフォーマンスをそんなに気にするならC#選ばないだろう・・・。
338側近中の側近 ◆0351148456 :2007/12/23(日) 00:22:14
(っ´▽`)っ
個人的な感想☆
>>290
(っ´▽`)っ
ど〜してインデックスを降順に読んでるの?
forって普通昇順でしょ?
まあ、消せば1個ずつずれてくから当然といりゃ当然だが
コメントがないと一瞬悩むよね。

>>314
(っ´▽`)っ
ど〜してremovingsなんて変数を用意してるの?
直接消せばいいじゃん。
何か裏があるんじゃないの?
って疑心暗鬼にとらわれてしまう。

(っ´▽`)っ やっぱりコメントだよね☆コメントが大事☆
339デフォルトの名無しさん:2007/12/23(日) 00:22:48
テキストボックスに複数行の文字列を入れると自然と一番下までスクロールされてしまいますが、これを無くすにはどうすればいいでしょう?

それとテキストボックスのフォントサイズを変えたいのですがtextBox1.Font.Size()あたりは見当違いですか?
340デフォルトの名無しさん:2007/12/23(日) 00:32:56
>>338
>ど〜してremovingsなんて変数を用意してるの?
>直接消せばいいじゃん。
>何か裏があるんじゃないの?
>って疑心暗鬼にとらわれてしまう
そんな奴はいないでしょw
というか、列挙してるコレクションを(間接的にであれ)操作したらマズいことぐらい
理解できない人がプログラマやってはダメだと思う。

というか、こういう訳のわからんHNやAA多用する幼稚な奴って大嫌い
喩えや誇張じゃなく本当に精神病んでると思う
341デフォルトの名無しさん:2007/12/23(日) 00:33:05
>>339
.Text += で連結するとスクロールしないみたいだけど。
.AppendText()するとスクロールするね。

フォントサイズ変えるにはサイズの違うフォントを新しく作って
Fontプロパティに設定する
342デフォルトの名無しさん:2007/12/23(日) 00:33:06
Fontは作り直せばいい
343デフォルトの名無しさん:2007/12/23(日) 00:36:05
初心者スレで馬鹿みたいな議論するやつもいるわ
馬鹿コテもでてくるわ
雪は降るわ
もう大変です
344デフォルトの名無しさん:2007/12/23(日) 00:36:35
>>341-342
ありがとうございます。
スクロールの方は改行とあわせて+=してひとまとめにしてみます

フォントは直接いじれるもんだと思ってました、さっそくしらべてみます
345デフォルトの名無しさん:2007/12/23(日) 00:41:22
>>343
関東はまだ雪になってない
ひさしぶりに雪見たいな
346デフォルトの名無しさん:2007/12/23(日) 00:50:56
入門書を読んでデリゲートについては理解した。
ただこれをどういうケースで使うのかが理解できていません。
どんな時に皆さんはデリゲートを使っているのでしょうか?
347側近中の側近 ◆0351148456 :2007/12/23(日) 00:52:19
>>340
(っ´▽`)っ
>そんな奴はいないでしょw
いや、むしろメンバ削除にいちいちforeach使う人のほうが希少なんじゃないか?
「列挙してるコレクションを(間接的にであれ)操作したらマズい」から、
forを使うとかは考えないの?
確かに、>>331のとおりforeachを使う目的というのはある。
しかし、使ったらいけない場合もある。それがこの場合なのでは?
もし、貴方のプロジェクトにC#文法に疎い人が入ってきて、
removingsが何のためにあるのかわからず削除しちゃったらどうするの?
(まあ、コンパイル時に警告出ると思うけど)
「列挙してるコレクションを(間接的にであれ)操作したらマズいことぐらい
理解できない人がプログラマやってはダメだと思う。」
と言って、そもそもメンバ削除にforeachを使ってしまった自分に責任はないとでも言うのか?
防御的プログラミングというのがある。これは将来、バグを生み出さないつくりとすること。
それができてないような気がする。
348側近中の側近 ◆0351148456 :2007/12/23(日) 00:54:49
>防御的プログラミングというのがある。これは将来、バグを生み出さないつくりとすること。
(っ´▽`)っ
防御的プログラミングの意味の補足。
将来ではなく、現在も含めバグを生み出さないつくりとすること。
つまり、簡単に言ってしまえば、性悪説を基につくるってことだよ。
349266:2007/12/23(日) 00:58:39
>>268
遅レスですが その方式で巧くいきました
ちょっとVBA癖が抜けてないみたいでした ありがとうございました
350デフォルトの名無しさん:2007/12/23(日) 01:05:48
>>346
Form デザイナ使わずに、Form に Button なり何なりを配置して、
クリックしたらメッセージか何か表示するようなアプリを自力で
書いてみればわかるよ!
351デフォルトの名無しさん:2007/12/23(日) 01:15:42
>>333
今回の問題では、インデックスを使って逆順で削除っていう指針がいいとは思う。
だけど、 >>314 の指針がそうじゃなくて、 >>331 の条件には合致してる以上、
「なんでもforeach」 っていう煽りはおかしいと言ったんだよ。
foreach が使いたくてこういう指針を取るほど >>314 はバカではないと
決めつけてかかったが、まさか、それを言っているのか?w
352側近中の側近 ◆0351148456 :2007/12/23(日) 01:24:05
(っ´▽`)っ
>>314には>>317と比べると大きな欠点が一つある。
削除対象検索と削除を分けていること。
これがどういう欠点を生むかわかるよね?
今は、削除対象検索の直後に削除をやってるから問題ない。
ただ、保守していく上で削除対象検索の後に何か処理を入れられたらどうする?
2,3行ではなく、数百行ものコードを入れられたら。たとえば、「削除前処理」みたいなもの。
最悪の場合、removingsの内容が書き加えられることも考えられる。
そうなれば削除対象検索の結果を削除するという当初の目的を達成できなくなる。
そうならなくても、削除対象検索と削除が大分離れ、わかりづらくなる。
353デフォルトの名無しさん:2007/12/23(日) 01:24:25
>>338
>forって普通昇順でしょ? 
downto が存在する世界から入った俺にとっては妙な違和感
354デフォルトの名無しさん:2007/12/23(日) 01:26:19
現在、スルー力が試されています

脱落者
>>353
355デフォルトの名無しさん:2007/12/23(日) 01:27:10
>>347
よくわからん発想だなあ。。
「いちいち(インデックスを使う)for」ならわかるが「いちいちforeach」ってなんなんだよ。

というか、言ってること矛盾してるよ。
列挙しているコレクションのアイテムを削除することがまずい、少なくとも
トリッキーであることを認めるのなら、「インデックスの列挙」だって同じことだと分かるだろ。

もちろん>>290程度のトリッキーさは「たいしたことはない」ことは俺も認めるが、
他にもっとシンプルな方法があるのならそちらの方法を採用するのが君のいう
予防的プログラミングでもあるじゃないの?
356側近中の側近 ◆0351148456 :2007/12/23(日) 01:28:11
(っ´▽`)っ
ちなみに(っ´▽`)っは中立だからな。
コンストラクションにはいろいろな考え方がある。
(っ´▽`)っは、とっても素直な良い子だから感じたことを言ってるまでだよ☆
どっちが正しいとかはないと思う。
>>352だって、逆手に取れば、削除前処理を入れられるわけだし。
ただ、諸刃の剣だね。
357デフォルトの名無しさん:2007/12/23(日) 01:31:13
>>352
意味わからん。何がいいたいんだこの幼稚君は
358デフォルトの名無しさん:2007/12/23(日) 01:39:25
踊り子にお触りにならないようお願いします
359デフォルトの名無しさん:2007/12/23(日) 01:41:58
>>358
あぶねー、5行も投下するところだった。
360側近中の側近 ◆0351148456 :2007/12/23(日) 01:46:58
>>355
(っ´▽`)っ
>インデックスの列挙
どっから出てきた?
>>290は列挙じゃないと思うんだけど。
コレクションに対する正当なアクセスでしょ。

>>>290程度のトリッキー
>>314も十分トリッキーだと思いますが。
どうしてそこまでforeachにこだわる?
361側近中の側近 ◆0351148456 :2007/12/23(日) 01:53:12
(っ´▽`)っ
>>314の「まあ、そういう奴はたいてい他人から学んで「改心」したりしないけどさ。」
って、>>314自身だったりして・・・
批判されると>>340みたいに
「喩えや誇張じゃなく本当に精神病んでると思う」んでしょ?
362デフォルトの名無しさん:2007/12/23(日) 02:04:12
>>360
foreachになんかこだわってないんだよ。
シンプルさにこだわってるの。

というか、「手続き抽象」ってことの意味が分かってない人間が
こんなにいるとは思ってもみなかったよ。
小学校のころ算数ができなかった子がプログラマになってるのかな。

抽象的な話が苦手なら(計算問題を買い物の問題に置き換えるように)具体例に置きかえればいい。

例えば住所録から今年は年賀状を送らない人間を削除する場合、
どういう手続きでやるか考えてみれば?


>>361
いや、別に俺が批判されてもされなくても君は間違いなくキチガイだよ。

この手合いは例外なく「俺はキチガイのふりをしているだけ」だと思ってるようだが、
そんなくだらない動機を持つこと自体が既に幾分かかなりか狂ってる、
という事実に気づかないみたいだね。
363側近中の側近 ◆0351148456 :2007/12/23(日) 02:04:21
(っ´▽`)っ
しかも、>>290の悪い点も「具体的に」上げずに、
アルゴリズムとか何とか言って、ただ
「人間として終わってるとまでは言わないが、プログラマとしては始まってすらいないな。」
「俺ならやっぱり>>290みたいな(悪いけど)糞コードは書かないな。」
って言ってる時点で「他人から学んで「改心」したりしない」んでしょうな。

はっきり言って、プロジェクト運営上障害となる人物です。





(っ´▽`)っ ・・・もしや釣り?
364デフォルトの名無しさん:2007/12/23(日) 02:06:36
>というか、列挙してるコレクションを(間接的にであれ)操作したらマズいことぐらい
>理解できない人がプログラマやってはダメだと思う。

だから逆順で解決してるか別で取り出して操作することで解決してるか
解法の違いなだけだろ。
何度も言うがこの程度の処理じゃどっちが怪しいが判断つかんわ。

まあ俺はどっちかって言うと、ごく簡単で定石的なやり方ですむのに
余計な処理を増やすのは好みじゃないけどな。
逆順で処理とかじゃなくてもっとトリッキーなことをするなら意見は変わってくるけど。
365デフォルトの名無しさん:2007/12/23(日) 02:09:07
スレの有効活用

↓こちらでどうぞ
C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/
366デフォルトの名無しさん:2007/12/23(日) 02:09:57
>例えば住所録から今年は年賀状を送らない人間を削除する場合、
>どういう手続きでやるか考えてみれば?

何が言いたいのかわからんぞ、あんまり変な方に持ってかないほうがいいと思うがな。
クイックソートなんて書くやつは馬鹿だ、とは思わんだろ?
367側近中の側近 ◆0351148456 :2007/12/23(日) 02:11:27
>>362
(っ´▽`)っ
だから、>>314はそれほどシンプルじゃないって。

>例えば住所録から今年は年賀状を送らない人間を削除する場合、
>どういう手続きでやるか考えてみれば?
少なくとも>>314みたいに削除対象検索と削除を別々には行わないと思います☆
いちいち人の名前またはページ番号をどっかに記録しておいて(削除対象検索)、
全部見終わってから、もう一回探して削除したりはしないと思います。
368デフォルトの名無しさん:2007/12/23(日) 02:13:45
上げ足とりたいだけかほんとに応用力ないのか
369デフォルトの名無しさん:2007/12/23(日) 02:13:52
>>366
じゃあ補足。
普通はまず「削除する人のリスト」を紙に書き出すでしょ。
抽象的に言えば「削除対象のリストアップ」。
つまりそれが人の思考に親和的な方法だってこと。
370側近中の側近 ◆0351148456 :2007/12/23(日) 02:16:45
(っ´▽`)っ
っていうか、この人は現場の人間じゃないでしょ?
現場にこんな自己中心的、他者排除の考えの人がいたら
他のメンバみなキレるでしょ。
だって、「君は間違いなくキチガイ」って言うんだからな。

・・・いや、それがまかり通るのがSE業界だね☆

>>369
(っ´▽`)っ
・・・本当にそんなやり方するの?非効率じゃないか?
紙に書き出して、その後消すかどうか再考するなら別だよ?
その再考こそ前述の「削除前処理」なんだが。
371デフォルトの名無しさん:2007/12/23(日) 02:22:01
確かに喩えがまずかったねすまん。
「削除対象のリストアップ」という風に抽象化することが
人間の思考に親和的である点は間違ってないと思うけど。
372デフォルトの名無しさん:2007/12/23(日) 02:24:06
削除対象は選択されてるんだぜ。
少なくともなんらかでマークされてる状態だ。
だったらそのまま順番に見ていってマークされてたら抜き出すのが人間の思考だ。

プログラムではそう単純な思ったとおりの処理ができないから、
それを解決するために、逆順とかいったんコレクションに取り出すとかするわけだ。

だから、現実の人間の思考とか、そういう方向で説明しようとすると
おかしくなるんだよ。
少なくとも普遍的な説明には向かない。
だからそういう変なやり方で説得しようとするのはやめたほうがいいって言ってる。
373側近中の側近 ◆0351148456 :2007/12/23(日) 02:28:07
(っ´▽`)っ
>>372
そうだね☆こんなの昔なんかの本で見た。

4つの長さの違う棒がある。
人間にとって、長いほうから順番に並べるのはすごく容易だ。
しかし、コンピュータにその処理をさせるとなると難しいと。
それこそソート処理の難しさなんですが。

(っ´▽`)っ
しおんの王始まったので止め☆
374デフォルトの名無しさん:2007/12/23(日) 02:29:18
踊り子も触るやつもみんな死ね
375デフォルトの名無しさん:2007/12/23(日) 02:32:05
この流れは酷いwwww他所でやれよwwwww
376デフォルトの名無しさん:2007/12/23(日) 02:36:03
WinFomsでアイテムにインデクサでアクセスすると
非常に効率が悪かったりすることが多いから、
出来るだけforeachを使うようにしているけど、
この場合はそういうワケじゃないんだ。
377デフォルトの名無しさん:2007/12/23(日) 02:38:53
そうともいかないねえ、多分。
アイテムの直削除は効率いいのかな?
実際どういうやり方が効率いいんだろ?
378デフォルトの名無しさん:2007/12/23(日) 05:27:03
RemoveだとListBoxの
AAA
BBB
AAA
というデータの3件目に対してRemove("AAA")とやったら1件目が消えてしまう問題がある。
RemoveRangeとか範囲で消せるメソッドがない以上RemoveAtがいいんじゃない。
複数件追加や削除するならBeginUpdate/EndUpdateを入れとくほうがより大事だと思う。

>>376
.NETの1.0か1.1のListBoxの場合はforeachが圧倒的に速かった記憶があるが今は差はないなぁ。
379デフォルトの名無しさん:2007/12/23(日) 06:41:39
1.1から2.0へ移植しているのですが、2.0のContextMenuStripにおいて、
1.1のContextMenuにあるOnPopupに相当するメソッドはどれですか?
380デフォルトの名無しさん:2007/12/23(日) 07:01:15
>>379
Opening/OnOpeningあたりかな
381デフォルトの名無しさん:2007/12/23(日) 07:10:52
>>380
ありがとうございます。
うごきました。
382デフォルトの名無しさん:2007/12/23(日) 07:17:31
なんか揉めてたみたいだけど、

正直初心者の俺には理解できなかったので
話に参加できなかったのが悔しかったです
383デフォルトの名無しさん:2007/12/23(日) 07:28:07
>>382
俺はオッパイ揉みめてなくて悔しい
384デフォルトの名無しさん:2007/12/23(日) 07:31:22
もみめてなくて?
385デフォルトの名無しさん:2007/12/23(日) 07:33:01
>>384
良く悔しさが現れてるじゃないかw
386デフォルトの名無しさん:2007/12/23(日) 08:05:10
Dim オッパイ揉めなくて悔しいって事じゃね? As Integer
387デフォルトの名無しさん:2007/12/23(日) 08:12:33
黙れVB厨
388デフォルトの名無しさん:2007/12/23(日) 08:13:25
ご、ごめんなたい!:(;゙゚'ω゚'):
389デフォルトの名無しさん:2007/12/23(日) 08:35:18
はるか昔にN88BASICから入った俺には、
forの逆順ループぐらいで「トリッキー」なんて言っちゃうことに時代を感じた。
390側近中の側近 ◆0351148456 :2007/12/23(日) 08:58:33
>>388
(っ´▽`)っ かわいいっ♥(抱
(っ´▽:(;゙゚'ω゚'):
391デフォルトの名無しさん:2007/12/23(日) 09:27:06
>>389
そりゃ悪いけど君が時代ボケしてるだけw
入った時代をいうならこっちはN-BASICすらなかった時代からやってるっつーに。

人の能力は変わってないのに時間あたりに読んで理解する必要があるコードの量が
何倍になってると思ってるんだよ。
要は人間様の貴重な時間を浪費させるようなコード書くな馬鹿、って話だよ。
先進国ではマンパワーが一番高価だってことがわかってんのかね。
392デフォルトの名無しさん:2007/12/23(日) 09:31:10
>>391
むしろコードの量を増やしておいてそれを言うか w
だから、逆順ループで削除なんて考えるまでも無く一瞬で理解できる定石だっつーの。

多分、凝り固まった変な原理主義者の先輩から教えられて来たんだろうな。
うちの会社にもそういう奴いたわ。
393デフォルトの名無しさん:2007/12/23(日) 09:35:24
OfTypeはない
Castでいい。
394デフォルトの名無しさん:2007/12/23(日) 09:36:58
forで一個一個見るやつはパフォーマンスが大事といいながら遅いアルゴリズムを
選択してるから矛盾してるだろ
SelectedIndexesのケツからRemoveAtでいいじゃない
395デフォルトの名無しさん:2007/12/23(日) 09:38:02
>>394
SelectedIndexes のケツから見るにはどうするのかな?
396デフォルトの名無しさん:2007/12/23(日) 09:41:43
SelectedIndexesってソートされてねえの?
397デフォルトの名無しさん:2007/12/23(日) 09:44:43
>>394
そこはそもそも「パフォーマンスが大事」という前提が間違ってるから問題ない。
むしろ指摘する必要があるのは、考え方の不自然さだよ。

なぜ(削除すべきアイテムは処理前に既に確定してるのに)全検索する必要があるのか、という。
もっとも、それも恐らく(SelectedIndexesのクローンを作ってソートする手順を削って)行数ケチってる
(そんなことして他人に言い負けたくないのか知らんが)だけだから、指摘する意味は薄いかもしれん。
398デフォルトの名無しさん:2007/12/23(日) 09:51:13
>>396
ソートされてる。昇順でな。
だから、ケツから見るにはいずれにしても逆から見なきゃいけないだろ?

>>397
削れる手順は削るべきもんだろう?
ソートするまでもなくインデクスは昇順に並んでいるのは分かってるのだから、
わざわざそれを取り出してリストに入れてソートして、という余計な手順を
入れるほうがよほど不自然だろうに。
「言い負けたくない」のはおまいさんだろうに。

つうかね、
foreach (object o in listBox1.SelectedItems) removings.Add(o);
って実質的に全検索じゃないの? w
399デフォルトの名無しさん:2007/12/23(日) 09:58:58
>>398
頭悪いなあ。。
だからパフォーマンスの観点から、あるいは「CPUの視点から」自然不自然を言っているのではない。

あくまで人間の視点で、その考え方が自然かどうかを問題にしているんだよ。
400デフォルトの名無しさん:2007/12/23(日) 09:59:33
おまいらまだやってんのか w

>>296
>>300
>>314
>>317

このうちどれがベストか投票っつーのはどうよ?
個人的には>>296のぐちゃぐちゃっぷりが好きだ w
401デフォルトの名無しさん:2007/12/23(日) 10:04:56
Listつくって入れるのは人間の視点から見て実に不自然だ
402側近中の側近 ◆0351148456 :2007/12/23(日) 10:06:42
>>399
(っ´▽`)っ
>>314は一度他のプロジェクトが作ったソースを読んで
自分のコーディング手法について考えてみたほうがいい。
このままだと将来誰もついてこなくなるよ。
他の人の考えを一切合切拒絶する人っぽいから。
403デフォルトの名無しさん:2007/12/23(日) 10:08:00
>>399
それはそれを見る人間の頭の出来の問題だぞ。
ソートされてるリストをケツから削除する、ということは、
それを理解してる人間から見たら全く以って自然だろ。
おまえさんが必死で言うほど、不自然だと思ってる奴がどれぐらいいる?
自然か不自然かという尺度の問題を言ってるなら、そんなもん
人によって感じ方は違うだろう。
おまいさんの感じ方が万人に通用すると本気で思ってるのか?
404側近中の側近 ◆0351148456 :2007/12/23(日) 10:09:21
>>403
>ソートされてるリストをケツから削除する、ということは、
>それを理解してる人間から見たら全く以って自然だろ。
(っ´▽`)っは自然だと思う。
405デフォルトの名無しさん:2007/12/23(日) 10:10:50
ForEach使うためにToListするのも実に不自然だ
406デフォルトの名無しさん:2007/12/23(日) 10:20:01
>>405
今話てんのは、ソコじゃないだろw
407デフォルトの名無しさん:2007/12/23(日) 10:49:15
ハードウェアの進化に従って、人間の思考に沿うようにプログラミング言語は
進化してきたし、そのようにプログラミングすべきってのはわかる。一般論として。

ただ、人間の思考に沿わない部分をすり合わせするのがプログラマの存在意義だ。
彼らの大部分が一瞬で理解可能で効率がよい手法であれば、普通とかトリッキーとか
何でそんな議論になるのかわからん。
408デフォルトの名無しさん:2007/12/23(日) 10:54:13
int n = 0;
while (n < Items.Count)
{
if (Items[n].Selected)
{
Items.RemoveAt(n);
}
else
{
++n;
}
}
409デフォルトの名無しさん:2007/12/23(日) 11:45:57
>>407
何度も言うけど絶対評価でダメとまでは言ってない。
確かに大部分の人は290のようはコードでも理解して意図を読み取るのに
そんなに時間は掛からないと俺も思うよ。俺自身そうだし。

ただ相対評価としてダメって言ってるだけだね。
もっと処理を抽象化した(つまり「何をしてるのか」を人語に翻訳しやすい)
分かりやすい書き方があるだろう、ってね。

それとこれはちょっと言い掛かりっぽいかなとも思ったから全く言ってないけど、
>>290のようなコードは「リストからアイテムを削除した場合、それより後ろのアイテムが前に詰められるだけ」
という前提に暗黙的に立っているわけだけど、これもどうなの?
まあこれはやっぱり言い掛かりかもしれん……。
410デフォルトの名無しさん:2007/12/23(日) 11:51:38
初心者なおれとしては使用メソッドの少ない290は見やすくていいな
仕事で使うときでもみんながC#マスターとは限らないんじゃないか?
411デフォルトの名無しさん:2007/12/23(日) 11:53:49
人工知能を持った美少女を作ろうと思うんだけど
C#でできますか?
412デフォルトの名無しさん:2007/12/23(日) 11:56:12
他の言語でできるならC#でもできる
413デフォルトの名無しさん:2007/12/23(日) 11:57:45
プロジェクトのメンバーで女性を残業させてそのまま製造すればおk
414デフォルトの名無しさん:2007/12/23(日) 12:11:58
>>409
Sortedプロパティを設定してない限り順序は保証される。
仮に処理が完全に終わるまで前につまらない場合でも
カウンタを1ずつ減らしているので問題はない。
WPFのListBoxが実はそういう動きをしている。
415デフォルトの名無しさん:2007/12/23(日) 12:18:03
>>409
> 分かりやすい書き方
これが「わかりにくい」とする基準がどうしてもよくわからんわ。
一体どの程度の知能程度を対象としてるんだ?
正直、これがわかりにくいと思うような人間がプログラマやるのは向いてないと思うぞ。

周りのプログラマに両方のソース見せて聞いてみな。
逆ループがわかりにくいなんて言ったら笑われると思うけど。

なんでもかんでも抽象化してわかりやすい書き方をするって言う奴は、
ロジックをちゃんと抽象化できずに泥臭く書くことしかできないことの
言い訳にしてるんだわ。
むしろ過度な抽象化によって煩雑でロジックの本質からかけ離れたことを
していることに気づいてない。
物事には、ホドホドってものがあるんだよ。
416デフォルトの名無しさん:2007/12/23(日) 12:24:26
まったく呑気なもんだね
誕生日だってのにひっぱり回されて仕事したり
つまんないおっさんに面会したり
あほな群衆に手を振らなくちゃならない御方だっているのに

誕生日くらいゆっくりさせてやれよ
417デフォルトの名無しさん:2007/12/23(日) 12:26:03
>>409
>「リストからアイテムを削除した場合、それより後ろのアイテムが前に詰められるだけ」
を前提にするならこういう手もある。
int i;
while ((i = listBox1.SelectedIndex) >= 0) listBox1.Items.RemoveAt(i);

418デフォルトの名無しさん:2007/12/23(日) 12:26:39
>>414
削除してもソート順は変化しないからSortedプロパティは関係なくね?
419デフォルトの名無しさん:2007/12/23(日) 12:35:08
>>418
うみゅ、関係ないね。
420デフォルトの名無しさん:2007/12/23(日) 12:38:15
匿名メソッドのために生成される、デリゲートの呼び出し対象となるメソッドは
同じ場所で定義された匿名メソッドであれば常に同じと考えていいのでしょうか
クラスが生成された場合にターゲットのインスタンスが異なることがあるのはわかりますが
421デフォルトの名無しさん:2007/12/23(日) 12:43:47
>>420
同じとみなしてよい。Equalsや==はオーバーライドされてて真となる。
心配してるのはしたのケースでしょ?
hoge.Event += new MyDelegate(Func);
hoge.Event -= new MyDelegate(Func);
422デフォルトの名無しさん:2007/12/23(日) 12:44:42
>>415
>なんでもかんでも抽象化してわかりやすい書き方をするって言う奴は、
>ロジックをちゃんと抽象化できずに泥臭く書くことしかできないことの
>言い訳にしてるんだわ。
こういうのって「日本語でおk」って言うんじゃないの?

というか、「ロジックをちゃんと抽象化できずに泥臭く書く」というのは
>>290のようなコードのことをいう。
そんなことはない、というのなら>>290のコードを人語に翻訳してみな。

だから、あくまで相対的にではるが問題があると言ってるんだよ。
423デフォルトの名無しさん:2007/12/23(日) 12:49:09
>>422
インデクスが変化しないようにするため、リストの後ろから選択されている
アイテムを削除する。

これ以上、どうややこしく翻訳しろと?
424デフォルトの名無しさん:2007/12/23(日) 12:53:27
>>423
『「削除リスト」にリストアップされたアイテムを削除』の方がよりカンタンだ、
と言ってるだけだよ。
425デフォルトの名無しさん:2007/12/23(日) 12:53:34
>>420
む、ごめん。匿名メソッドの話だった。>>421は間違い。
staticでない以上、例えメンバや外のスコープの変数を参照してなくても
インスタンスが違えば別のデリゲートになるはず。
426デフォルトの名無しさん:2007/12/23(日) 13:00:00
>>424
重要なところをはしょって無理やり簡単に言おうと思えばなんとでもなるわ w
より正確に書くなら、
「選択リストから削除リストを作り、削除リストを元にリストからアイテムを削除」
だろ。「人語に翻訳」なんて曖昧な基準で決め付けるなよ。

ここまでの流れで、お前以外誰一人として>>290が分かりにくいなんて言ってるのは
いないって事実が、なによりよく物語ってるわな。

要するに、おまいさんは自分の考えが完全に正しくて、他人がどうしようと全部それは
ダメなんだろ?
正直、こういうやつが自分のチームにいたらタマラんと思うわ。
427420:2007/12/23(日) 13:03:31
すみません。説明がおかしかったですね。
同じ場所で定義された匿名メソッドに対して
2つ以上のメソッドが生成されることはありえないのかという意味です。
428デフォルトの名無しさん:2007/12/23(日) 13:19:09
>>426
頭悪いなあ。。
君のような思考は一般に「ダブルスターンダード」と呼ばれる。
早い話が>>423も「重要なところをはしょって無理やり簡単に言」っているのが分からないの?
429デフォルトの名無しさん:2007/12/23(日) 13:20:54
430デフォルトの名無しさん:2007/12/23(日) 13:25:08
Removeを使うと同じ値が二つあれば破綻するから誤ったアルゴリズムだ
431デフォルトの名無しさん:2007/12/23(日) 13:27:49
俺だったらRemoveAtにIEnumerable<int>をとるオーバーロードをExtension Methodで作って呼び出すね
これで間違いようがない
432デフォルトの名無しさん:2007/12/23(日) 13:27:54
>>428
お前がそれを言うか w
では、そのはしょってる重要なところを言ってみな。

ちなみに、あんたの解法では、もし同じアイテムが複数入っていたらうまく動かないって
ことは理解できてるよな?
つまり細かい前提事項まで全部書き出せばいくらでも複雑に言うことができるし、
簡単に言おうと思えばどちらも「選択されたアイテムを削除する」に収斂するんだよ。

要するに、おまえさんの言ってる「わかりにくい」とか「わかりやすい」の基準が
単におまえさんの脳内基準でしかなく、それがたまたまちょっと他人とはズレてる
ってことなんだよ。
他人の頭が悪いと思う前に、それが理解できない自分の頭の程度を冷静に
考えた方がいいと思うよ。
433デフォルトの名無しさん:2007/12/23(日) 13:34:22
>>430
おーっと、そもそもRemove使うのは妥当じゃないっていう意見が出てまいりました。
こりゃ、さらに冗長なコードが生成されるな。
434デフォルトの名無しさん:2007/12/23(日) 13:36:01
「ダブルスターンダード」とは誰も呼ばんわなぁ
435デフォルトの名無しさん:2007/12/23(日) 13:36:15
もういいんじゃねえかそろそろ
踊り子さんもがんばったと思うけどもう飽きてきたよ
436デフォルトの名無しさん:2007/12/23(日) 13:38:54
>>434
どの主張とどの主張がダブルスタンダードなのか、簡潔に指摘してほしいところだよなw
437デフォルトの名無しさん:2007/12/23(日) 13:42:51
438側近中の側近 ◆0351148456 :2007/12/23(日) 13:43:19
(っ;д;)っ
私のために喧嘩しないで☆
439デフォルトの名無しさん:2007/12/23(日) 13:43:36
>>314

this.listBox1.SelectionMode = SelectionMode.MultiExtended;
for (int i = 0; i < 100; ++i)
{
  this.listBox1.Items.Add(odd);
  this.listBox1.Items.Add(even);
}

こういうコードで3番目のOddを選んで消すと1番目のOddが消えるw
440側近中の側近 ◆0351148456 :2007/12/23(日) 13:45:05
>>428
(っ´▽`)っ
いい加減に「頭悪いなあ。」とか言うのやめたほうがいいよ。
たとえどんなに正しいことを言ってても信頼性がなくなる。
441デフォルトの名無しさん:2007/12/23(日) 13:45:06
>>438
お前電話番号書いてあるから削除対称な
442439:2007/12/23(日) 13:46:01
すまん2行ほど抜けてた。

this.listBox1.SelectionMode = SelectionMode.MultiExtended;
string odd = "Odd";
string even = "Even";
for (int i = 0; i < 100; ++i)
{
  this.listBox1.Items.Add(odd);
  this.listBox1.Items.Add(even);
}
443側近中の側近 ◆0351148456 :2007/12/23(日) 13:47:03
(っ´▽`)っ
ダブルスタンダードが悪いことなのかな?
コンストラクションは適材適所というか柔軟に考えないとダメだよ。
もちろん標準化も必要だけどね。
444側近中の側近 ◆0351148456 :2007/12/23(日) 13:48:22
>>441
(っ´▽`)っ↑は電話番号じゃないもん☆
(っ´▽`)っのシリアルナンバーだもん
445439:2007/12/23(日) 13:53:08
というかこれで十分だな。
連投スマソ。

this.listBox1.SelectionMode = SelectionMode.MultiExtended;
for (int i = 0; i < 100; ++i)
{
this.listBox1.Items.Add("Odd");
this.listBox1.Items.Add("Even");
}
446デフォルトの名無しさん:2007/12/23(日) 13:59:28
>>439
確かにその問題はあるね。

リストボックスに重複するアイテムが存在してかつアイテムの順序が意味を持つ場合は
>>314は使えない。
それは事実だから認める。
447デフォルトの名無しさん:2007/12/23(日) 14:07:04
>>427
クロージャが絡むとありえる。
448デフォルトの名無しさん:2007/12/23(日) 14:08:22
しかし>>279はインデックス指定の何が気に入らなかったんだろうな。

>突っ込みどころはいろいろあるんだけど一つだけ。
>たぶんVB上がりの人とかじゃないかと推測するけど、そもそも先頭からとかケツからとか
>いう話はコレクション内のインデックスを指定して削除することを前提としてるんだと思うが、
>そもそもそこからしてちょっと変なんだよ。

>君の言葉を返せば「頭が固い」。
>俺流に言えば「馬鹿の一つ覚え」。
449デフォルトの名無しさん:2007/12/23(日) 14:11:20
重複してたらインデックス指定しなきゃ消せんしね
450デフォルトの名無しさん:2007/12/23(日) 14:13:19
>>446
>リストボックスに重複するアイテムが存在してかつアイテムの順序が意味を持つ場合は

リストボックスに重複するアイテムが存在するだけで十分使えないと思うなぁ。
アイテムの順序が意味を持たなくても>>314のコードの実行後は
セレクションがぐちゃぐちゃになるというひどいユーザビリティー。
451側近中の側近 ◆0351148456 :2007/12/23(日) 14:22:53
(っ´▽`)っ
では、陪審員の皆さん。>>314に対する判決を☆
452デフォルトの名無しさん:2007/12/23(日) 14:28:59
どっちでもいい
453デフォルトの名無しさん:2007/12/23(日) 14:29:00
>>451
その書き込みで確証が持てた。
お前って議論を第三者的な立場で眺めて、たまに一般論を持ち出してきて、
でもだから議論の進展に役立ってるわけでもなく、要するに的外れで、
ほんとどうしようもねーなw
454デフォルトの名無しさん:2007/12/23(日) 14:30:43
>>446
で、その問題を解決するには、どういうコードにするべきかね?
455デフォルトの名無しさん:2007/12/23(日) 14:32:12
>>417のコードが一番シンプルにみえるのだがなんか問題あるの?
456デフォルトの名無しさん:2007/12/23(日) 14:33:09
>>455
ケツから消すよりつめる処理が余計に必要になる
457デフォルトの名無しさん:2007/12/23(日) 14:33:21
>>455
シンプルなのはダメなんだってさ。
アホでもわかるように懇切丁寧にグダグタとしつこく書かないと。
458側近中の側近 ◆0351148456 :2007/12/23(日) 14:33:21
>>453
(っ´▽`)っ
被告人は発言を慎むように。
もう誰も貴方の意見に耳を傾けようとは思わんよ。
459デフォルトの名無しさん:2007/12/23(日) 14:34:06
IDでないとよくわからん
460側近中の側近 ◆0351148456 :2007/12/23(日) 14:36:05
>>453
(っ´▽`)っ
ついでに言っておこう。

頭悪いなあ。
461側近中の側近 ◆0351148456 :2007/12/23(日) 14:37:16
(っ´▽`)っ
知らないならレスしないでください
に続く名言だね
462デフォルトの名無しさん:2007/12/23(日) 14:37:34
まんこまんこ〜
463デフォルトの名無しさん:2007/12/23(日) 14:38:22
>>446
なあなあ、>>432でも重複アイテムについて指摘してるのに、
>>339が出るまで理解できなかったの?

で、その問題を解決するにはどう書けばいいのかコードを書いてくれよ。
ちゃんと人間にわかりやすい書き方で、逆ループを使わず、 RemoveAt() も使わずにさ。
ダブルスタンダードもなしでな。
464463:2007/12/23(日) 14:39:03
間違えた。>>339じゃなくて>>439だった。
465デフォルトの名無しさん:2007/12/23(日) 14:39:31
うめ
466デフォルトの名無しさん:2007/12/23(日) 14:39:50
>>455
数バイトほどmemmov相当の処理が増える程度。
ListBoxの内部でやってる処理で気にする奴は馬鹿。
問題は1件ごとに詰める処理をやる前提であること、
WPFで使えなかったのよ(泣
467側近中の側近 ◆0351148456 :2007/12/23(日) 14:44:32
(っ´▽`)っ
>お前って議論を第三者的な立場で眺めて、たまに一般論を持ち出してきて、
>でもだから議論の進展に役立ってるわけでもなく、要するに的外れで、
っていうか、今日の未明からずっと貴方の指摘に対して
きちんとレスをしてきてるわけだけどね。
しかも、コテまでつけてだ。年賀状の見当違いな質問に対してもだ。
これで役に立たないとか的外れとか言ってる時点で
貴方は終わってるよ。
468デフォルトの名無しさん:2007/12/23(日) 14:47:22
ふぅようやく追いついた
野次馬なんで色々言わず一言だけ

>>314 レベルが低いのは君なんだから精進しなさいね
469デフォルトの名無しさん:2007/12/23(日) 14:57:15
>>466
そうなのかよ
馬鹿で悪かったなちくしょう
470デフォルトの名無しさん:2007/12/23(日) 14:58:56
>>467
あのね、俺 >>453 なんだけど、君が言ってる「被告人」とか「年賀状の〜」とか、
それこそ見当違いなんだけど。君のそのコテを名乗るレスの中では、
俺の書き込みに対してレスをいただいてないw

だから、旗色が悪くなった「被告人」が君に八つ当たりしているんじゃないよ。
「被告人」の名誉のために言っておくけどw
471デフォルトの名無しさん:2007/12/23(日) 15:03:49
>>463
俺ならこう書くと思う。
private void RemoveSelectedItems2()
{
while (listBox1.SelectedItems.Count > 0)
{
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
}

>>290のようなコードはまず書かないねやっぱり。
472デフォルトの名無しさん:2007/12/23(日) 15:06:56
>>471
あのねぇ、それは単に好みの問題でどっちがあってるとか間違ってるってレベルじゃないよ。

で、インデクス指定はダメっつってたのはどーなったのかな?
それこそダブルスタンダードじゃないの?
473デフォルトの名無しさん:2007/12/23(日) 15:10:03
>>471
そうは言ってないよ。
削除する際に、コレクションのインデックスを指定して削除することを
(自明の)前提とするのはおかしい、と言っただけ。
474デフォルトの名無しさん:2007/12/23(日) 15:15:05
>>473
アイテムが重複していないことを自明の前提としていた奴が言うことじゃないな。
475デフォルトの名無しさん:2007/12/23(日) 15:15:27
>>473
C# で、かつ、対象となるコレクションの性質が限定されてる今回のケースで、
そういう話が出てくる意味がわからん。
476デフォルトの名無しさん:2007/12/23(日) 15:17:20
>>473
リストボックスの選択はインデックスに対して行うものであって
オブジェクトに対して行うわけじゃないんだから
この場合は前提にしていいんじゃないかな。

事前にリストアップするにしても、対象はオブジェクトのコレクションじゃなくて
インデックスのコレクションであるべき。

>>279が質問をよく読まずに過度に一般化した話をひっさげて突撃してきた、
という話に見える。
477デフォルトの名無しさん:2007/12/23(日) 15:17:24
コピーしなきゃこんなにシンプルに書けるのにわざわざコピーして複雑にしたことに対する弁明は無いの?
478デフォルトの名無しさん:2007/12/23(日) 15:20:18
ListBox.ObjectCollection からアイテムを削除した時に順序が狂わないってのは
今までずっと自明の前提だと思っていたんだが、それって間違ってるのか?

そうじゃないと、普通に一個削除する時にもいちいちリストの順序が変わっちまうことを
心配しなきゃならんのだが。
479デフォルトの名無しさん:2007/12/23(日) 15:21:59
一般解を示そうとして、かえって自分の方法のほうが条件が限定的になってたり、お茶目だよね。
480デフォルトの名無しさん:2007/12/23(日) 15:32:30
>>471
普通の人は >>314 のようなコードは「絶対」に書かないねやっぱり。
>>471
好き。漏れでも一瞬で理解出来た。メモっとく。
private void RemoveSelectedItems2()
{
while (listBox1.SelectedItems.Count > 0) //選択済みアイテムが無くなるまで
{
listBox1.Items.RemoveAt(listBox1.SelectedIndex); //消しまくる
}
}
482側近中の側近 ◆0351148456 :2007/12/23(日) 15:48:56
>>470
(っ´▽`)っ
とうとう自演までするようになったか・・・。
483側近中の側近 ◆0351148456 :2007/12/23(日) 15:52:34
>>470
(っ´▽`)っ
wをつけて別人ぽく見せてるけどバレバレなんだよ。
頭悪いなあ。
484デフォルトの名無しさん:2007/12/23(日) 15:53:18
質問させてください

C#でWebBrowserコンポーネントをフォームに配置して使っていたんですが、下記のコードを何度もTimerなんかで実行すると
タスクマネージャでどんどんメモリリークしていくのが確認できました。
Timerで呼んでいるのはこの一行だけです。

webBrowser1.Navigate("http://www.google.co.jp");

この部分をコメントアウトすると確実にリークは止まるので絶対にここが悪いんですけど
どのような対策を施せば解決するか教えてください。

//コメント//
webBrowser1をDispose()して毎回new WebBrowser()ってやってもやっぱりリークしました。
強制GCも併用してましたが、やっぱりだめでした。
485デフォルトの名無しさん:2007/12/23(日) 15:53:23
>>471は、実力はあるのに、性格が災いして周りがイエスマンばっかりになっちまうタイプな気がするなぁ。
あそこまで罵倒されるリスクを冒してまで部下も意見しようとは思わないだろうし。

言わなかったら言わなかったで、後から、
「なんで気付いたときに報告しなかったんだ!」って怒鳴られるんだろうけど。
486デフォルトの名無しさん:2007/12/23(日) 15:58:34
WebBrowser・・・Timer・・・
あいつか
487デフォルトの名無しさん:2007/12/23(日) 16:01:17
リストボックスについてなんですが、大量に比較する方法で困っています。

ファイル名なんかをリストボックスAとBに読み込み、その二つを比較してリストAにはあるのにリストBにはない、というものを見つけ出したいです。
この場合配列に格納してしまい、わざわざリストボックスを用意する必要はないと思います。
なので一応A配列とB配列にそれぞれ全て格納した上でリストボックスに一応表示させています。

Aの1番目の項目とBの全項目を比較し、Aの2番目の項目とBの全項目を比較し・・・とやっていくしかないんでしょうか?
488側近中の側近 ◆0351148456 :2007/12/23(日) 16:01:26
>>485
(っ´▽`)っ
そだね。
「頭悪いなあ。」とか人を貶す言葉が先に来るから、
ついには、誰もついてこなくなる(彼自身窓際族になる)可能性もあるけどね。
この性格のままだと将来がないと思うよ。
今だけでしょ。周りがみなうなづいてくれてるのは。

COBOLしか知らないくせに自分が一番知ってると勘違いしてる中年おやじと
同じ末路を辿るんだろうね。
489デフォルトの名無しさん:2007/12/23(日) 16:04:01
今ではCOBOLは使うけどな

まあ語りたいのはわかるがスレタイ読めないような奴は何を言っても屑だろう
490484:2007/12/23(日) 16:08:33
>>486
どなたかとかと間違えてますか?


なんかやっていることがDoS攻撃じゃないのかって指摘が来そうなので、先に自分のやりたいことだけ言っておきます。
自宅ではIP電話対応のルータを使ってるのですが、その中にWebサーバが入っててログをHTTPで読めるようになっています。
そこで、定期的にログを読むプログラムを作って、SMTPで携帯電話にメール出すっていう不在電話通知機能を作ろうとしています。
常時タスクトレイに起動するような使い方を想定していますので、メモリリークが非常にやっかいで困っています。
どうかお力を貸してください。
491デフォルトの名無しさん:2007/12/23(日) 16:09:24
>>488
いや、こいつ自身がリアルではいつも他人から「頭悪いなぁ」って言われてるから、
2chでイキがってるんじゃないかな。
コードを見る限り「実力がある」とはとても思えないし。

>>487
基本的にはそうだけど、ArrayListにしてContains()で検索しちゃえば少しはましでない?
492デフォルトの名無しさん:2007/12/23(日) 16:12:09
アホばっかだな。
>>269のような「やり方がわからないだけ」の質問に対して
技術や理屈ならべてるやつなんなの?w
493デフォルトの名無しさん:2007/12/23(日) 16:12:53
>>490
http://support.microsoft.com/kb/418376/ja
もしかしてこの問題?
ところでWebBrowserじゃなくてWebClientで取得するのじゃだめ?
494デフォルトの名無しさん:2007/12/23(日) 16:16:41
>>487
.NET 3.5でよければExceptが使えるかな。

var q = listA.Except(listB);
foreach (var item in q) Console.WriteLine(item);

これでおk

Enumerable.Except<TSource> ジェネリック メソッド
ttp://msdn2.microsoft.com/ja-jp/library/bb300779.aspx
495側近中の側近 ◆0351148456 :2007/12/23(日) 16:16:42
(っ´▽`)っ
でだ、>>471にお勧めのスレがある。
http://money6.2ch.net/test/read.cgi/employee/1083230722/
496デフォルトの名無しさん:2007/12/23(日) 16:16:50
>>492
アホだな
>>272以降は>>269に対する回答じゃないんだよ
497デフォルトの名無しさん:2007/12/23(日) 16:19:24
>>482
お前さあ、意見にではなく >>482 個人に対して、自演までして反撃されるほど
自分の指摘が的確で >>272 に相当のダメージを与えた、とでも思ってんの?
幸せいっぱいだな。これからもお前の幸せを祈ってるからな。
498デフォルトの名無しさん:2007/12/23(日) 16:19:32
>>496
>>472以降のツッコミに関してはなにか言うべきことはないのかな?
499484:2007/12/23(日) 16:20:09
>>493
あぁ。まさにそれです!
Microsoftのページに書いてあったとは…。

WebClientで解決できるかもとは思っていたのですが、いかんせん使用した経験が無いものであまり手を出したくなかったのが現状です。
それで、WebBrowserがどうにかして使えるようになれたらいいなぁと思ってここで質問してました。

でもMicrosoftが定期的にアプリ終了させてくださいって言ってるくらいだからどうにもならなさそうですね。
WebClient勉強してみます!
500側近中の側近 ◆0351148456 :2007/12/23(日) 16:21:29
>>497
(っ´▽`)っ
>これからもお前の幸せを祈ってるからな。
どもども〜☆
501デフォルトの名無しさん:2007/12/23(日) 16:40:59
漏れは>>471が気に入ったんだけど、結局どのコードがいいの?
初心者に正しい道を示して下さいです。
一人で遊んでると、動けばいいや的なコードになりがちで悩みますです。
502デフォルトの名無しさん:2007/12/23(日) 16:42:59
ほぼ丸一日の時間と、レス数 200 以上を消費して、結構盛り上がったねw
503デフォルトの名無しさん:2007/12/23(日) 16:44:37
結局290の何が悪いのかさっぱりわからない俺初心者
504デフォルトの名無しさん:2007/12/23(日) 16:46:27
>>503
また蒸し返すか〜
505デフォルトの名無しさん:2007/12/23(日) 16:47:27
わかってるならちょちょっと教えてやって
506デフォルトの名無しさん:2007/12/23(日) 16:55:52
>>503
別に悪くないけど、それが自分の好みに合わないというだけで
必死で馬鹿にした挙句、突っ込みに耐え切れず >>272 が逃げたというだけの話。
そしてさんざん偉そうにほざいた割には >>314 は恥ずかしいバグ入りだったという
オチ付き。

なのでもう許してやって。
507デフォルトの名無しさん:2007/12/23(日) 17:34:10
このコテ焼いてもらおう
508デフォルトの名無しさん:2007/12/23(日) 17:38:16
>そういうのはさあ、普通削除するアイテムをリストなり配列なりにリストアップしといて
>まとめて削除するのが定石ってもんでしょ。

>こういうのはさ、知識というかパターンとして覚えることじゃなくて
>だれが考えても普通の知能があればそうするって程度の話だと思うぞ

最初のこの指摘で明らかに>>471見たいのも想定外ってのがわかる。
この時点では気づいてない。
だから誰かが>>471みたいなコードを書いても、
こいつは確実に腐ってるって指摘しただろう。

そんな状態で人のコードに馬鹿、頭悪い云々言いまくってたんだから、
言い訳しても無駄だし、こいつがアホだった、というだけのこと。
509デフォルトの名無しさん:2007/12/23(日) 18:15:25
そんな揚げ足取りしてまで何を証明したいのかねえ。。。
510デフォルトの名無しさん:2007/12/23(日) 18:21:28
って言ってお馬鹿には分からないよねたぶん。

定石はこうだ、とは言ったが>>270が「よくない」理由として定石と異なることを
挙げた覚えはない。

そうではなく、「よくない」理由はそれが直観的じゃないからだ、
とずっと言ってるでしょうが。
511デフォルトの名無しさん:2007/12/23(日) 18:23:14
逆を言えば、あるコードが十分に直観的であればそれを否定する理由は
何もないということでしょうが。
512デフォルトの名無しさん:2007/12/23(日) 18:24:03
直感か、芸術は爆発だ!見たいなものだな。
だれも賛同しない感性はただの独りよがり。
513デフォルトの名無しさん:2007/12/23(日) 18:29:39
だから「直感」ではなく「直観」だよw
理科系の大学出てれば割となじみのある言葉じゃないかと思うんだが。。
514デフォルトの名無しさん:2007/12/23(日) 18:31:59
はいはい、痛いからそのくらいにしたら
515デフォルトの名無しさん:2007/12/23(日) 18:36:38
理科系の大学…
516デフォルトの名無しさん:2007/12/23(日) 18:38:00
>そういうのはさあ、普通削除するアイテムをリストなり配列なりにリストアップしといて
>まとめて削除するのが定石ってもんでしょ。

>こういうのはさ、知識というかパターンとして覚えることじゃなくて
>だれが考えても普通の知能があればそうするって程度の話だと思うぞ
517デフォルトの名無しさん:2007/12/23(日) 18:38:32
まあバグのある定石だけどな。
518デフォルトの名無しさん:2007/12/23(日) 18:45:15
>標準的なプログラマならやっぱり普通こうじゃないの?

むしろ入社試験か何かで出して、>>314みたいなコードを書いてきたら
「うちはそんな標準的な(バグを見抜けない)プログラマは要りません」って
感じに使えそうだなこの問題。

参考:マイクロソフト米国本社の実地面接に行ったけど質問ある?
ttp://vipvipblogblog.blog119.fc2.com/blog-entry-105.html
>例えば、linked-listにループが存在するかどうかを確認するコードを書き、
>それの効率性を答える問題や、linked-listを効率的に逆向きにする問題等が出ました。

割と有名問題が出ててびっくりした。
519デフォルトの名無しさん:2007/12/23(日) 18:46:19
>>510
「直観的じゃない」なんて曖昧な脳内基準で言われてもねぇ。
ほとんどの人にとって、リストの後ろから消すなんてのは十分に直観的なんだけどなぁ。
あんたの脳みそが低性能だから直観でわからないだけのことをそんなに
グダグダと言う理由ってなんなの?
520デフォルトの名無しさん:2007/12/23(日) 18:49:15
>書いてみたよ。
>listBox1.SelectedIndices.OfType<int>().Reverse()
>    .ToList().ForEach(index => listBox1.Items.RemoveAt(index) );
>直感的に読めるかどうかは知らんけど。

直感…?

>俺ならやっぱり>>290みたいな(悪いけど)糞コードは書かないな。
>標準的なプログラマならやっぱり普通こうじゃないの?
バグあるけどね。普通はバグぐらいあってもいいよね。

>でも全部のコードがこの調子で書かれてたらかなわんよ。
>君自身がいってるように「積み重なる」から。
うん、バグあるほうがましだよね。

>君はコードを検証的に(要はデバッグ)よむ場合を想定してないんだよ。
>コメントなんか書いてあってもコードの正しさは保障されないだろw
うん、バグ入っちゃったよね。

>小学校のころ算数ができなかった子がプログラマになってるのかな。
算数ができたからバグなんかあってもいいんだよ。

521デフォルトの名無しさん:2007/12/23(日) 18:50:29
「相対性理論は(俺に理解できないから)間違ってる!」っていうトンデモな人と同じ感性だよな。
522デフォルトの名無しさん:2007/12/23(日) 18:51:40
いやそれはちがうと思うよ…
523デフォルトの名無しさん:2007/12/23(日) 18:52:05
今回の話ってリストじゃなくてリストボックスの話じゃないの?
リストボックスで複数削除で頭から消したらずれるなんて、みんな通る道だと思ったけど。
そのときに、消したときにはインデックスを増やさないか、後ろから消すかで分かれるだけな気が。
524デフォルトの名無しさん:2007/12/23(日) 18:53:10
ってここC#だから微妙か。
525側近中の側近 ◆0351148456 :2007/12/23(日) 18:54:51
(っ;д;)っ
私のために喧嘩しないで☆
526デフォルトの名無しさん:2007/12/23(日) 18:55:42
単にこういうやり方の方が直観的だと思うよ、くらいの書き方なら
別にそこまで誰も突っ込まなかったと思うのに(バグはあったが)、
人を馬鹿にするようなことばっか言いまくった挙句それだから痛いんだよ。
527側近中の側近 ◆0351148456 :2007/12/23(日) 18:58:00
(っ´▽`)っ
でも、まあ新たな名言が出たからいいんじゃないか。
みんなレスに困ったら「頭悪いなあ。」を使おうぜ☆
528デフォルトの名無しさん:2007/12/23(日) 18:58:32
>>510
バグを入れてでも「直観的」なことが大事だと思うなら、
ずっとそうやっていればいいんじゃない?
直観的じゃないからバグに気づかなかったなんていう揚げ足取りはしないからさ w

まあ、俺のチームにこんなのがいたら追い出すけど。
529デフォルトの名無しさん:2007/12/23(日) 18:58:34
>>525
てめーもうざいんだよあwせdrftgyふじこ
530デフォルトの名無しさん:2007/12/23(日) 19:00:48
追い出せない立場の身にもなってください><
531デフォルトの名無しさん:2007/12/23(日) 19:07:43
「馬鹿って言う奴が馬鹿なんだい!」
という小学生の常套句が正しかったと確信した。
532側近中の側近 ◆0351148456 :2007/12/23(日) 19:08:12
(っ´▽`)っ
っていうか、この人のいう定石ってどういう基準なんだろうね

っていうとまた話がこんがらがるね。
ちなみに将棋と囲碁の世界では定石とは、
騎士たちが数十年かけて築き上げるものであって、
自己流の指し方は定石とは言わないんだよね。

それ以前にC#に定石本ってあるのか?
Cだとカーニハン先生
JavaだとGoF
C++だとスコットメイヤーズ?
かなぁ・・・。
533側近中の側近 ◆0351148456 :2007/12/23(日) 19:09:19
(っ´▽`)っ
というわけで、しつも〜ん!!!
C#の定石本を教えて☆



はいはい、書籍スレいってきま〜す
534側近中の側近 ◆0351148456 :2007/12/23(日) 19:10:02
(っ´▽`)っ
>>532で誤字見っけ!!
騎士→棋士な
生きててごめんね☆
535デフォルトの名無しさん:2007/12/23(日) 19:12:30
もう丸一日経ったぜ。元気だなあ
536デフォルトの名無しさん:2007/12/23(日) 19:27:54
200レス近く読み飛ばした
537デフォルトの名無しさん:2007/12/23(日) 19:35:14
>>536
この24時間で最大の勝利者w
538デフォルトの名無しさん:2007/12/23(日) 19:44:42
>>521
確かに間違ってる。
今はM理論がもっとも有力と言われている
プログラミングやっててこの程度知識もないとは・・・・
539デフォルトの名無しさん:2007/12/23(日) 19:53:43
>>538
もしかして NASA かどっかで GPS とかの組み込みプログラム書いてる人?
540484:2007/12/23(日) 19:55:53
WebClientで完成しました。
タグの構文解析やBASIC認証で少しはまったけど、何とかできたみたいです。
とりあえずWebのところではメモリリークなさそうです。
SMTPのところでなんか使用メモリ増えている気がするのですが…頻度的に問題ないってことにしておきます。
恐らくこれもコンポーネントのバグでしょうね。

お世話になりました!
541デフォルトの名無しさん:2007/12/23(日) 19:58:22
>>538
依然としてマクロな範囲で相対性理論は理論と結果が合ってるわけだが。
542デフォルトの名無しさん:2007/12/23(日) 20:03:38
>>538
プログラマはM理論は知らなくてもいいけど、初歩的なバグを入れないような
「直観的な」コーディングをする能力は必要だよね。
543デフォルトの名無しさん:2007/12/23(日) 20:13:17
マ板でやれや糞ども
544デフォルトの名無しさん:2007/12/23(日) 20:13:19
ListBox の削除処理を題材にした踊り子たちが去り、また新たな踊り子の登場か。
545デフォルトの名無しさん:2007/12/23(日) 21:18:39
M理論で宇宙のはじまりをシミュレートしたいのですが
C#でできますか?
546デフォルトの名無しさん:2007/12/23(日) 22:08:26
こいつ等、まさしく出来ないマだなwww
視点が狭すぎる
547デフォルトの名無しさん:2007/12/23(日) 22:15:56
点に面積はないだろ…
548デフォルトの名無しさん:2007/12/23(日) 22:35:38
出来ないマどころか日本語ができない奴だな。
視野が狭いと言って欲しいところだ。
549デフォルトの名無しさん:2007/12/23(日) 22:40:01
>こいつ等、まさしく出来ないマだなwww
こういう台詞だけうれしそうに言うやついるよな
550デフォルトの名無しさん:2007/12/24(月) 00:11:36
マ板でやれ
551デフォルトの名無しさん:2007/12/24(月) 01:02:45
直感的でも何でも良いから1行あたりに使うメソッドを3つ以上入れられると
直感的にはわからなくなりがちだな
552デフォルトの名無しさん:2007/12/24(月) 02:20:36
「直感」はNGワードだろw
553デフォルトの名無しさん:2007/12/24(月) 02:46:20
「直感的」と「直観的」でそれぞれぐぐると、
直感的の方がはるかに多くヒットするな。
しかも、直観的だとぐーぐるさんに「もしかして: 直感的 ?」とまで言われる。

さて、どっちが正しいんだろう?
554デフォルトの名無しさん:2007/12/24(月) 02:49:27
どっちでもええわ
555デフォルトの名無しさん:2007/12/24(月) 02:52:13
>>553
調べてみたら、「直感的」は経験をベースにしてる一方、
「直観的」はそうではない第六感のようなものから発せられるようだな。
従って、コンテキスト依存であり、どっちが正しいという問題ではない。
このスレで最近使われた「チョッカン」に関しては「直感」が適切だろうな。
556553:2007/12/24(月) 02:55:43
>>555
だよなぁ。
俺も調べてみてそう思った。

>>272 はとことんダメなやつだな w
557デフォルトの名無しさん:2007/12/24(月) 03:17:14
粘着質だなぁwイブなのにwww
558デフォルトの名無しさん:2007/12/24(月) 03:30:28
逆に考えるんだ
イブだから粘着質なんだと
559デフォルトの名無しさん:2007/12/24(月) 03:35:04
こういう不毛な議論に情熱の全てを注ぎ込んで、世間の雑音から自分を隔絶してるんだ。
余計なことを言うんじゃない。
560デフォルトの名無しさん:2007/12/24(月) 03:37:04
まだくすぶってるしw
561デフォルトの名無しさん:2007/12/24(月) 03:55:56
イブなのにプログラミングしてますがなにか? w
まあ、さっきヨメと(ry


それだけじゃなんなのでスレに合った話題でも。
JPEGファイルを読み込んでImageにするのに一番速い方法は?

素直に
Image image = Image.FromFile(filename);
もしくは
Image image = Image.FromFile(filename, false);
こうするのが今まで測ったうちでは一番速いみたいなんだけど、
useEmbeddedColorManagement の意味がよくわからない。
色管理情報って、どういう時についてるんだろう?

http://www.atmarkit.co.jp/fdotnet/dotnettips/597fastloadimg/fastloadimg.html
ちなみにこれをやってみたら、かえって遅かった。
562デフォルトの名無しさん:2007/12/24(月) 05:12:30
>>561
useEmbeddedColorManagement は主に BMP と PNG で効果がある (はず)。
BMP だと色管理情報を独自に埋め込めるし、PNG だとガンマ補正のパラメータがついてたりする。
563デフォルトの名無しさん:2007/12/24(月) 08:26:46
M理論で美少女作りたいのですが
C#を使って直感でできますか?
564デフォルトの名無しさん:2007/12/24(月) 09:09:09
BitmapからRGB各色それぞれのbyte配列にするには、どうやればいいのでしょうか?
565デフォルトの名無しさん:2007/12/24(月) 09:32:57
GetPixelで各画素のColorを取り出してそのR・G・Bを配列に入れましょう
566デフォルトの名無しさん:2007/12/24(月) 11:17:05
メニューとかツールバーで標準項目を挿入すると名前が日本語なのが馴染めねえぇぇぇぇっ
と思ったが、今までわざわざ英語にするために辞書引いたりとかアホなことしてたから
どうせ個人的に作ってるだけだから、ここは一発、いままでの常識を覆して日本語で名前つけてみるか?
567デフォルトの名無しさん:2007/12/24(月) 11:24:44
日本語スタートだとインテリセンス使いづらいけどな
568デフォルトの名無しさん:2007/12/24(月) 12:02:41
>>564
unsafeでよければ、Bitmap.LockBits
569デフォルトの名無しさん:2007/12/24(月) 12:15:25
LockBitsだってunsafe限定ってわけじゃないぜ
570デフォルトの名無しさん:2007/12/24(月) 12:45:27
Marshal.Copyをつかう手もあるな。32bitRGBに変換しとくと計算が楽だ。
571デフォルトの名無しさん:2007/12/24(月) 12:58:27
GetPixelは恐ろしく遅いので使えないものと考えた方がいい
572デフォルトの名無しさん:2007/12/24(月) 13:03:42
>>566
名前って変数名のことか。
君が使う分には文句言わないけど、インテリセンスのうれしさ激減だから正直勘弁してほしい。
Migemo みたいなのと連携してくれるならいいけどさ。
少なくとも、自動生成する変数名のローカライズをするか否かの設定項目は欲しいところ。
573デフォルトの名無しさん:2007/12/24(月) 13:30:58
このスレは業務で使ってる人の割合が高いみたいだな。
574561:2007/12/24(月) 13:33:31
>>562
なるほど、jpegじゃ意味ないってことね。
thx
575デフォルトの名無しさん:2007/12/24(月) 13:44:51
他人に渡らないソースなら、どう書こうがその人の自由
そのアプリ固有のものなら、日本語にしたほうがわかりやすいこともある
前に規則的なアルファベットを2文字くらいつければ補完も効く
576デフォルトの名無しさん:2007/12/24(月) 13:51:34
ハンガリアン記法の復活だねっ
577デフォルトの名無しさん:2007/12/24(月) 14:10:25
漏れ、先頭に"_"を付けて
_穂毛ToolStripMenItem
みたいにしてる。
578デフォルトの名無しさん:2007/12/24(月) 15:03:20
toolStripMenuItem穂毛
でいいじゃん
579デフォルトの名無しさん:2007/12/24(月) 16:08:25
ちょこっとメンテとかならコピペでいいが
ガリガリ書くときに日本語変換はつらくないか?
580デフォルトの名無しさん:2007/12/24(月) 18:40:14
Webの開発でマルチスレッド機能って使うことあるんでしょうか?
581デフォルトの名無しさん:2007/12/24(月) 18:50:36
C#のプログラム上からシステムのサウンド設定をおこないたいのですが、可能でしょうか?

http://www.atmarkit.co.jp/fdotnet/dotnettips/440systemsounds/systemsounds.html
これを見ると再生はできるみたいなのですが、設定は難しいでしょうか?
582デフォルトの名無しさん:2007/12/24(月) 18:57:36
知らない内に使われてる。
明示的に使うことはあまりない。
効果的に使える場面一応もあるんだけど
危険すぎて任せられないorz
583デフォルトの名無しさん:2007/12/24(月) 19:03:42
>>581
レジストリにあるはずだからそれ書き換えればいけるはず
ただVistaで場所が変わったみたい(某デスクトップアクセサリで設定しても無視された)
584デフォルトの名無しさん:2007/12/24(月) 20:01:46
>>583
回答ありがとうございます。

以下のあたりのレジストリ設定で変更できました。
HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\.Default

585デフォルトの名無しさん:2007/12/24(月) 22:45:21
斜めに傾いた楕円を描きたいのですが

例えば
Graphics g = PictureBox1.CreateGraphics();
g.DrawEllipse(Pens.Black, 10, 20, 100, 80);

で位置(10, 20)大きさ100x80の水平な楕円が描けますが
こいつにx, y座標 width, height の他に45度等と傾きの情報
を渡して45度に傾いた楕円を描くといったイメージの事は出来るでしょうか?
DrawEllipseと同じようなインターフェースのメソッドが存在しましたら
御教示願います。
586デフォルトの名無しさん:2007/12/24(月) 23:01:23
Transform系を使えばなんでもあり
587デフォルトの名無しさん:2007/12/24(月) 23:25:10
>>585
初歩的数学もわからないのにプログラミングやってるの?
588デフォルトの名無しさん:2007/12/25(火) 02:27:04
>>587
「初歩的数学」がわかることと、この問題での最適解を知ってることとは別だろ。
589デフォルトの名無しさん:2007/12/25(火) 02:43:59
>>587
クリスマスに一人でム板だもんな
いちゃもんつけなきゃやってらんないよな・・・
590デフォルトの名無しさん:2007/12/25(火) 02:48:32
おまえなんでこの季節だけ仏教徒だって言うの?
おまえなんでこの季節だけ仏教徒だって言うの?
591デフォルトの名無しさん:2007/12/25(火) 08:25:25
ブール配列から値が偽のインデックスの配列を取得したいのですが,
すべてのインデックスを毎回利用するのではないのですべての値の評価をせず,
Linqで必要になった分だけ取得していきたいとかんがえています.
Linqでインデックス値を取得するサンプルが見つからなかったので教えていただけないでしょうか?

やりたいことはこのLinq版です
bool[] boolArray;
list<int> intList;
for(int i = 0; i < boolArray.Length;i++){
if(boolArray[i] == false) intList.Add(i);
}
intListを使用する
592デフォルトの名無しさん:2007/12/25(火) 08:51:52
ドキュメントまだ読んでる途中だから、ひょっとすると出来るのかもしれないけど
もとの配列のインデックスは取れないんじゃないかなあ。
どうしてもLINQでやりたかったら、intとboolの構造体を配列にしないと駄目だと思ってるけど。
593デフォルトの名無しさん:2007/12/25(火) 08:55:21
>>591
外部にカウンタを持つしかない。下の例ではidx。
var boolArray = new bool[] { true, false, true, false, false };
int idx = 0;
var rs = from b in boolArray
           let i = idx++
           where b == false
           select i;
foreach (var r in rs) Console.WriteLine(r);
594デフォルトの名無しさん:2007/12/25(火) 08:57:57
最終行に追加
List<int> intList = rs.ToList();
595デフォルトの名無しさん:2007/12/25(火) 09:06:04
これもあんまりスマートじゃないな。
var rs = from s in Enumerable.Range(0, boolArray.Length)
           where boolArray[s] == false
           select s;
List<int> intList = rs.ToList();
596591:2007/12/25(火) 10:57:03
LinqではEnumeratorインタフェースでMoveNext()して次の要素をたどっているのでインデックスという考えがないのでないかということなのかな.
Linqに関してはまだまだ勉強不足なので参考になりました.

597デフォルトの名無しさん:2007/12/25(火) 13:04:30
IEnumerable<int> Hoge(bool[] boolArray) {
for (int i = 0; i < boolArray.Length; i++)
if (!boolArray[i]) yield return i;
}
LINQじゃないけどこういうのは?
598デフォルトの名無しさん:2007/12/25(火) 14:32:27
>>591
SelectとWhereが同時に行えればいいんだけど
そういうオペレータは無かったと思うので、作るかこうするか。

var intList2 = boolArray.Select((Value, Index) => new { Value, Index }).Where(pair => !pair.Value).Select(pair => pair.Index);
599598:2007/12/25(火) 14:50:25
一応補足しておくと、>>598はEnumerable.Select<TSource, TResult>の
インデックスが得られるオーバーロード使ったものね。

ttp://msdn2.microsoft.com/ja-jp/library/bb534869.aspx

C#は匿名メソッドでyieldが使えないのがなぁ。
Pythonだったら>>597のを入れ子関数で書くみたいなのもできるんだけど。
600598:2007/12/25(火) 15:02:40
クエリ式の方が好きな人はこちらをどうぞ。
var intList2 =
  from pair in boolArray.Select((Value, Index) => new { Value, Index })
  where !pair.Value
  select pair.Index;
601デフォルトの名無しさん:2007/12/25(火) 15:18:03
Enum型にボクシングされた列挙型の値をint型の値として取得するには
リフレクションを使うしかないのでしょうか
602デフォルトの名無しさん:2007/12/25(火) 15:32:39
Convert.ToInt32
603601:2007/12/25(火) 15:38:04
できました。ありがとうございます。
604デフォルトの名無しさん:2007/12/25(火) 15:39:09
Enum.System.IConvertible.ToInt32 メソッド
ttp://msdn2.microsoft.com/ja-jp/library/system.enum.system.iconvertible.toint32.aspx

世の中underlying typeがlongの奴もいるかもしれんから気をつけれ。
605デフォルトの名無しさん:2007/12/25(火) 15:46:42
ただでさえC#関連スレが乱立してるのに、クエリ式質問スレが出てきそうだな。
606デフォルトの名無しさん:2007/12/25(火) 18:16:19
intからuintへの型変換ってどうすればいいのでしょう?
(uint)を省いて・・・
607デフォルトの名無しさん:2007/12/25(火) 18:43:56
>>606
Convert.ToUInt32

>>602から推測できなか?
608デフォルトの名無しさん:2007/12/25(火) 19:19:39
つかなんでキャスト式を省くんだ?
オーバーフローも任意にできるのに
609デフォルトの名無しさん:2007/12/25(火) 21:22:05
int CastProxyUInt32toInt32(uint val)
{
return (int) val;
}

とかw
610デフォルトの名無しさん:2007/12/25(火) 21:37:36
>>607-609
レスありがとうです。
試してたと思ってたんですorz
すみません。試してたのはUInt内にあるメソッドだけでした。
611デフォルトの名無しさん:2007/12/26(水) 11:50:30
マニュアルサイトじゃなく
C#を一から勉強するのに向いてるサイトある?
612デフォルトの名無しさん:2007/12/26(水) 11:56:31
ある背景色だけ指定したPictureBoxにいくつかの別のPictureBoxを重ねて
一枚の画像として保存させたいのですが、その方法がありましたら教えていただきたいです。
初歩的なことかもしれませんがよろしくお願いいたします。
613デフォルトの名無しさん:2007/12/26(水) 11:59:42
>>611
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html
>>612
画像はPictureBoxという概念を捨ててGraphics.DrawImageで自前描画
614611:2007/12/26(水) 12:06:55
>>613
さんくす
615デフォルトの名無しさん:2007/12/26(水) 12:09:36
>>613
回答いただきありがとうございます。
とすると例えば背景を黒にしたい場合、背景黒い画像を用意しなければならないのでしょうか?
616デフォルトの名無しさん:2007/12/26(水) 12:18:57
//Bitmap bmp1, bmp2;//貼り付ける画像
Bitmap bmp3 = new Bitmap(幅, 高さ);
using (Graphics g = Graphics.FromImage(bmp)){
g.Clear(Color.Black);
g.DrawImage(bmp1, 好きな位置);
g.DrawImage(bmp2, 好きな位置);
}
bmp3.Save("保存先");
617デフォルトの名無しさん:2007/12/26(水) 12:58:01
>>616
できそうです。
わざわざありがとうございました。
618デフォルトの名無しさん:2007/12/26(水) 13:27:23
リストビューの中に進行メーターのようなのがグラフィックで表示されているソフトがよくありますが
あれはどうやって作ればいいんでしょうか?
619デフォルトの名無しさん:2007/12/26(水) 13:32:56
おーなーどろー
620デフォルトの名無しさん:2007/12/26(水) 15:23:17
かすたむどぅろぉ
621デフォルトの名無しさん:2007/12/26(水) 20:11:57
なんでMarshal.CopyにはIntPtrからIntPtrにコピーするオーバーロードがないの?
622デフォルトの名無しさん:2007/12/26(水) 20:29:09
マネージドと関係ないならアンマネージドでやってろってことじゃね?
623デフォルトの名無しさん:2007/12/26(水) 22:18:35
マーシャルは橋渡し屋さんだから。ごめん適当に言った
624デフォルトの名無しさん:2007/12/26(水) 22:43:42
>>621
マーシャラの仕事じゃねえじゃん。
kernel32のCopyMemoryでも使えよ。
625デフォルトの名無しさん:2007/12/27(木) 00:22:57
WindowsアプリでのHttpWebRequestの使い方で困っています。
現在、HttpWebRequestのGetResponse()メソッドで例外が出ていまして、
調べたところ、useUnsafeHeaderParsingがtrueになっていないせいだということがわかりしました。
んで、ASPだと下記のような感じで書けば良いらしいのですが、
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>

WindowsアプリだとHttpWebRequestにuseUnsafeHeaderParsingプロパティが無く、
設定方法がわからず、止まっているという状況です。
どなたか、ご教授願います。
626デフォルトの名無しさん:2007/12/27(木) 02:29:23
デリゲートに関する質問です。
外部からデリゲートの実行は出来るが、メソッドの代入は行えない、
つまりevent修飾子の逆のような性質を持ったデリゲートは作れるでしょうか?
627デフォルトの名無しさん:2007/12/27(木) 02:31:14
>>626
デリゲート型でsetterなしのプロパティでも作れば
628デフォルトの名無しさん:2007/12/27(木) 03:13:02
それってpublicなメソッドとどう違うの?
629デフォルトの名無しさん:2007/12/27(木) 03:51:47
構文が違う
630デフォルトの名無しさん:2007/12/27(木) 07:07:16
>>625
それ構成ファイル。
WinFormでもapp.configに書ける。
ASP.NETの場合はweb.configに書く。
631デフォルトの名無しさん:2007/12/27(木) 10:51:03
>>627
それ呼び出しリスト追加できちゃうよ
632631:2007/12/27(木) 10:54:51
いやすまん勘違い
633デフォルトの名無しさん:2007/12/27(木) 17:16:25
これ便利じゃね?
http://vip.com.myminicity.com/ind
634デフォルトの名無しさん:2007/12/27(木) 17:23:09
<html>
<head>
<title>MyMiniCity</title>
</head>
<body>
<noscript>
This site needs JavaScript.
</noscript>

<script type="text/javascript">
//<![CDATA[

var d = new Date();
d.setTime(d.getTime()+52727);
var exp = d.toGMTString();
if( document.referrer != null )
document.cookie = "X-MV-Referer="+encodeURIComponent(document.referrer);
document.cookie = "X-Ref-Ok=1;expires="+exp+";path=/"
document.location.href = document.location.href;
//]]>
</script>
<p><em>Please wait a few moments...</em></p>

</body>
</html>

なんだろうこれ
よくわかんないなぁ〜
635625:2007/12/27(木) 21:57:47
>>630
おぉ!ありがとうございます。
クライアント側の方にapp.configを追加したら行けました。
636デフォルトの名無しさん:2007/12/28(金) 00:30:48
>>627
ありがとうございました。出来そうですね。
637デフォルトの名無しさん:2007/12/28(金) 11:53:03
マルチスレッドに関する質問です。
Threadクラスを使って新たに作ったスレッドは、スレッド終了後にまたStart()できないのでしょうか?
というのも、Startを再び呼ぶ前にJoin()メソッドを使用して終了するまで待っているのでスレッドは終了しているはずですが、再びStart()はできないです。
こういった場合、newしなおし前のは破棄する必要があるということですか?

638デフォルトの名無しさん:2007/12/28(金) 11:55:29
Threadは基本使い捨てだよ
639デフォルトの名無しさん:2007/12/28(金) 12:40:36
やはりそうですか。ありがとうございました。
640デフォルトの名無しさん:2007/12/28(金) 12:44:12
>>637
なんかその発想ってオブジェクト指向の暗黒面を体現してるな。

Threadクラスはスレッドを抽象化したものに過ぎない。

間違ってたらごめん。
Threadクラスのインスタンスは参照されている限りそりゃ生きてるけど、
それが抽象化してる本当の「スレッド」は終了した時点で既に死んでる、
という風に俺は理解している。
641デフォルトの名無しさん:2007/12/28(金) 15:44:54
時々見かける、Aクラスのスレッドが云々ってような言い回しを思い出した…
642デフォルトの名無しさん:2007/12/28(金) 16:22:32
再びStartできるようにしてあったとしても
適切かどうかは知らないけどありえなくはないと思うけど
中にラップしてるものを自動で作り直すようなラッパーなんていくらでもあるでしょ
643デフォルトの名無しさん:2007/12/28(金) 16:24:52
それをスレッドでやっちゃうとやばいよな
644デフォルトの名無しさん:2007/12/28(金) 16:27:12
そうでもない
645デフォルトの名無しさん:2007/12/28(金) 23:55:59
618さんではないのですが,私も現在作成中のアプリでListViewに
プログレスバーを表示させることを考え
OwnerDrawで
ProgressBarRenderer.DrawHorizontalBarや
ProgressBarRenderer.DrawHorizontalChunks
を実行しようとしたのですが,
Visualスタイルが有効でないといわれました.
Application.EnableVisualStyles();
をはじめに実行しているのですがだめでした.
OSはXPでクラシックスタイルで利用中なのでこれが原因だとはわかってるのですが,
ListViewにProgressBarを表示することがクラシックスタイルではできないのでしょうか?
それともProgressBarRendererをやり方が根本的に間違っていたりするのでしょうか?
ご教授ください.
646デフォルトの名無しさん:2007/12/28(金) 23:57:47
素直に自前で描画しろ
647デフォルトの名無しさん:2007/12/28(金) 23:59:13
>>645
VisualStyle 系の描画クラスの一部は、ビジュアルスタイルが有効でないと例外が出る。
あんましお勧めしないがどうしても Windows と見た目を統一したいなら Win32 API を使うしかない。
648デフォルトの名無しさん:2007/12/29(土) 00:02:51
MSDNライブラリに答えが書いてあると思うんだけど。。
読むつもりないのか文盲なのかその両方なのか・・・
649デフォルトの名無しさん:2007/12/29(土) 00:10:20
思うだけならだれでもできる。
書いてあるなら証拠を示せ。
650645:2007/12/29(土) 00:18:16
ProgressBarRendererはクラシックスタイルではだめなようですね.
graphic.DrawRectangleとかでプログレスバーもどきっぽいのは作れそうなので
自分で描画の方法をとってみたいと思います.

すぐにいろいろな意見を書き込んでいただき,ありがとうございました.
651デフォルトの名無しさん:2007/12/29(土) 02:00:45
//左上以外の角に線がうまく引けないのはなんでなんだ?

using System;
using System.Windows.Forms;
using System.Drawing;

class Hoge : Form{
private Pen pen;

public Hoge(){
pen = new Pen(Color.Blue);
Resize += MyResize;
}

protected override void OnPaint(PaintEventArgs e){
base.OnPaint(e);
e.Graphics.DrawLine(pen,0,0,Width,Height);
e.Graphics.DrawLine(pen,0,Height,Width,0);
}

private void MyResize(object sender,EventArgs e){
Invalidate();
}
}

class Fuga{
public static void Main(){
Application.Run(new Hoge());
}
}
652デフォルトの名無しさん:2007/12/29(土) 02:46:06
e.Graphics.DrawLine( pen, 0, 0, this.Width - 1, this.Height - 1 );
653デフォルトの名無しさん:2007/12/29(土) 10:00:05
threadクラスとデリゲートをいろいろいじくってたらC#でメモリがどんどん減ってく・・・・・・orz
自分の不甲斐なさに泣けてきたぜ。
654デフォルトの名無しさん:2007/12/29(土) 12:53:01
>>652サンクス
WidthとHeightの値と実際のウィンドウサイズが異なるのはどうしてなの?
http://up.img5.net/src/up14699.jpg
655デフォルトの名無しさん:2007/12/29(土) 13:19:20
Width == 5, Height == 3
 01234
0■■■■■
1■■■■■
2■■■■■

Point( 5, 3 )は領域外だ
656デフォルトの名無しさん:2007/12/29(土) 13:21:32
>>654
ああ、
>WidthとHeightの値と実際のウィンドウサイズが異なるのはどうしてなの?

「クライアントサイズ」でぐぐる
ウィンドウサイズと言えばノンクライアント領域も含む(枠とかタイトルバーとか)
657デフォルトの名無しさん:2007/12/29(土) 13:22:34
いや、そういう問題じゃないだろ。
ClientSizeの値を使えばちゃんといけるはず。
658デフォルトの名無しさん:2007/12/29(土) 13:23:42
あ、被った。
659デフォルトの名無しさん:2007/12/29(土) 14:16:45
>>655-658
int w = ClientSize.Width;
int h = ClientSize.Height;
e.Graphics.DrawLine(pen,0,0,w-1,h-1);
e.Graphics.DrawLine(pen,0,h-1,w-1,0);
とすれば良かったんだな
サンクス勉強になった
660デフォルトの名無しさん:2007/12/29(土) 14:28:01
ClientRect使えよ。。
661デフォルトの名無しさん:2007/12/29(土) 21:18:39
いまc++勉強して色々と覚えてきたのだが
ちょっとGUIなプログラムをつくるためにC#を学ぼうと思うのだがいい書籍はないですか?
662デフォルトの名無しさん:2007/12/29(土) 21:53:08
紙媒体でなくていいなら@ITのC#入門
663デフォルトの名無しさん:2007/12/29(土) 21:59:17
VisualC#でGUI開発入門 的な本が欲しいの?
特に定番は無いんじゃね
そういう本なら中身見て選びやすいから適当に本屋で好きなの選んだら
664デフォルトの名無しさん:2007/12/29(土) 22:27:45
「ちょっと」GUIってWindows Formのコントロールのこといってるんだったら
ほとんどのものは本なんて要らない気もするけどなあ。
DataGridView以外のほとんどのコントロールはMSDNライブラリ見ながら
実際つかってみればすぐわかるじゃん。

「ちょっと」じゃなくてGDI+とかフォントのディープな知識のこと言ってるんだったら
ペッゾルトの本になるのかな俺は読んでないけど。
665デフォルトの名無しさん:2007/12/29(土) 23:43:14
>>661
ちょっとならC++でやりゃあいいじゃん
666デフォルトの名無しさん:2007/12/29(土) 23:48:12
C++できる人でも、C++/CLI覚えるよりはC#覚えた方が早いと思うよ
667デフォルトの名無しさん:2007/12/30(日) 00:17:40
その後で、必用ならC++/CLIをやればいい。俺がそうだった。
668デフォルトの名無しさん:2007/12/30(日) 13:10:57
その前にVB覚えようか
669デフォルトの名無しさん:2007/12/30(日) 13:13:18
VBというだけで馬鹿にする気はないよ
670デフォルトの名無しさん:2007/12/30(日) 13:13:37
C#/VB.NET/Java で一気に使える言語増やせる
671デフォルトの名無しさん:2007/12/30(日) 13:14:51
C++/CLI は既存のソースを流用するために作られたようなもんだしな。
新規に作るなら C# でいい。
672デフォルトの名無しさん:2007/12/30(日) 17:43:24
ちなみにC++とC++/CLIの差て定量的に言い辛いとは思うけど
どの程度なんでしょ?>触ってる人
673デフォルトの名無しさん:2007/12/30(日) 17:59:41
まんま C# + C++
674デフォルトの名無しさん:2007/12/30(日) 18:04:17
>>672
せっかくC++/CLIスレあるんだから有効活用してみてはどうか。
675デフォルトの名無しさん:2007/12/30(日) 21:41:35
>>672
C++は変態、C++/CLIは超変態
一度使って見ようと思ったことがあるけどref,^,%,*..等文法が変態すぎて挫折した
リスト作るだけで List<String^>^ list = gcnew List<String^>(); とかはないわ
^付けるくらいならC#やったほうがまし
676デフォルトの名無しさん:2007/12/30(日) 22:02:02
>>673
>>675の例で何となく雰囲気が分かりましたわ。
確かにもキモイですな。

>>674
C++/CLI使う予定も無いのでそれ程改まって聞きたかった訳ではw
話しの流れでC++/CLIが出てたんで、ちょっとどんなもんかなと思っ
た次第。
677デフォルトの名無しさん:2007/12/30(日) 22:45:24
すみません、ちょっとお尋ねします。
VS2005 Expressで以下のようなコードを書いたのですが、
class MyControlClass: Panel
{
//内容
}

class MyClass: Control
{
public MyClass()
{
this.BackgroundImage = Image.FromFile("pic.bmp");
this.Width = 10;
this.Height = 10;
this.Location = new System.Drawing.Point(100, 100);
}
}

メインフォーム内メソッド
{
MyControlClass myCnt = new MyControlClass();
myCnt.Controls(new MyClass());
}
Panelを継承したMyControlClass上にControlを継承したMyClassが表示されません。
MyControlClassが単なるPanelだと表示されたのですが・・・

どなたかわかる方いましたらご教授願えませんでしょうか。
678デフォルトの名無しさん:2007/12/30(日) 23:00:26
>>677
(1) 君が求めている「どなたか」とはエスパーのこと。
(2) エスパーは存在しない。
(3) ゆえに君が求める「どなたか」は決して現れない。
679デフォルトの名無しさん:2007/12/30(日) 23:13:36
>>677
その例だとPanelじゃ何故Controlであるのかがわからない。
Panelの中身でも見てみれば?
680679:2007/12/30(日) 23:15:11
一行目日本語じゃないな・・・スマン
681677:2007/12/30(日) 23:20:17
すいません。
やりたいことを説明しますと、Panelを継承した自作クラス上に
Controlを継承した自作クラスを乗せたいのです。

それから、>>677
myCnt.Controls(new MyClass());

myCnt.Controls.Add(new MyClass());
でした。

すいません。
682デフォルトの名無しさん:2007/12/30(日) 23:25:36
>>681
Controlがなんなのか考えよう。
としか俺にはいえないな・・・
683デフォルトの名無しさん:2007/12/30(日) 23:26:06
>>681
デザイナが自動生成したコード見たことある?
684677:2007/12/30(日) 23:32:34
>>682-683
すいません、初心者なもので・・・

panelObject.Controls.Add(controlObject);
で、controlObjectのBackgroundImageが表示されないんでしょうか。

自動生成コードにはformObject.Controls.Add(panelObeject)
とやってますが、Controlでは無理なんですかね。
685デフォルトの名無しさん:2007/12/31(月) 00:00:29
年末だってのにぐだくだ書いてないでソースアップしなはれや
このままいっても情報小出しのせいで切れる御方がでよるとよ
どうせformに追加してないとかじゃないのかと思いますが
686デフォルトの名無しさん:2007/12/31(月) 02:05:45
指定したパスのファイルを指定して、削除をする機能のみ持った
エクスプローラを作るという宿題を誰か作ってくれないでしょうか?

listviewを利用して作ろうかと思ったが、
ファイルを選択→ファイル削除が・・・思ったよりも難しい

687デフォルトの名無しさん:2007/12/31(月) 02:14:32
宿題は自分でやらんとあかんよ。
授業中に寝てたらあかんよ。
友達もつくっとかなあかんよ。

ファイルを選択
←listView.SelectedItems で選択されてるListViewItemを取得して
foreach等でループさせて取得

ファイル削除
←ファイルならFile.Delete(), フォルダならDirectory.Delete
688デフォルトの名無しさん:2007/12/31(月) 03:48:26
質問です。
部分文字列の取得を座標で指定する方法ってありますか?
689デフォルトの名無しさん:2007/12/31(月) 09:30:13
>>688
部分文字列の座標って
TEXTの100pix目以降を取得とかか?
文字列全取得してフォントの文字ごとのサイズを元に削ればいいだろ
対象がTEXTじゃなくてpictureならフォントビットマップ使ってOCR一致させる

すさまじく無駄っぽいけどw
690デフォルトの名無しさん:2007/12/31(月) 12:11:40
>>689
webbrowserで表示中のテキストのみを抜き出そうとしています。
webbrowser.Document.Body.ScrollRectangleで座標は取得できそうなので、
部分文字列に座標を指定できれば可能ではないかと考えているのですが・・・
691デフォルトの名無しさん:2007/12/31(月) 12:38:19
そんな根本的なところを後出しされて答えられるかっての。
692デフォルトの名無しさん:2007/12/31(月) 13:05:25
やっぱり日本の教育って問題あるよねw
690はたぶん691がどうしてクレームつけてるか理解できないと思うよ。

こんなにコミュニケーション能力 ―― 自分の発言が他人にどう聞こえるかを
考えながら発言する能力 ―― が欠如している人間が多いのは、国語の時間に
文学鑑賞しか教えてないからだと思う。
693デフォルトの名無しさん:2007/12/31(月) 13:15:05
これはひどい
694デフォルトの名無しさん:2007/12/31(月) 13:22:01
ワロタ
695デフォルトの名無しさん:2007/12/31(月) 13:51:33
便乗で質問です。
ありますか?
696デフォルトの名無しさん:2007/12/31(月) 14:02:59
>>693-694って、ひょっとして692が691にケチつけてる、とか思ってるんじゃないの?w
これも教育の問題だね。
697デフォルトの名無しさん:2007/12/31(月) 14:04:58
思ってないから心配しなくていいよ(笑)
698デフォルトの名無しさん:2007/12/31(月) 14:09:46
>>696
どう読んだらその解釈が出来るんだ?
これも教育の問題だね。
699デフォルトの名無しさん:2007/12/31(月) 14:25:03
これはひどい
700デフォルトの名無しさん:2007/12/31(月) 14:25:30
マでやれゴミども
701デフォルトの名無しさん:2007/12/31(月) 14:25:40
WebBrowser…
答えた後から出てくる条件…
この符合が意味するものは
702デフォルトの名無しさん:2007/12/31(月) 14:29:27
あいつか
703デフォルトの名無しさん:2007/12/31(月) 16:04:42
タイムトラベラーだったんだよ!
704デフォルトの名無しさん:2007/12/31(月) 19:17:51
mdbからDataSetを使って特定フィールドの値を取得するには
どうしたらいいのですか?

TEST.mdbのAテーブルの最終レコードのIDフィールドの値を取得したい。
705デフォルトの名無しさん:2007/12/31(月) 19:31:03
>>687
出来ました!
ありがとうございました
706デフォルトの名無しさん:2007/12/31(月) 19:34:37
ラムダ式で再帰って書けるの?
707デフォルトの名無しさん:2007/12/31(月) 19:56:40
>>706
書けぬ事もないが非推奨。末尾再帰の最適かもやってくれない。
やりたきゃこうやる。

Func<int, int> trecv = null;
trecv = i => (i > 0) ? i + trecv(i-1) : 0;
Console.WriteLine(trecv(10));
708デフォルトの名無しさん:2007/12/31(月) 20:01:01
自動プロパティに規定値を与えるにはコンストラクタで代入するしかないの?
かえって見にくくなるような
709デフォルトの名無しさん:2007/12/31(月) 20:18:51
自動プロパティなんて機能が追加されたんだw
C#ってVB.NETのイベント周りみたいな、プログラマから明示的に見えない
暗黙的なコードやフィールドの存在を許さない方針かと思ってたけど、
そこら変のポリシーは思ってたより案外いい加減なのかな。
710デフォルトの名無しさん:2007/12/31(月) 20:26:36
>>709
Linq関係で単純なプロパティだけのオブジェクトを量産する必要があるから追加したんだろう。
C#3.0の追加要素はほとんどはLinqのための機能でそれ以外にどういう使い方をして行くかは今後の課題だな。
711デフォルトの名無しさん:2007/12/31(月) 20:35:42
>>709
そんなことはない
イベントのアクセサやデリゲートは1.0の頃から自動生成されるし
yieldとかクロージャとか使ったらそれこそ大量のコードが生成されるぞ
712デフォルトの名無しさん:2007/12/31(月) 23:10:11
Graphics.MeasureStringを使いたいのですが、
Graphicsオブジェクトはどこから取ってくればいいでしょうか。
コントロールがないのでControl.CreateGraphcisやPaintEventArgsは使えません。
そのためだけにビットマップを作るのは気が引けます。
713デフォルトの名無しさん:2007/12/31(月) 23:12:46
ゲーム作れますか?
3DのFPS
714デフォルトの名無しさん:2007/12/31(月) 23:19:33
作れる
715デフォルトの名無しさん:2008/01/01(火) 02:09:55
>>712
GetDC
716デフォルトの名無しさん:2008/01/01(火) 03:02:32
>>712
そういう質問は状況(何を何故したいのか?)をもう少し書かないと答え難いんじゃないの?
2.0以降ならTextRendrer.MeasureTextが使えそうなケースのようにも思えるけど、
その文章だけじゃよくわからんよ。
717デフォルトの名無しさん:2008/01/02(水) 01:51:21
FixedSingleなフォームにStatusStripを追加したんですが、StatusStripの右下の三角の点点の
フォームリサイズ用につまめる部分が消えなくて困っています。
フォーム全体はFixedSingleなのでマウスでつまめないようになっているのですが、
StatusStripの右下の部分だけがつまめてしまいます。
(リサイズはできないのですが、カーソルの形が変わる。)
StatusStripのプロパティかと探したんですが、それらしいのが見つかりませんでした。
どうすればこのつまめる部分を無くせるのでしょうか。
718デフォルトの名無しさん:2008/01/02(水) 02:03:07
ひどいバグだなあ
719デフォルトの名無しさん:2008/01/02(水) 02:17:17
>>717
DocumentExplorerでメンバ一覧とか見るとき、
「メンバのオプション:フィルタ」の「継承されたメンバを含める」のチェックを外せば
表示メンバが随分減って探しやすくなるぞ。
720デフォルトの名無しさん:2008/01/02(水) 10:21:38
継承されたメンバを含めるオプションって、
n階層上までに宣言されたメンバって指定ができたら便利なんだがなぁ
721デフォルトの名無しさん:2008/01/02(水) 10:26:50
Delphiのヘルプみたいに実装されてるクラスごとに見れたらなあ。
722デフォルトの名無しさん:2008/01/02(水) 10:37:36
フォームで、メニューなんかのボタンを表示するダイアログAを作っているとします。
このダイアログAは親のメインフォームから呼び出されます。
このダイアログAもサブメニュー的なボタンを表示する、子ダイアログBを作ります。
このとき、単純にダイアログAのボタンを押したらダイアログBをShowDialogする
とやると、親フォーム、ダイアログA、ダイアログBがすべて表示されている状態になると思います。
そうではなく、ユーザから見ると、ダイアログAのボタンを押すと、ダイアログAがダイアログBに
書き換わるように見えるという動作をさせたいのです。
ダイアログAのクローズイベントからダイアログB表示とかやっても、どっちみち
ShowDialogで処理が止まってしまうので、ダイアログAが消えないなと…。
Web画面なら、一個のフォームにすべてのボタンを配置して、いらないのは非表示にしてやれば良いかと思う
のですが、c#の場合、どのようにするのが常套手段でしょうか?
723デフォルトの名無しさん:2008/01/02(水) 10:57:37
formAで

this.Visible = false;
formB.ShowDialog();
this.Visible = true;

ってすれば?
724デフォルトの名無しさん:2008/01/02(水) 11:01:00
>>717
ちゃんと探せよ
StatusStrip.SizingGrip = False
725デフォルトの名無しさん:2008/01/02(水) 11:11:31
>>723
あ…なるほど…
ありがとうございます
726デフォルトの名無しさん:2008/01/02(水) 13:22:40
PictureBoxに画像を置くとLocationは左上を(0, 0)として画像が配置されますが、
右下や左下などを(0, 0)とすることは可能ですか?
左上を(0, 0)として画像を配置するとPictureBoxに入りきらない大きさの画像は右側と下側が切れてしまいますが、
これを左側と上側が切れるようにしたいのです。
もし可能であれば方法を教えてください。よろしくお願いします。
727725:2008/01/02(水) 13:27:14
すみません。LocationじゃなくてPictureBoxの中の画像の位置です。
分かり辛かったら申し訳ありません。
728デフォルトの名無しさん:2008/01/02(水) 13:32:00
オリジンを変えるんじゃなくて、オフセット設定したらどうか?
729726:2008/01/02(水) 14:15:15
>>728
レスありがとうございます。
オフセット設定でググってみたのですが、あまりピンときませんでした・・・。
もしよかったら詳しくオフセット設定について解説しているサイトなありましたら教えていただけないでしょうか?
申し訳ありませんが、よろしくお願いします。
730デフォルトの名無しさん:2008/01/02(水) 14:54:12
普通に画像のサイズからPictureBoxのサイズを引いた位置をLocationに指定すればいいのでは
731726:2008/01/02(水) 15:27:32
>>730
レスありがとうございます。
それも考えたのですがPictureBoxのサイズを画像のサイズより小さくすると右下から切れていくのと
上部にメニューバーを設置したいという理由で断念しました。
732デフォルトの名無しさん:2008/01/02(水) 15:46:42
すみません、すごい初歩的なことかもしれないんですが教えてください。

x = x > y ? y : x;

これはどういう意味ですか?
検索しようにも何て検索したらいいか分からなくて困ってます。
よろしくお願いします。
733デフォルトの名無しさん:2008/01/02(水) 15:49:51
x = MIN(x,y);
734デフォルトの名無しさん:2008/01/02(水) 15:53:27
三項演算子でググレ
735デフォルトの名無しさん:2008/01/02(水) 15:57:49
C#リファレンスでは?:演算子または条件演算子
736732:2008/01/02(水) 16:00:33
>>733
>>734
>>735
分かりました、ありがとうございます。
737デフォルトの名無しさん:2008/01/02(水) 17:02:11
もしかして、ButtonのMouseClickイベントって、ボタンを右クリックしても発生しなかったりします?
左クリックだと発生してるんですが…。
Buttonで右クリックを判断したいときってどうすればいいでしょうか?
738デフォルトの名無しさん:2008/01/02(水) 17:07:35
え?くるだろ?
739デフォルトの名無しさん:2008/01/02(水) 17:21:07
>>738
MouseClickイベントの中で、ログファイルに( MouseEventArgs ) e.Button.ToString()
をはき出させるようにして、Buttonの上でかちかちやって見たんですが、
Leftしかログに残ってませんでした。
740デフォルトの名無しさん:2008/01/02(水) 17:22:53
マウスの右ボタンが死んでる
741デフォルトの名無しさん:2008/01/02(水) 17:30:25
来ないね。
「Windows フォームにおけるマウス イベント」参照。
MouseUp 辺りで代用したら?
742デフォルトの名無しさん:2008/01/02(水) 17:32:01
ん?OSで違うのか、、つか.NET3.0だからか?
743デフォルトの名無しさん:2008/01/02(水) 17:34:10
ああ、Buttonか・・・
Buttonで右クリック取ったら問題あるだろう
自力でMouseUpでクリック発生させれば
744デフォルトの名無しさん:2008/01/02(水) 17:36:05
そもそも右じゃ引っ込まないボタンなんだから取れなくて当たり前。
質問者は何がしたいの?もしかしてMouseDownを取りたいんじゃ?
745デフォルトの名無しさん:2008/01/02(水) 18:08:05
フォームを透明にして見えなくてボタンだけ浮かせて、ボタンを右クリしたら
フォームを閉じるという動作をさせたかったのです。
MouseDownで取ることにします。
ありがとうございます。
746デフォルトの名無しさん:2008/01/02(水) 19:13:44
そのインターフェースの使い方は間違ってないか?
747デフォルトの名無しさん:2008/01/02(水) 20:34:39
>>745
MouseUpの方が違和感ないと思うぬ。
748デフォルトの名無しさん:2008/01/02(水) 20:43:44
2008の方がいいですか?
749デフォルトの名無しさん:2008/01/02(水) 20:45:00
はい
750デフォルトの名無しさん:2008/01/03(木) 05:24:58
SslStreamを使用してSSL通信するソフトを作っているのですが、
切断時にClose-Notifyを送信するにはどうすればよいのでしょうか?
単純にSslStream.close()メソッドを呼ぶといきなりFIN送信してしまいます。
751デフォルトの名無しさん:2008/01/04(金) 05:20:35
最近、構造体って全然良いことないなぁと思うようになった。
最初は、データの定義は全部構造体でやってたんだが。
値型だからa=bってやったらオブジェクトが毎回コピーされてバグも少ないと思って。
でも、構造体の中の配列とかで参照型が絶対混じるし、むしろ全部参照型にするよりややこしくなって
よけい思わぬバグを産むことにきづいた。
最近はデータの定義もほとんどclassにしてMemberwiseClone()使ってコピーと参照渡しの
使い分けができるようにした。
構造体の利点ってローカル変数として一時的に使う場合にclassより高速ってだけで、
メソッドの参照渡し以外はコピーしかできなくて柔軟性にかけるし、ボクシングとかすると往復二回はコピーされるから参照渡しより遅くなるし。
やっぱりjavaみたいに全部参照でやった方が安全確実じゃん。
752デフォルトの名無しさん:2008/01/04(金) 05:45:21
CからC#に移ったら継承でつまづきました。

class Class1
{
 public string x = "x";
 public string Get()
 {
  return x;
 }
}

class Class2 : Class1
{
 public string x = "y";
}

とすると、

Class2 class2 = new Class2();
MessageBox.Show("Get():" + class2.Get());
MessageBox.Show(".x :" +class2.x);

の結果が、
Get():x
.x :y
となります。Get():y となる様にするにはどうしたらよいでしょう?
継承したクラスの中のメソッドで継承元と違う値を使いたいのです。
virtual,override,newと試してみたのですが望む結果になりません。
753デフォルトの名無しさん:2008/01/04(金) 05:50:59
>>752
class Class2 : Class1 {
public Class2() {
base.x = "y";
}
}
754デフォルトの名無しさん:2008/01/04(金) 05:55:09
>>752
オーバーライドでできるはずだが
class2の中で
 public override string Get()
 {
  return this.x;
 }
755デフォルトの名無しさん:2008/01/04(金) 06:18:14
>>753,754
朝っぱらからありがとうございます。どっちの方法でもいけました。
ただ、今回の場合、実際にはGet()の中に長めのコードが書いてあり、その中の1つの変数だけを
変更して使用したいのでbase.xの方でやってみます。
何時間も調べてわからなかったのでほんとに助かりました。まだ調べるためのキーワードすら
うまく選べない状態です。
名前が似てるから簡単にわかりそうと思って始めたのに、ぜんぜん違うもんですね。
756デフォルトの名無しさん:2008/01/04(金) 06:33:55
途中でxを変更しても追従できないけどいいのか?
xをprotected virtualなプロパティにして派生クラスでオーバーライドすれば?
757デフォルトの名無しさん:2008/01/04(金) 09:06:22
>>756
今回の場合、途中で変更しないので問題ありません。が、変更不可能とは思っていませんでした。
正直いいまして言葉の意味がさっぱりわからないのですが、いまからじっくり調べてみたいと思います。
758デフォルトの名無しさん:2008/01/04(金) 09:21:45
フィールドをvirtualに出来ないのはC++も一緒だと思ったけど。
C++でも隠蔽すればこれと同じ問題がおきるだろ?
759デフォルトの名無しさん:2008/01/04(金) 10:00:59
>>751
確か、MS自信の方針でも、
サイズが数バイト以下で、絶対継承しないと分かってて、
MemberwiseClone 相当のことをよっぽど頻繁にする場合を除いて、
構造体は使わない。
760デフォルトの名無しさん:2008/01/04(金) 10:12:20
あと使うとするとP/Invokeがらみくらいか。
761デフォルトの名無しさん:2008/01/04(金) 10:19:49
P/Invokeでも大抵の場合classで事足りるけどね
762デフォルトの名無しさん:2008/01/04(金) 13:12:22
ベクトル型をクラスで作ったら死ぬけど
そういう特殊な用途に限るな
763デフォルトの名無しさん:2008/01/04(金) 14:53:53
まあ値なら値型で表現するのは当然だしな
固定小数点数型とか
764デフォルトの名無しさん:2008/01/04(金) 16:00:36
Cで下のように構造体に前後のポインタ持たせてたりしたやつって
C#だとどういう実装がいいのかな?
配列を動的に増やすと部分削除が気持ち悪いんだけど

struct hoge{
    char hogehoge[1];
    hoge *beforptr;
    hoge *nextptr;
};
765デフォルトの名無しさん:2008/01/04(金) 16:06:25
LinkedList使えば
766デフォルトの名無しさん:2008/01/04(金) 16:07:39
自分でやるなら構造体じゃなくてクラスを使う
でもLinkedList優先
767デフォルトの名無しさん:2008/01/04(金) 18:23:22
あるprotected struct hogeをメンバに持つクラスAがあり、それを継承したBがあります。
Aのhogeは宣言時に初期化されていません。
そこで、Bのメソッドの中で、hogeが初期化されてるかどうかを知りたいのですが、
なにか良い方法はあるでしょうか。
クラスではないのでnullで判定できないので…。Javascriptでいうところのundefのような
ものはないでしょうか。
768デフォルトの名無しさん:2008/01/04(金) 18:30:14
メンバの構造体のインスタンスは自動で規定値に初期化されるけどそういうことではない?

Aをいじれるんだったら、hoge? (Nullable<hoge>)を使うか、
Aに初期化されたかどうかのフラグを付ける
769デフォルトの名無しさん:2008/01/04(金) 19:45:43
>>768
> メンバの構造体のインスタンスは自動で規定値に初期化されるけどそういうことではない?

お、そうなんですか
知りませんでした。ありがとうございます。
770デフォルトの名無しさん:2008/01/05(土) 02:02:06
C#の#はC++にさらに++を付けたため、
++
++ = #
となったと聞いたのですが、本当なのでしょうか?
771デフォルトの名無しさん:2008/01/05(土) 02:30:51
その通りです

ちなみに#(ナンバー)と書いてシャープと発音するのは
C#の七不思議のひとつです
772デフォルトの名無しさん:2008/01/05(土) 03:11:45
# が ++++ に見えるって言うのは後付じゃなかったっけ?
C# 以外にもいくつか候補があったけど # が ++++ に見えるから C# にしたって。

ナンバーをシャープの代用にするのはよくあること。
773デフォルトの名無しさん:2008/01/05(土) 03:15:15
774デフォルトの名無しさん:2008/01/05(土) 11:51:12
皆さんありがとうございます。本当だったんですね。
>「COOL」(C like Object Oriented Language:Cライクなオブジェクト指向言語。クール)
これもかなりハイセンスですね。
775デフォルトの名無しさん:2008/01/05(土) 15:58:14
インデクサを持つクラスの要素の入れ替えを行おうとAのようなメソッドに値を渡そうとしたのですが、
「プロパティまたはインデクサを out か ref のパラメータとして渡すことはできません。」
と警告を受けてしまいました。
インスタンスとインデックスを渡して変更しようと思いBのようなメソッドを作成したのですが、
「角かっこ [] 付きインデックスを 'T' 型の式に適用することはできません。」
といわれてしまい、やはりうまくいきません。
インデクサを持つクラスでも利用可能なように拡張するためには、これをどう変更したらいいのでしょうか?

// A
public static void Swap<T>(ref T LeftParam, ref T RightParam)
{
  T temp;
  temp = LeftParam;
  LeftParam = RightParam;
  RightParam = temp;
}

// B
public static void Swap<T>(T Target, int LeftIndex, int RightIndex) {
  T temp;
  temp = Target[LeftIndex];
  Target[LeftIndex] = Target[RightIndex];
  Target[RightIndex] = temp;
}
776デフォルトの名無しさん:2008/01/05(土) 16:07:28
>>775
無理。諦めれ。
777デフォルトの名無しさん:2008/01/05(土) 16:35:32
>>775
Aはインデックサだけでなくプロパティは全部ダメだろ。
BはTがインデックサをもつクラスの型なのかインデックサが返す(設定できる)値の型なのか混乱しとるよ。
778デフォルトの名無しさん:2008/01/05(土) 17:57:45
>>775
一般のインデクサは諦めて、Bの引数の型をIList<T>にすれば?
大抵それで事足りる
779デフォルトの名無しさん:2008/01/05(土) 19:33:42
そもそも俺には775の言ってる意味がよーわからんのだが・・・。
ここって正月休みの間に俺以外みんなエスパーになったんだろうか
780デフォルトの名無しさん:2008/01/05(土) 19:57:44
インデクサに対応したSwapって無理?ってだけだろ?
さすがにこれはわかるよ
781デフォルトの名無しさん:2008/01/05(土) 20:01:57
すごーく遅くなってもいいならリフレクション使えばできるけど
782デフォルトの名無しさん:2008/01/05(土) 20:05:50
>>776-780
沢山のレスありがとうございます。
何故かインターフェースには頭がいきませんで、778さんの方法でとりあえずは問題なく動くものになりました。
ただ一般のインデクサには無理なんですね、これはちょっと意外です。
なんにせよ想定した動作は実現できました。ありがとうございました。

>>779
わかりづらい表現で申し訳ございません。
780さんの仰るとおりです。簡潔に表現できるよう精進します。
783デフォルトの名無しさん:2008/01/05(土) 22:56:21
VBからなら呼べるぜ
インデクサは無理だったかも知れんが。
784デフォルトの名無しさん:2008/01/05(土) 23:07:17
Swapごときに遅延バインディングしてたらパフォーマンスがえらいことになるな
785デフォルトの名無しさん:2008/01/05(土) 23:14:19
実際にはコンパイルエラーになるが
hoge[n]がindexerとすると
x = hoge[n] は x = hoge.get_Item(n)
hoge[n] = x は hoge.set_Item(n, x)
になるんで、ref hoge[n] はナンセンスということになる。
786デフォルトの名無しさん:2008/01/05(土) 23:24:50
今までVBAしかさわったことのない初心者ですが

VBでもできたdebug.printに当たるものがc#ではどの記述になるのでしょうか?
つまらない質問ですけど教えてください
787デフォルトの名無しさん:2008/01/05(土) 23:28:20
Debug.Print
Debug.WriteLine
788デフォルトの名無しさん:2008/01/05(土) 23:28:49
>>786
using System.Dianogstics; があれば Debug.Printがつかえるぞっと。
ただ一応、Debug.WriteLineの方をすすめる。
789デフォルトの名無しさん:2008/01/05(土) 23:34:11
>>785
VBならシンタックスシュガーでそのナンセンスなこともしてるな。
790デフォルトの名無しさん:2008/01/05(土) 23:35:50
つうかぶっちゃけナンセンスとかどうでもいいし。
791デフォルトの名無しさん:2008/01/05(土) 23:37:03
プロパティに+=演算とかもできたよな確か。
792デフォルトの名無しさん:2008/01/05(土) 23:39:18
そういうことやってる言語は
get して set する形に変換されて実行されたはず。
793デフォルトの名無しさん:2008/01/05(土) 23:54:35
なんだ結局これでいいじゃん
T t1 = Target[0]; T t2 = Target[1];
Swap(t1, t2);
Target[0] = t1; Target[1] = t2;


・・・・なんか無駄なことをしてる気がする。
794デフォルトの名無しさん:2008/01/06(日) 13:21:53
static void Swap<TList, TIndex, TItem>(TList left, TIndex leftIndex, TList right, TIndex rightIndex, Func<TList, TIndex, TItem> get, Action<TList, TIndex, TItem> set) {
 TItem tmp = get(left, leftIndex);
 set(left, leftIndex, get(right, rightIndex));
 set(right, rightIndex, tmp);
}
使い方:Swap(Target, 0, Target, 1, (a, i) => a[i], (a, i, item) => a[i] = item);
じゃあこれで
795デフォルトの名無しさん:2008/01/06(日) 14:06:09
バックグラウンドで実行とかいうのやると動かなくなるorz

それはともかく質問
C++をちょっとかじった身でC#に入りました。
とりあえずデザイナとデフォのフォームのコンストラクタに書いてあったInitializeなんちゃらという辺りのとこも把握
エントリポイントはあえて言うならデフォでいうところのForm1_Loadかというところも把握

C++ですとクラスを宣言定義し、クラスの宣言定義とは別のmain()なんかの中でオブジェクト作ってそいつらを使って・・・という感じですが
C#だとクラスの中でそれを・・・となんだかこんがらがっています

とりあえずForm1_Loadをmain()と考え、Form1クラスの外で色々なクラスを宣言定義していくのがベターなのでしょうか?
要するForm1_LoadをエントリポイントとしてC++ぽくやっていいんでしょうか?

まずC++もかじった程度なのでそこに認識の間違いがあるかもしれないですがorz
796デフォルトの名無しさん:2008/01/06(日) 14:10:18
イベント駆動型ってのを知らないとな
それとその考えでいくとForm1クラスをどうこうするときつまりそうだ
797デフォルトの名無しさん:2008/01/06(日) 14:10:39
>>795
C#のエントリポイントもMainだよ。
798デフォルトの名無しさん:2008/01/06(日) 14:10:56
エントリポイントはProgram.csにあるMainメソッド
そこでForm1のインスタンスが作られてメッセージループが開始される
799デフォルトの名無しさん:2008/01/06(日) 14:11:08
>>795
とりあえずコンソールアプリケーションから作ってみろ
800デフォルトの名無しさん:2008/01/06(日) 14:14:36
WPFではMainも隠されるようになってるな
801デフォルトの名無しさん:2008/01/06(日) 14:14:44
文面から、言語云々の前にWindowsのソフトを作ったことがないように思える。
〜をされたら〜をするというイベントドリブンの考え方になってる?

って書いてたら似たようなレスが既にいっぱいついてるな
802デフォルトの名無しさん:2008/01/06(日) 14:15:03
ああ、なるほどorz
なんか違和感があると思ったらそういうことだったんですね
いまいちうまく解説サイトが見つからないので本でも買ってきて基礎からやりなおしてみます
803デフォルトの名無しさん:2008/01/06(日) 14:33:02
Windowsアプリケーション、確かに作ったことないですorzそっちかあ
804デフォルトの名無しさん:2008/01/06(日) 14:38:26
this.Load += new System.EventHandler(this.Form1_Load);
こういうので使う人のアクションに応じて動いたりするのをどうこうするってことかな・・
805デフォルトの名無しさん:2008/01/06(日) 16:04:55
ジェネリックのリストを利用して、データの管理を行っています
指定したidが、現在のリストの長さよりも長いとき、Capacityプロパティを利用してリストの長さを伸ばして、そこにデータを代入しようとしています。
やってみると、ArgumentOutOfRangeExceptionが表示されてプログラムが停止します。
正直これであっていると思うのに、.NetFrameworkのバグでしょうか?

if(ChangeList.Capacity>id)
ChangeList.Capacity=id;
ChangeList[id]=object;
806デフォルトの名無しさん:2008/01/06(日) 16:08:39
>>805
Hint: 0-origin
807デフォルトの名無しさん:2008/01/06(日) 16:10:13
>>805
>正直これであっていると思うのに、.NetFrameworkのバグでしょうか? 

その自信はどこから来るのか知りたい。
なんのリストを使ってるか知らないけど、大きさ10なら添え字の範囲は0−9だ。10は範囲外。
808デフォルトの名無しさん:2008/01/06(日) 16:11:33
その使い方でリスト使う意味がわからん
配列使っても一緒だろ
809デフォルトの名無しさん:2008/01/06(日) 16:15:09
配列はリサイズできないじゃん
810デフォルトの名無しさん:2008/01/06(日) 16:15:44
Array.Resize
811デフォルトの名無しさん:2008/01/06(日) 16:17:02
参照が取り替えられるから、別のところで参照してたら面倒だろう。
812デフォルトの名無しさん:2008/01/06(日) 16:19:38
ああそれはそうだな
813デフォルトの名無しさん:2008/01/06(日) 17:11:54
>>805
言ってることとコードが合ってなくね?

それにまずCapacityの意味が思ってるのとは違うよ
単に内的にサイズ拡張しないでも追加できる数にすぎないよ
.Length-1を越えて添え字アクセスしたらそりゃArgumentOutOfRangeExceptionが出るわな

Dictionary使えば?
814デフォルトの名無しさん:2008/01/06(日) 17:16:37
×Length-1を越えて
○Count-1を越えて

ですた
815807:2008/01/06(日) 17:41:09
すいません、やっぱり私の間違いでした。
反省してきます。
816デフォルトの名無しさん:2008/01/06(日) 17:55:20
初心者なら誰もが通る道だな>処理系のバグを疑う
817デフォルトの名無しさん:2008/01/06(日) 20:41:12
ttp://jp.rubyist.net/magazine/?0021-RubyWithCSharp
↑を参考に、C# から Ruby を動かしています。
rb_funcall で Ruby のメソッドを呼び出したとき、
メソッド内で例外が発生すると、
System.AccessViolationException が発生して、
アプリが終了してします(try{}catchでは補足できません)。

VALUE result = Ruby.rb_protect(delegate(VALUE self)
{
 return Ruby.rb_funcall(Ruby.Qnil, Ruby.rb_intern(name), Param1, Param2);
} Ruby.Qnil, ref state);

としてみましたが、結果は同様でした。

rb_funcall により Ruby 内で発生した例外を C# 側で補足することはできないでしょうか?
818デフォルトの名無しさん:2008/01/06(日) 21:43:13
>>817
Ruby側(C#とのインターフェースになるMethod)で例外処理して処理結果コード返すのが安心で普通だと俺は思うけど・・・
819デフォルトの名無しさん:2008/01/06(日) 21:53:09
よく知らないけど、CならそのRubyの例外を捕捉できるの?
できるんだったらC++/CLIでラップしてみるとか
820デフォルトの名無しさん:2008/01/07(月) 00:00:10
レスありがとうございます。

>>818
現時点でも実行速度に問題ありなので、Ruby側の処理はこれ以上増やしたくありません。
でも、アプリ落ちるよりはいいので、対策がみつからなかったら
その手でいこうと思います。

>>819
Cでなら817のように書くことで例外を補足できるようです。
(rb_protect のなかで setjmp、rb_funcallのなかでlongjmpするようです)
ただそのためだけにdllを増やしたくない、
できれば、C#だけで処理を行いたいというところです。

p/invoke って setjmp/longjmp する関数ってうまく扱えないんでしょうか?
(ぐぐりましたがよくわかりませんでした)
821デフォルトの名無しさん:2008/01/07(月) 00:58:18
c#2008と2005で大きく変わったところを教えてください
822デフォルトの名無しさん:2008/01/07(月) 01:00:02
>>821
下一桁目
823デフォルトの名無しさん:2008/01/07(月) 01:15:05
スクリーン最前面に文字列のみを表示させるプログラムを作りたいのですが、
見やすいように縁取りして表示させたいです。

で、下記のコードでやるとペンの縁取り分が表示に含まれません。
ペンの描画範囲までRegionを広げる方法ないでしょうか?

Region指定ではなく、TransparencyKeyでウィンドウ背景色を
指定すると、理想の表示になるのですが、
レイヤードウィンドウになってしまい、
他の利用ソフトとの相性が悪いようで避けたいです。

Font font = new Font("MS Pゴシック", 72);
GraphicsPath gp = new GraphicsPath();
gp.AddString("テスト", font.FontFamily,
 (int)font.Style, font.Height, new Point(0, 0), StringFormat.GenericDefault);

Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black);
pen.Width = 5;
g.DrawPath(pen, gp);
g.FillPath(Brushes.White, gp);
this.Region = new Region(gp);
824デフォルトの名無しさん:2008/01/07(月) 01:28:00
AutoResetEventクラスに関する質問です。
このクラスのWaitOne()は、このメソッドを呼び出したスレッド(Aとする)をSet()が呼ばれるまで止める役割があるんですよね?
スレッドAが止まっている時のThreadStateはどうなっているのでしょうか?

というのも、別のスレッドで、
while ((スレッドA.ThreadState & ThreadState.Running) == ThreadState.Running)
  Thread.Sleep(1);
と記述したところ、プログラムが止まってしまったもので。
825デフォルトの名無しさん:2008/01/07(月) 01:39:41
>>824
そら、Runningだからだろう 常考

ちょっと考えれば、WaitOne()で止まってる時にどんなステータスになっているのかを
デバッガで見てみるなり表示するなりしてみれば人に聞かなくてもわかるだろ・・・
826デフォルトの名無しさん:2008/01/07(月) 01:47:30
>>817
>>820
rb_protect版を試してみたけどAccessViolationException起きなかったよ。
もうちょい再現方法プリーズ。
827デフォルトの名無しさん:2008/01/07(月) 02:51:38
>>825
もしかしてRunningってスレッドが終了した後でもStartする前でもない場合全部Runningなのか・・・
勘違いしてました。

となるとステータスはbackground と WaitSleepJoin だったので、WaitSleepJoinを!=で比較してみます。
828デフォルトの名無しさん:2008/01/07(月) 15:00:54
form1内に設置されたボタンをクリックすると、新規フォームform2が生成されるようにしたいです
どうしたらいいでしょうか?

開発環境はvisual C# 2005です
829デフォルトの名無しさん:2008/01/07(月) 15:04:36
>>828
Form2 を作ってあるのなら、ボタンのハンドラで new して Show() とか
830デフォルトの名無しさん:2008/01/07(月) 15:06:43
>>829
ごめん、こんなかに書いてみて。
form2はクラスの追加から作ればいいですか?

private void button1_Click(object sender, EventArgs e)
{


}
831デフォルトの名無しさん:2008/01/07(月) 15:08:03
>>830
プロジェクト右クリックの追加でWindowsフォームってあるべ。

Form2 form2 = new Form2();
form2.Show();

一番簡単な例
832デフォルトの名無しさん:2008/01/07(月) 15:13:45
>>832
ありがとう。
例のコードを
private void button1_Click(object sender, EventArgs e)
の中にいれてみた。ボタン1をクリックしてもformが生成されるんだけど
form1をクリックしてもfrom2が複数生成されちゃう・・・
833デフォルトの名無しさん:2008/01/07(月) 15:19:46
Form1のClickイベントを調べる仕事に戻るんだ
834デフォルトの名無しさん:2008/01/07(月) 15:29:34
>>833
解決

form2が表示されてる間、form1をクリックしてもform2のタイトルバーが点滅して
アクティブウィンドウの変更を許可しないプロパティってどれだ?
835デフォルトの名無しさん:2008/01/07(月) 15:32:02
あと、ボタン1を何回もクリックして何個もform2が生成されるんだが、これも1個だけにしたいんだ。
836デフォルトの名無しさん:2008/01/07(月) 15:32:29
プロパティではなく、Show()の代わりにShowDialog()
837デフォルトの名無しさん:2008/01/07(月) 15:34:03
>>834
その調子で全部聞くつもりかよ。
Show()の代わりに、Showdialog(this) とか。
838デフォルトの名無しさん:2008/01/07(月) 15:34:22
ShowDialogを使うと、Form2を閉じるまでForm1を操作できないから、>>835も解決
839デフォルトの名無しさん:2008/01/07(月) 15:37:12
少しは自分でヘルプを見ろよ
Show()を調べればすぐとなりにあるだろうが

とっかかりを聞くのはいいけど、
そのペースで完成までずっと書き込み続ける気かよ
840デフォルトの名無しさん:2008/01/07(月) 15:37:37
>>837
ごめん、ぐぐるより楽だったからつい。
つかvisual C#の解説ページあったら教えてほしい

ぐぐったけどあんまり見つからないんだよね
841デフォルトの名無しさん:2008/01/07(月) 15:44:05
842デフォルトの名無しさん:2008/01/07(月) 15:51:10
ITProのやつだっけ?評判よかったの
843デフォルトの名無しさん:2008/01/07(月) 15:55:34
@ITのほうか、似てるからよくわからんw
844デフォルトの名無しさん:2008/01/07(月) 15:58:48
ため口でワロタ
まさにゆとりw
845デフォルトの名無しさん:2008/01/07(月) 16:33:28
846デフォルトの名無しさん:2008/01/07(月) 20:38:00
まさにゆとりだけど
なんかほのぼのしてるのはなんでだ
847デフォルトの名無しさん:2008/01/07(月) 20:41:16
意味がわからん。
お前さんが一人で「ゆとり」だの「ほのぼの」だの意味不明なこと言ってるだけだろ。
848デフォルトの名無しさん:2008/01/07(月) 20:46:11
自覚ありならこんなはずないだろ
開き直るのも自覚なしを嘲笑われるのも子供の特権だよ
849デフォルトの名無しさん:2008/01/07(月) 20:46:58
>>847
本人乙w
850デフォルトの名無しさん:2008/01/07(月) 22:04:45
>>826
def foo
s="FOO"+nil
end

↑を rb_eval_string_protect しておいて、

>>817 を使って、
foo を起動するとこちらでは落ちます。。。orz
851デフォルトの名無しさん:2008/01/07(月) 22:45:19
テンプレ読めと書こうと思ったら、
いつのまにかテンプレが…

このスレだけなのか?
852デフォルトの名無しさん:2008/01/07(月) 22:49:01
MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html

宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html
リンク生きているのか?

>>840
ゆとり君へ、上を全部読んでから出直せやこら。
853デフォルトの名無しさん:2008/01/07(月) 22:58:37
Part19からテンプレに外部リンクがなくなってるな
854デフォルトの名無しさん:2008/01/07(月) 23:00:39
こんだけあれば本なくてもよさそう?最初うちは
855デフォルトの名無しさん:2008/01/07(月) 23:03:13
自分で書いといてなんだが、1,2番目は読み終われない気がする。
856デフォルトの名無しさん:2008/01/07(月) 23:30:26
軽く荒れてるようですが・・・

folderbrowserdialogで選択したディレクトリのフルパスを文字列として取得して
テキストボックスに表示するにはどうしたらよいでしょうか

ご教授お願いいたします
857デフォルトの名無しさん:2008/01/07(月) 23:43:43
this.textBox1.Text = fbd.SelectedPath;
858デフォルトの名無しさん:2008/01/07(月) 23:44:03
どなたかLINQ to XMLの性能を測定されたかたいらっしゃいませんか?

XmlDocumentをXPathを使って色々処理する場合と
XDocumentをLINQを使って処理する場合でどのぐらい
実行速度に差があるのでしょう?

内部でXPathを使った場合とほぼ同等のコードに変換されているなら
ぜひLINQのほうを使いたいのですが・・・
859デフォルトの名無しさん:2008/01/07(月) 23:53:26
あれ。もう .NET のベンチマークって公開してもいいことになったんだっけ?
860デフォルトの名無しさん:2008/01/07(月) 23:54:32
C#で作るソフトの外観が味気なくて使う気がしないと嫁に文句を言われています。
ウィンドウズメディアプレーヤーみたいに、見た目がいい感じのソフトを作るのは
C#でも可能なのでしょうか?
スキンで外観変更できるソフトとか見かけるけど、どうやってるんだろう?
861デフォルトの名無しさん:2008/01/07(月) 23:58:26
WPF使え
862デフォルトの名無しさん:2008/01/07(月) 23:58:53
863デフォルトの名無しさん:2008/01/08(火) 00:01:02
初心者ですが教えてください。
これで詰まって3時間あまり。。。

ArrayListにクラスのインスタンスを追加して
foreach文で追加したインスタンスのメンバ(Item)に
アクセスするようにした場合はコンパイルが通り期待に通り動作するのですが
ArrayList[0].Itemのように個別にインスタンスのメンバに
アクセスした場合はコンパイルエラー「'object' に 'Item' の定義がありません。」となってしまいます。

ArrayListに追加したインスタンスのメンバの値を個別に取得するにはどうすればよいでしょうか?
お願いします。
864デフォルトの名無しさん:2008/01/08(火) 00:04:23
キャスト
865デフォルトの名無しさん:2008/01/08(火) 00:05:13
>>863
((Hoge)ArrayList[0]).Item みたいにキャスト。
もしくは List<> を使う。
866863:2008/01/08(火) 00:06:36
例) こんな感じです
class Item
{
public string Item1;
}
class MainClass
{
public static void Main()
{
ArrayList Items = new ArrayList();

for (int i = 0; i < 10; i++)
{
Item item = new Item();
item.Item1 = i + " これはItem1";
Items.Add(item);
}
Console.WriteLine(Items[0].Item1); // ←これではコンパイルエラー「'object' に 'Item1' の定義がありません。」となってしまいます。

// foreach (Item i in Items)
// {
// Console.WriteLine(i.Item1); ←これではコンパイル通ります。
// }
}
}
867デフォルトの名無しさん:2008/01/08(火) 00:07:21
>>860
それを自分で作れるかどうかが嫁の尊敬を勝ち取れるかどうかにかかってる。
がんがれ。

C#で可能なのかという話なら、可能だ。
868デフォルトの名無しさん:2008/01/08(火) 00:11:04
>>866
本か何かでArrayList
869868:2008/01/08(火) 00:11:59
すまん
本か何かでArrayList使うと書いてあるんだったら仕方ないけど、
実際に自分でなんか作るときはArrayListは忘れていいよ
List<T>だけでおk
870863:2008/01/08(火) 00:15:39
ありがとうございました。

Console.WriteLine(((Item)Items[0]).Item1);

とすることで解決できました。

List<>も使ってみたいと思います。
本当ありがとうございました。
871デフォルトの名無しさん:2008/01/08(火) 00:18:29
>>861
WPF知らなかったので調べてみました。
WPFには、.NET Framework3.0以上が必要のようですね。
Windows2000でも動作させたいので無理みたいです。

>>867
嫁の尊敬は別に欲しくないんですが、出されたお題をクリアできないのはむかつくので調べてるところです。
つーか、C#で、嫁にスキンを適用出来るとありがたいのですが。
872デフォルトの名無しさん:2008/01/08(火) 00:20:39
>>871
残念ながらC#で嫁にスキン適用は不可能。
嫁をアンインストしてクリーンインストするしかない。
873デフォルトの名無しさん:2008/01/08(火) 00:24:26
子供できまくり…
874デフォルトの名無しさん:2008/01/08(火) 00:33:13
>>870
なんだろう。ネーミングセンスが悪くないか?
Itemsって使わないほうがいいと思うよ。
それにItemのなかにItem1ってメンバー作るのもどうかと。
875デフォルトの名無しさん:2008/01/08(火) 00:35:41
>>850

static void Main(string[] args)
{
VALUE state = 0;
Ruby.ruby_init();
const string funcdef =
"def foo\n" +
"s=\"FOO\"+nil\n"+
"end";
Ruby.rb_eval_string_protect(funcdef, ref state);
VALUE hoge = Ruby.rb_intern("hoge");
Ruby.CallbackArg0 func = arg => Ruby.rb_funcall(Ruby.Qnil, hoge, 0, 0);
VALUE result = Ruby.rb_protect(func, Ruby.Qnil, ref state);
GC.KeepAlive(func);
}

これで再現しなかったよ。

msvcrt-ruby18.dll(ruby-1.8.5-20061204-i386-mswin32.zip) + .NET 3.5 + Vista (x86)
876875:2008/01/08(火) 00:46:17
>>850
あーもしかしてと思ってと思って>>875のコードから
GC.KeepAlive(func); 抜いたら確かにAccessViolationExceptionおきるね。
言ってるのはこれのことじゃろか。

P/Invokeにデリゲートを渡す場合、そのデリゲートの寿命管理は.NET側の責任。
実は元のるびま記事にも書いてある。
ttp://jp.rubyist.net/magazine/?0021-RubyWithCSharp#fm05
877デフォルトの名無しさん:2008/01/08(火) 01:22:13
>>876
気になってたんで乙wやっぱりGC周りか。
でも要求はRuby側での例外をC#で補足じゃないのか?
878デフォルトの名無しさん:2008/01/08(火) 02:46:58
WindowsFormsに比べてWPFってなんであんなにショボイの?
あれじゃあ使い物にならないじゃん。
879デフォルトの名無しさん:2008/01/08(火) 06:59:38
menuStripに『ファイルを開く』の項目を作ってファイル操作したんですが、
メニュー項目が自動で閉じてくれないので邪魔です。
フォームのどこか別の場所をクリックするまでそのまんま。
自動で閉じるようにする設定とかないんでしょうか?探してみたけど見つからず...
880デフォルトの名無しさん:2008/01/08(火) 10:32:40
visual C#ってメッセージダイアログのコントロールってないのですか?
OKボタンをクリックしたときにピコン!って音とOKダイアログを出したいのですが
881デフォルトの名無しさん:2008/01/08(火) 10:41:01
>>880
using System.Windows.Forms;

MessageBox.Show("ピコン!");
882デフォルトの名無しさん:2008/01/08(火) 10:44:46
>>879
どうやってやった?
Clickのハンドラだと閉じるけど、MouseDownだと閉じないな。
883デフォルトの名無しさん:2008/01/08(火) 11:03:41
>>882
普通にクリックで。

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
  ファイル開くよ();
}

こんだけ。
884デフォルトの名無しさん:2008/01/08(火) 11:15:15
>>882
自己解決しました。
子要素があるとダメみたい。知らなかった。
885デフォルトの名無しさん:2008/01/08(火) 12:32:20
>>884
どんな糞UIを作ろうとしてるんだよw
886デフォルトの名無しさん:2008/01/08(火) 12:58:21
『ファイル(F)』
   |
  『開く』−『Unicodeで開く』
        『ShiftJISで開く』
        『EUCで開く』

こんな感じで、『開く』をクリックすると、前回と同じエンコードで開く、というのが
やりたかったけど、メニューが閉じてくれないので、
『ファイル(F)』
   |
  『開く』
  『エンコード指定して開く』−『Unicodeで開く』
                    『ShiftJISで開く』
                    『EUCで開く』
こんな感じにしました。エンコード判別は難しそうなのでやめで。
887デフォルトの名無しさん:2008/01/08(火) 15:40:53
へたれるなw
TextEncでぐぐれ

クリックのハンドラで
フォーカスをどこかに移すとか
開く.DropDown.Close();するとかいろいろあんだろ
888デフォルトの名無しさん:2008/01/08(火) 15:45:32
でもサブメニューが開く項目をクリックできるなんてこと
見たことないから886上のようなことはやめてほしい、個人的には。
889デフォルトの名無しさん:2008/01/08(火) 15:52:19
メニューに▲マークがあったら、まったくクリックしないでサブメニュー出してて
クリックできることに最後まで気が付かないか、サブメニューを早く出そうとして
クリックして、いきなりダイアログが出て驚くかどっちかだろうなw
890デフォルトの名無しさん:2008/01/08(火) 18:17:54
和洋問わず、C#で DirectSound3Dのライブラリってご存知の方おられます?
すんません、楽しようとしています。
891デフォルトの名無しさん:2008/01/08(火) 19:11:25
MDX
892デフォルトの名無しさん:2008/01/08(火) 19:15:54
死につつあるMDXの代替としてこういうのもある
http://slimdx.mdxinfo.com/wiki/index.php?title=Main_Page
893デフォルトの名無しさん:2008/01/08(火) 20:00:25
主観でいいのでC#のオヌヌメ解説本を教えてくれないか
マイクロソフト公式解説書も一杯あるし
どれがいいのか良く分からない orz
894デフォルトの名無しさん:2008/01/08(火) 20:05:15
正直どれも微妙
他言語を何か修めて、それからじっくり逆引き辞典でも買ってやるのがいんじゃないの

そこまでC#にかけるべきかは微妙
895デフォルトの名無しさん:2008/01/08(火) 21:10:35
こんばんは

Visual C# Express EditonではWindowsサービス
アプリケーションは作れないものですか?
896895:2008/01/08(火) 21:11:14
<<895
2005です
897デフォルトの名無しさん:2008/01/08(火) 21:15:47
テンプレートが無いだけ
作れる
898895:2008/01/08(火) 21:19:07
>>897
ご回答ありがとうございます

希望が持てました
899デフォルトの名無しさん:2008/01/08(火) 21:32:27
C#の基本的な文法の勉強が終わったのですが
どんなソフトウェア作成にチャレンジすべきですかね?
勉強がてらなんかまとまったソフトウェアが作りたいのですが、
迷っています。
みなさんはいろいろな言語を覚えたてのころ
どんなソフトウェアをつくりましたか?
おしえてください
900デフォルトの名無しさん:2008/01/08(火) 21:40:31
仕事に使うなら蔵書管理とか家計簿
趣味やゲームに使うならもぐらたたきかじゃんけんゲーム
901デフォルトの名無しさん:2008/01/08(火) 21:40:35
>>891,892 d!
やっぱりマネージ怒を使うんスすね!割とお手軽に使えそうなんでよかったです
でも2.0でXNAに行ってしまったんですね・・・
902デフォルトの名無しさん:2008/01/08(火) 21:56:56
コマンドラインアプリでも作れば隠者ね。
903デフォルトの名無しさん:2008/01/08(火) 22:01:01
基礎体力付けるなら簡単なゲームがいいと思うよ
904デフォルトの名無しさん:2008/01/08(火) 22:44:21
オセロや将棋作ったよ。
905デフォルトの名無しさん:2008/01/08(火) 23:12:37
858ですが、今日LINQの性能テストしてみました。
予想に反してXPathを使うよりもLINQのほうが早い…。中でどうなってんだか。

XmlNodeList nodes = doc.DocumentElement.SelectNodes("root[contains(elm, 'test')]");
int count = nodes.Count;



var nodes = from elm in doc.Root.Elements("elm")
      where ((string)elm).Contains('test')
      select elm;
int count = nodes.Count();

だったら下のほうが1割ぐらい早かったです。
LINQ初心者なんで、下の文がベストかどうかは知りませんが。
906デフォルトの名無しさん:2008/01/08(火) 23:23:39
XPath一つ試したところでなんの性能評価にもならんな
907デフォルトの名無しさん:2008/01/08(火) 23:25:18
List.ForEachみたいなメソッドはEnumerableクラスにないの?
foreach書くのが面倒になってきた
908デフォルトの名無しさん:2008/01/08(火) 23:29:49
visual C#ってMySQLとは通信できないの?
909デフォルトの名無しさん:2008/01/08(火) 23:30:13
できますよ
910デフォルトの名無しさん:2008/01/08(火) 23:40:36
>>907
TakeWhileじゃダメか
911デフォルトの名無しさん:2008/01/08(火) 23:59:21
Form1.cs内のボタンクリックイベント内に作ったコントロールのプロパティ、もしくはstring文字列に
form2.csからアクセスするにはどうしたらどうしたらよいでしょうか?
912デフォルトの名無しさん:2008/01/09(水) 00:00:53
>>909
visual studio 2005 Express Editionでも対応してる?
というか、この開発環境のデータベースマネージャみたいなのから接続できないの?
913デフォルトの名無しさん:2008/01/09(水) 00:06:30
>>911
プロパティやイベントの意味が解ってないんじゃない?
もうちょっとC#自体の勉強した方が
914デフォルトの名無しさん:2008/01/09(水) 00:10:04
>>913
書き方がまずかったかなぁ、まだ勉強して3日目です。
From1の中のテキストボックスのtextの文字列を
Form2の中のある部分で参照したいんです。別に値を変更とかはしなくていいです。
足りない要素があるならいってください、調べて追加します。
915デフォルトの名無しさん:2008/01/09(水) 00:15:34
public string MyText {
 get { return this.textBox1.Text; }
}
こういうプロパティをForm1に追加する。
テキストボックスをpublicにするという手もあるけど良くない。
Form2に定義したプロパティやコンストラクタでForm2にForm1のインスタンスへの参照を渡す。
Form1のインスタンスへの参照がform1という変数に入ってるとして、Form2内から
form1.MyText とすれば取得できる。
916デフォルトの名無しさん:2008/01/09(水) 00:26:04
>>915
>Form2に定義したプロパティやコンストラクタでForm2にForm1のインスタンスへの参照を渡す

ごめんなさい、ここをもう少し詳しく教えていただけないでしょうか?
オブジェクト指向は苦手でして・・・
917デフォルトの名無しさん:2008/01/09(水) 00:37:21
>>916
まずはオブジェクト指向について少しは勉強することをお勧めするよ。
基本的な用語の意味がわからんと、質問もとんちんかんだし
回答されても理解できない。
918デフォルトの名無しさん:2008/01/09(水) 01:12:21
>>917
それはよくないアドバイスだと思うな。
初心者は、わからない部分はとりあえずおまじないだと思って
作りたいものをどうにかして作ることから初めて、
動くプログラムを何個か作ってからオブジェクト指向について
勉強するっていう流れのほうがいい。

GOFのデザインパターンを、オブジェクト指向を覚えたてのプログラマが
学んでも眠いだけだけど、ある程度我流で何本かソフト作ってきた
人が学ぶと目からうろこだったりすることと同じさ。
919デフォルトの名無しさん:2008/01/09(水) 01:17:07
>>917
死ね
920デフォルトの名無しさん:2008/01/09(水) 01:18:40
>>919
はい死にます
921デフォルトの名無しさん:2008/01/09(水) 01:43:22
>>916
>>915はこういうこと
class Form1 {
public string MyText {
get { return this.textBox1.Text; }
}
}
class Form2 {
public Form2(Form1 f1){
this.textBox1.Text = f1.MyText;
}
}
922デフォルトの名無しさん:2008/01/09(水) 01:59:06
>>918
それも程度問題じゃないか?
いちいち言葉の意味から説明しなきゃならないようでは、どこからアドバイス
すればいいのかわからないっしょ。
とりあえず「オブジェクト指向は苦手」ということだから、「プロパティ」や「コンストラクタ」や
「インスタンス」や「参照」の意味から説明していかなきゃいけないんじゃないか?
そういう基本はチュートリアル見るなりなんなりで自分で身に着けてもらわないと
共通言語で話をすることができない。
923デフォルトの名無しさん:2008/01/09(水) 02:07:48
>>922
>>1読むか回答してからにしろ
924デフォルトの名無しさん:2008/01/09(水) 02:18:44
>>923
>>917 が回答だ。
> 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
925デフォルトの名無しさん:2008/01/09(水) 03:47:14
デザインパターンスレで、Javaのライブラリ(java.io.*)のUMLのクラス図を見て喜んでいる人がいたのですが、
私も、.NET Framework の標準ライブラリの クラス図を見て喜びたいです。

.NET Framework の標準ライブラリのUMLを公開しているサイト、
もしくは、出力できるツールなどありましたら教えてください。
926デフォルトの名無しさん:2008/01/09(水) 05:06:07
>>925
http://www.microsoft.com/japan/msdn/vstudio/products/compare/default.aspx
でVisio for Enterprise Architectsが入ってるやつ買えばおk
VisioProでもできたはずだけど持ってないので自信なしw
927デフォルトの名無しさん:2008/01/09(水) 07:31:05
>>926
VS の Teamタケエエエエエ orz
928デフォルトの名無しさん:2008/01/09(水) 09:01:25
VS2005 Pro でもいいんじゃね
929デフォルトの名無しさん:2008/01/09(水) 09:01:30
やべえMediaElement使ってみたら動画の45度回転があっさりできた
最近のビデオはみんな傾いてるから困ってたんだよなあ
930デフォルトの名無しさん:2008/01/09(水) 09:08:17
ディスプレイを傾けたほうが早い
931デフォルトの名無しさん:2008/01/09(水) 09:21:18
> 最近のビデオはみんな傾いてるから困ってたんだよなあ
???
932デフォルトの名無しさん:2008/01/09(水) 09:22:40
盗撮動画じゃね?
933デフォルトの名無しさん:2008/01/09(水) 09:28:31
>>921
丁寧にありがとうございます
ところでpublic Form2(Form1 f1){
のForm1 f1はnewとかで実体化しなくていいのでしょうか?
javaやってたのですが、その辺がC#であいまいです
934デフォルトの名無しさん:2008/01/09(水) 09:37:09
SaveFileDialogのFileNameに最初に値を入れておけば、ダイアログ表示時に保存ファイル名のところに[FileName]が
最初から書かれているってことですよね?それが出ないんですけど何が原因でしょうか?
visual studio2005で作っています
935817:2008/01/09(水) 09:40:50
>>876
テストコードまで書いていただきどうもありがとうございました。
ご指摘のとおり、デリゲートの寿命管理していなかった結果、
例外発生していました。
さらに調べた結果、

rb_funcall で例外発生
  ↓
デバッガ起動
  ↓
ローカル変数を表示しようとしてToString()呼び出し
  ↓
ToString() 内で例外発生してプログラムが落ちる。
というながれで、落ちてた原因は、rb_funcall とは関係ありませんでした orz

936デフォルトの名無しさん:2008/01/09(水) 09:54:45
>>934
ソースはどうなってる?
Form1.Designer.cs とかにFileName 設定してるとこある?
937デフォルトの名無しさん:2008/01/09(水) 09:55:55
TreeViewの任意のノードを一時的に非表示にしたいのですが、何かスマートな方法はないでしょうか。
今自分が思い付く方法としては、非表示にしたいノードをコレクションから削除し、再表示するときはコレクションに挿入するという方法なのですが。
938デフォルトの名無しさん:2008/01/09(水) 10:02:32
>>936
ソースで直接FileNameの値を入れたら思ったとおりの動作をしました。
前回まではVisual StudioのUIを通じて値を入れていたらその設定が反映されませんでした。
939デフォルトの名無しさん:2008/01/09(水) 10:50:47
>>925
UMLに似た機能としてクラスダイアグラムというものがあるけどねぇ(Std以上のエディション)。
標準ライブラリみたいにでかいものになってくると、でかすぎてエラーが発生し、
表示できない可能性大だけどね。
940デフォルトの名無しさん:2008/01/09(水) 10:56:58
似た機能というか、UMLのクラス図だろ、あれ。
941デフォルトの名無しさん:2008/01/09(水) 10:57:53
>>938
UIで入れるとDesigners.csに反映されるんだけどな、1から作っても出るようなら
調べてみたほうがいいかもね。
942デフォルトの名無しさん:2008/01/09(水) 11:30:09
クラスダイアグラムは多分期待されてるものとは全然違うだろ。
943926:2008/01/09(水) 11:40:58
>>928
VS2005 Proはもう持っていたりする

> Visio for Enterprise Architects
> F MSDN Premium と組み合わせて購入した場合、提供されます。
o.....rz

>>939-940
ウィザードから WindowsApplication 生成して、クラスダイアログを作れたけど、
標準ライブラリのクラスダイアグラムの作り方がわからん(´・ω・`)
944デフォルトの名無しさん:2008/01/09(水) 13:33:46
>>933
Form1からForm2を開くんだろ?
Form2をインスタンス化するときに
Form2 f2 = new Form2( this );でいいじゃねーか。

ほんとうにjavaやってたのか?
945デフォルトの名無しさん:2008/01/09(水) 15:15:19
リストビューに対してフォルダをドラッグするとそのフォルダ名とパスを取得できるようにしたいのですが
AllowDropをTrueにしても外部からのドラッグ自体受け付けてくれなくて困っています

同じForm内でテキストボックスからテキストボックスへ、とかリストビューからリストビューへ、というのはあるんですが外部からというのが見つからないですorz
946デフォルトの名無しさん:2008/01/09(水) 15:27:50
すみませんできましたまじごめんなさい
947デフォルトの名無しさん:2008/01/09(水) 15:28:28
>>945
AllowDropは単にドロップを受け付けるかどうかの設定で、
実際にドロップされたやつに対してなんかやるというのは、
プログラムを組まないとだめ。
DataFormats.FileDrop でググればたくさんサンプル引っかかる。
948デフォルトの名無しさん:2008/01/09(水) 15:33:53
と思ったらできてなかった

>>947
それでてっきりできたのかと思ったのですがファイルもドラッグできてしまう
フォルダだけにしたいのですがDataFormats下にフォルダっぽいのもないですしもしかして普通にやったら無理なのでしょうか
やるとしても結構いろいろ書かないとならないような感じの
949デフォルトの名無しさん:2008/01/09(水) 15:40:20
>>948
DragEnterは書いたの?
950デフォルトの名無しさん:2008/01/09(水) 15:48:09
>>949
えんたーの中で識別するんですね、理解しました
951デフォルトの名無しさん:2008/01/09(水) 21:42:55
何がしかのユーティリティで、設定ファイルのようなものはどういう形態で保持しておくものなんでしょうか?
例えば初期設定のような感じで、項目を選択していき本使用となるものだった場合
その選択した項目の情報はどのように保存するのかということです

普通にファイルとして出力してしまうと、テキストエディタなどから開けば普通に見れるしいじれてしまいますが
そんな感じで良いのでしょうか?
952デフォルトの名無しさん:2008/01/09(水) 22:14:33
>>951
XmlSerializerとか使うと楽。
いじられるのがいやならBinaryFormatterとか。
953デフォルトの名無しさん:2008/01/09(水) 22:33:44
編集したら呪う.ini
954デフォルトの名無しさん:2008/01/09(水) 22:35:13
触っちゃダメ♪.config
955デフォルトの名無しさん:2008/01/09(水) 22:37:17
>>951
昔はレジストリやiniファイルが主流だったけどね、いまはXMLで保存しておくのがベスト
956デフォルトの名無しさん:2008/01/09(水) 22:54:12
設定.exe
957デフォルトの名無しさん:2008/01/09(水) 22:54:22
>>912
できる。
mysql のODBCドライバ拾って来い
958デフォルトの名無しさん:2008/01/09(水) 22:55:54
PostgreSQLは使えないんですか
959957:2008/01/09(水) 23:01:18
答えるのもめんどい

かくじ c# PostgreSQL でぐぐるように。
960デフォルトの名無しさん:2008/01/10(木) 02:48:09
「アクティブな子フォームの内容を「名前をつけて保存」で保存する」について質問です。

saveFileDialogでファイル保存することが出来るというのは知っているのですが、
「実際にファイルに保存させるには(保存させる内容によって)独自のコードを
追加する必要がある」そうで、その方法がサッパリ分からなくて困っています。

ラジオボタンやチェックボックス、(グラフによる)パラメータなどの
変更内容を保存するには、どのようなコードを書けば良いのでしょうか。
(例えば、CheckBox1にクリックした、RadioButton3にクリックした、
といった変更をファイルに保存させるためのコードのことです)

あと、子フォームが開いてないときに保存しようとした場合の例外処理と、
(複数開いてるときに)アクティブな子フォームがどれなのかを調べて、
そのフォームの内容だけを保存させるためのコードも一緒にご教示いただけると非常に助かります。

よろしくお願いします。
961デフォルトの名無しさん:2008/01/10(木) 03:07:39
>saveFileDialogでファイル保存することが出来るというのは知っているのですが、
SaveFileDialog はファイル名を選択するだけだよ。
そいつでファイルは保存することができない。
962デフォルトの名無しさん:2008/01/10(木) 03:15:52
>>960
ちょっと上にやりたい事の答えがある気がするよ
963デフォルトの名無しさん:2008/01/10(木) 03:33:51
ん?フォームインスタンスをシリアライズしてファイルに保存とかできるんだっけ?
964デフォルトの名無しさん:2008/01/10(木) 03:35:56
>>961
あ、そういえばOpenFile…でしたっけ?

>>962
もしかして>>951に書いてある、「設定ファイル」ですか?
私の場合、逆にファイルとして保存させたいのですが…

すみません、さっき初めてきたので前後の状況が把握できずにいますorz
965デフォルトの名無しさん:2008/01/10(木) 03:52:09
>>963
つ XML Binding

>>964
ごめん、言ってる事がよくわからない。
Form→設定ファイル出力
設定ファイル読み込み→Form反映
これでも求めてる物と違うの?
966デフォルトの名無しさん:2008/01/10(木) 03:59:33
マップエディタを作っています
パネルの上に描写したいのですが、画面がチラついてしまいます。
パネルのプロパティにDoubleBufferedがなく、
どうしたらチラつかないようにできるのか分かりません。
ご教示お願いします。
967デフォルトの名無しさん:2008/01/10(木) 04:01:59
>>965
多分、私が把握しきれてないorz

>Form→設定ファイル出力
>設定ファイル読み込み→Form反映
それでフォームの内容が保存できるのでしたら。
968デフォルトの名無しさん:2008/01/10(木) 04:09:27
>>967
とりあえず
ボタンAクリックで、Form上のなんらかのデータをtxtファイルに書き出し
ボタンBクリックで、txtファイル読み込んで再表示
を勉強がてら書いてみな
969デフォルトの名無しさん:2008/01/10(木) 04:17:30
>>965
設定ファイルってのが変数等ではなく
フォームの状態事態って言いたいんだろうと思う

>>964が保存読み込みしたいのははini等の「設定ファイル」ではなく
>>963の言うシリアライズされた値なんじゃない?

「設定ファイル」にそれを書き込めばいいって話ではあるけど
970デフォルトの名無しさん:2008/01/10(木) 04:24:09
>>969
>>967のレス見れば判るが手法云々じゃない
>>960はプログラミング自体ズブの素人だろ
971デフォルトの名無しさん:2008/01/10(木) 04:33:01
>>970
まったくその通りで。
一応、本に書いてあることやプロパティで出来そうなことなら
自力でやるつもりでしたが、>>960に書いてあるように、
内容を保存させるためのコードが分からないんです。

「テキストボックスに書いた文字列」を保存させたいのではありません。
972デフォルトの名無しさん:2008/01/10(木) 04:42:30
>>971
>内容を保存させるためのコードが分からないんです。
>「テキストボックスに書いた文字列」を保存させたいのではありません。
俺には違いがわからんなぁ・・・
973デフォルトの名無しさん:2008/01/10(木) 04:54:57
>>972
テキストボックスの文字列をtxtファイルとして保存させるコード、
イメージをjpegなどのイメージファイルとして保存させるコードは本とかに
書いてあるので何とか自力で出来るのですが、

たとえばチェックボックスをクリックして、それを保存し、次回開いたときに
その状態が保たれている、ということがしたいわけですが、

その、「保存させるための方法」が分からないというわけです。
何度もすみません。

あと、iniファイルじゃなくて、txtとかmp3とかのように独自の拡張子で保存したいので、
「設定ファイル」とは違うような気がします。
974デフォルトの名無しさん:2008/01/10(木) 05:04:24
>>973

チェックボックスの値を保存するなら

・保存ダイアログでファイル名指定
・ファイル開く
・チェックボックスの状態取得
・ファイルに書き込み
〜他に書くべきものがあれば全部書く
・ファイル閉じる

読み込みはその逆
975デフォルトの名無しさん:2008/01/10(木) 05:23:11
>>974
ありがとうございます。

ど素人にお付き合いいただき、恐縮です。
またくだらないような質問をしてしまうかもしれませんが、
そのときはよろしくお願いします。

では。
976デフォルトの名無しさん:2008/01/10(木) 07:21:18
>>958
PostgreSQL なら Npgsql が使いやすい。後は調べてくんろ
977デフォルトの名無しさん:2008/01/10(木) 07:40:34
チェックボックスとかなら
プロパティ→ApplicationSetting→PropertyBinding
のほうが簡単かも。
保存のコード1行書くだけでOKだし。
978デフォルトの名無しさん:2008/01/10(木) 08:23:53
保存ファイル選ぶんだぜ?
979デフォルトの名無しさん:2008/01/10(木) 09:41:28
Windowsの休止状態みたいに
アプリの状態を全部そのまま保存する機能がほしいものだな
980デフォルトの名無しさん:2008/01/10(木) 10:49:15
休止でいいじゃん





嘘ですすんません。
981デフォルトの名無しさん:2008/01/10(木) 11:07:12
>>887
Tnx
恐ろしいほど簡単に出来た。10分ぐらい?先人に感謝。
982デフォルトの名無しさん:2008/01/10(木) 21:57:38
>>966
自分でBitmapに描画してダブルバッファやれば
983デフォルトの名無しさん:2008/01/10(木) 22:53:42
static string main()

って出来ますか?

代わりの方法でもいいので教えてください
984デフォルトの名無しさん:2008/01/10(木) 22:56:31
なんでstringを返したいの?
それがわからないと代わりの方法なんて教えられるわけがない
985デフォルトの名無しさん:2008/01/10(木) 23:19:22
コンソールに文字出すだけじゃダメなのか?
986デフォルトの名無しさん:2008/01/10(木) 23:20:50
C#で作ったDllってVBから使えるのかな?
987デフォルトの名無しさん:2008/01/10(木) 23:21:22
.NETじゃないVB6とかです
988デフォルトの名無しさん:2008/01/10(木) 23:23:11
regasmで使える。もちろんCOMに縛られるけどな。
989デフォルトの名無しさん:2008/01/10(木) 23:27:19
>>988
ありがとうございます。

もうひとついいですか?

DLL(クラスライブラリ)でメッセージボックスって出せないんですか?
990デフォルトの名無しさん:2008/01/11(金) 00:08:16
>>989
できるよ
できないことは起動プログラムとして動作することくらい
991デフォルトの名無しさん:2008/01/11(金) 00:10:57
むしろCOMに縛られる分VB6からは扱いやすいよな
992デフォルトの名無しさん:2008/01/11(金) 00:20:58
逆P/Invoke
993デフォルトの名無しさん:2008/01/11(金) 12:03:41
教えてください。
VS2005 C#でプログラムしていますが、HOMEPATHを取得することはできますか?
もしできるならやり方をご教授いただけないでしょうか。

お願いします。
994デフォルトの名無しさん:2008/01/11(金) 12:14:20
Environment.GetEnvironmentVariable( "HOMEPATH" );
995デフォルトの名無しさん:2008/01/11(金) 13:31:42
.NET Framework 3.5クラスライブラリには、
Enumerableクラスに定義されているもの以外の拡張メソッドはありますか?
996デフォルトの名無しさん:2008/01/11(金) 15:32:41
ファイルの読み込みについて質問です

while (sr.Peek() > -1)
{
 if (sr.ReadLine() == null)//空行ならwhileを抜ける
  break;
 if (sr.ReadLine() == "list2")//list2という文字列を見つける
 {
  if (sr.Peek() > -1)//list2という文字列があった次の行へ行く
  {
   listBox2.Items.Add(sr.ReadLine());
   break;
  }
 }
 else
 listBox1.Items.Add(sr.ReadLine());
}
ファイルがsrに読み込まれています。
ここから1行ずつlistBox1に追加していき、list2という文字列を見つけたら次の行をlistBox2についかしwhileを抜ける

という動作をしたいのですがソースの下から2行目のlistBox1に追加する段階でnullを入れようとしているらしくそのようにエラーがでます
Peekメソッドの使い方等に何か問題があるのでしょうか?
どうにも検討がつかなく困っています
997996:2008/01/11(金) 15:34:40
書き忘れていたことがあります、ごめんなさい
ファイルの方はしっかりエディタで開きチェックをしていますが空行はありません
また、スペースだけの行というのもありませんでした
998デフォルトの名無しさん:2008/01/11(金) 15:36:59
>>996
よく見てないが
> if (sr.ReadLine() == null)//空行ならwhileを抜ける 
空行なら == "" じゃね?
999デフォルトの名無しさん:2008/01/11(金) 15:40:57
if (sr.ReadLine() == "list2") //...1
{
 ...
}
else
 listBox1.Items.Add(sr.ReadLine()); //...2


1で読んじゃって"list2"じゃない場合その行は破棄されてるよ
んでそこが終行だったら2でnullが返るでしょう
1000デフォルトの名無しさん:2008/01/11(金) 15:41:20
次スレ

ふらっとC#,C♯,C#(初心者用) Part23
http://pc11.2ch.net/test/read.cgi/tech/1200033660/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。