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

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

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

前スレ
ふらっとC#,C♯,C#(初心者用) Part43
http://pc12.2ch.net/test/read.cgi/tech/1248573707/
2デフォルトの名無しさん:2009/08/28(金) 14:58:19
3デフォルトの名無しさん:2009/08/28(金) 15:39:52
>>1
4デフォルトの名無しさん:2009/08/28(金) 15:51:24
tryとcatch、
どういう背景でこのような呼び方をするのですか?
エラー、ノットエラーみたいな呼び方でいいのに…。
5デフォルトの名無しさん:2009/08/28(金) 15:55:41
データセットに溜め込まれたの内容を、CSVテキストに書き出すにはどうすればよいでしょうか。
リストボックスの内容を書き出す方法は、本に書いていましたが…。
6デフォルトの名無しさん:2009/08/28(金) 16:10:40
>>4 おれも日本語で
監視


確保


ーがいいと思う
7デフォルトの名無しさん:2009/08/28(金) 16:11:50
>>5
なんて本?
8デフォルトの名無しさん:2009/08/28(金) 17:17:07
>>7
うちの、
秀和かソシム?の逆引き向けの本です。
今、歯医者にいますので、うちに着いたら正式なタイトルを書きます。
9デフォルトの名無しさん:2009/08/28(金) 18:11:16
今から覚えるなら、C♯のWindowsフォーム、C♯のWPFアプリケーション、java、パワービルダーのどれがいいですか?
10デフォルトの名無しさん:2009/08/28(金) 18:32:56
初心者向けの日本語情報が沢山あるWinFormsにしとけ
WPFは必要性を感じるまでやんなくていい
11デフォルトの名無しさん:2009/08/28(金) 18:55:55
デリゲートって、一体、どういう必要性があるときに使用するの?
本屋のC♯の本を全て見たけど、どれも内容だけ書いていて、メリットや用途について書いていなかったです。
教えてください(>_<)。
12デフォルトの名無しさん:2009/08/28(金) 19:06:37
普通知らないうちに使ってるよ。
13デフォルトの名無しさん:2009/08/28(金) 19:13:54
デリゲートを使うと「関数を引数に取る関数」を作ることができます。
慣れないうちは意識して明示的に使うことは無いかもしれませんが,
イベントやLINQの裏方として多用されています。
14デフォルトの名無しさん:2009/08/28(金) 19:20:50
>>13
自分でコーディングしたことないけど使ってるの?
もしかして別のクラスにコード記述がなされてるの?
15デフォルトの名無しさん:2009/08/28(金) 19:33:56
たとえば,Form1のbutton1をダブルクリックすると,Form1.Designer.csにこんな行が作られる。
button1.Click += new EventHandler(button1_Click);
これがまさしくデリゲート。EventHandlerデリゲートのオブジェクトを作って
button1.Clickイベントに渡している。
16デフォルトの名無しさん:2009/08/28(金) 20:08:36
>>15
ありがとうo(^-^)o。
僕たちが直にコーディングするときもあるの?
17デフォルトの名無しさん:2009/08/28(金) 20:10:28
>>10
javaとC♯ではどちらがお勧め?
18デフォルトの名無しさん:2009/08/28(金) 20:22:22
あーみんな死んじゃえ
19デフォルトの名無しさん:2009/08/28(金) 20:24:56
>>16
イベントハンドラを手で登録することはよくある。
明示的な「関数を引数に取る関数」の例は,list.RemoveAll(x => x.IsHoge) みたいなのがある。
x => x.IsHoge という関数をRemoveAllの引数に渡してるわけ。これにもデリゲートが使われてる。

>>17
Windows限定なら断然C#
20デフォルトの名無しさん:2009/08/28(金) 20:27:56
>>19
…どういうときに…意識的にデリゲートを使うのだろうか…。
おいおい分かってくるのだろうか…。
21デフォルトの名無しさん:2009/08/28(金) 20:44:34
処理を差し替えたいときに使うんだよ
void Hoge(Action<Foo> 差し替え可能な処理) {
var foo = 共通の前処理();
差し替え可能な処理(foo);
共通の後処理(foo);
}
みたいな
22デフォルトの名無しさん:2009/08/28(金) 20:45:57
初心者にラムダ式見せて無用に混乱させるラムダ厨
23デフォルトの名無しさん:2009/08/28(金) 21:04:04
たとえば、客に料理を出してもてなすクラスを考える
class Host
{
public delegate Meal MakeMealDelegate();
public MakeMealDelegate MakeMeal;
void Serve(Guest guest)//客をもてなす
{
Meal meal = MakeMeal(); //料理を作る。
Cater(guest, meal); //料理を客に出す。
}
}
ここで、3つの料理法があったとする。
Meal MakeItalian(){.......}
Meal MakeFrench(){......}
Meal MakeJapanese(){......}
すると、
Host host = new Host();
host.MakeMeal = MakeFrench; //フランス料理でもてなす。
//host.MakeMeal = MakeItalian;//イタリア料理でもてなす。
//host.MakeMeal = MakeIJapanese;//日本料理でもてなす。
host.Serve(guest);
というように、delegateを使うと、どの料理方法を使って料理を
作るかをHostに対して指定できるようになる。

24デフォルトの名無しさん:2009/08/28(金) 21:08:50
>>23
あなた素晴らしい人だよ。
一緒に仕事したい。
25デフォルトの名無しさん:2009/08/28(金) 21:19:05
入金管理システムを作りたいと思います。
日付入力欄がたくさん必要ですが、
いろんな入力パターンに対しても受け入れたいと考えています。
例えば2009年9月1日ならば、

20090901
090901
0901
2009.09.01
2009.09.1
2009.9.01
2009.9.1
09.09.01
09.09.1
09.9.01
09.9.1
9.09.01
9.09.1
9.9.01
9.9.1
9.1

(.がスラッシュのときも同様に認識)

H210901
H21.09.01
H21.09.1
H21.9.01
H21.9.1
(.がスラッシュのときも同様に認識)

このとき、一般的にどのような仕組みが作られているのでしょうか?
26デフォルトの名無しさん:2009/08/28(金) 21:21:47
カレンダー系のコントロールで入力させる
27デフォルトの名無しさん:2009/08/28(金) 21:23:08
あんまりいい例じゃないと思うけどねw

少なくとも俺が>>23的なデリゲートの使い方があまり好きになれない理由の一つは、
>23の例で言えば、例えば「今どの料理を出すモードか?」を表すプロパティが
必要になったときスマートにいかないからだね。

恐らくほとんどのプログラマは認めないと思うが、
こんな場合は泥臭くてもswitchで分岐した方が結局分かりやすいように思える。

そういう必要がない純粋なディスパッチャーを記述する場合にはデリゲートで
いいと思うんだけど。
28デフォルトの名無しさん:2009/08/28(金) 21:27:01
>>25 正規表現
29デフォルトの名無しさん:2009/08/28(金) 21:45:31
いや、わかりやすさ、うんぬんの話ではなくて、
Hostクラスに料理に関してどれほどの自由度を与えるか、の問題だね。
イタリア料理、日本料理、フランス料理の調理能力をHostに与えたとして、
いざ、中華をださなきゃならんというときに、Hostクラスをいじくらなきゃならなくなる。
それならいっそのこと最初からdelegeteの形で外部から料理人を雇ってしまおう、
という発想だね。

30デフォルトの名無しさん:2009/08/28(金) 22:00:00
>>29
言いたいことは分かるけど、
それならComparison<T>の使われ方みたいな例を挙げた方がよかったんじゃないのかな。

現実問題、>>23みたいな話でそれほどの柔軟性が必要性な例はあまりないと思う。
31デフォルトの名無しさん:2009/08/28(金) 22:19:34
どっからかBuilderパターンの説明文をコピペしてきて
デリゲートに書き換えただけのような感じがする
32デフォルトの名無しさん:2009/08/28(金) 22:43:10
>>28
正規表現って何?
33デフォルトの名無しさん:2009/08/28(金) 22:53:57
正規表現…これは日付取得の方法として常識なんだろうか。
34デフォルトの名無しさん:2009/08/28(金) 23:01:55
パターン化可能な文字列に対するマッチングが正規表現であって別に日付に限らないよ
35デフォルトの名無しさん:2009/08/28(金) 23:15:46
いずれにせよ面倒くさいコーディングになるな
36デフォルトの名無しさん:2009/08/28(金) 23:22:25
そんな所で頭使う前に、決め打ちで完成させてから考えることだな。
37デフォルトの名無しさん:2009/08/28(金) 23:35:35
君はもう少し頭を使って日本語を書くべきじゃないかと思うんだ
38デフォルトの名無しさん:2009/08/29(土) 00:16:32
TreeView tv = (TreeView) sender;
というコーディングの、(TreeView)は何を意味しているのですか?
39デフォルトの名無しさん:2009/08/29(土) 00:17:42
型だよ!クラスだよ!
40デフォルトの名無しさん:2009/08/29(土) 00:20:57
イベントだったらルートクラスにキャストされた参照を元のクラスにキャストしなおしているのでは?
41デフォルトの名無しさん:2009/08/29(土) 00:28:52
ラムダ式って何のメリットあるん?
42デフォルトの名無しさん:2009/08/29(土) 00:31:41
書きやすい、まぁまぁ見やすい
expression tree にできる
43デフォルトの名無しさん:2009/08/29(土) 00:31:57
LINQ使わないならそこまで恩恵ないような
44デフォルトの名無しさん:2009/08/29(土) 00:43:10
書くのがdelegateよりも楽。
慣れるとdelegateよりも見るのが楽。
45デフォルトの名無しさん:2009/08/29(土) 01:07:59
private Color _BorderColor;
[Category("表示")]
[DefaultValue(typeof(Color), "Black")]
[Description("あああ")]
public Color BorderColor
{

というコードの中の、
[・・・]
は何を意味しているのですか?
46デフォルトの名無しさん:2009/08/29(土) 01:11:54
属性(メタデータ)
47デフォルトの名無しさん:2009/08/29(土) 01:17:43
>>46
属性…どういうときに使うの?
本に書いていないんです(+_+)。
48デフォルトの名無しさん:2009/08/29(土) 01:19:49
例えば45の場合はそれらのメタデータ読み取ってVSがフォームデザインする時に使っている
49デフォルトの名無しさん:2009/08/29(土) 01:21:05
10進数を36進数に変換し、
0〜Zまでの表示にしたいと思っています。
このような場合、どのようなコーディングが適しているでしょうか。
よろしくお願いします。
50デフォルトの名無しさん:2009/08/29(土) 01:24:44
宿題か何かか?
51デフォルトの名無しさん:2009/08/29(土) 01:26:24
動いてるコードが適してるコーディングなんだよ馬鹿野郎。
書いてから寝言言えボケカスゴミクズ
52デフォルトの名無しさん:2009/08/29(土) 01:27:13
落ち着けって
53デフォルトの名無しさん:2009/08/29(土) 01:38:05
宿題は自分でやろうな
どうしても分からない所だけ聞いたらいいよ
54デフォルトの名無しさん:2009/08/29(土) 01:40:20
宿題スレなら親切な人が1から10まで教えてくれるよ




たまに罠仕込む奴がいるが
55デフォルトの名無しさん:2009/08/29(土) 01:48:54
>>51
ところで、あなたは開発経験どれくらいですか?
56デフォルトの名無しさん:2009/08/29(土) 01:53:25
親クラスの親クラスがよべない糞言語はここですね
57デフォルトの名無しさん:2009/08/29(土) 01:59:24
privateじゃない限り、ダウンキャストすれば呼べるでしょ。
頭悪いのかな
58デフォルトの名無しさん:2009/08/29(土) 02:05:41
教科書通りに10進数を36で割って商と余りを云々ってのをやってけばいいんでない?
59デフォルトの名無しさん:2009/08/29(土) 02:14:39
データセットのデータをテキストに書き出すことはできますか?
データグリッドビューのデータを書き出すのは本に書いていました。
60デフォルトの名無しさん:2009/08/29(土) 02:21:19
ぐぐれ
61デフォルトの名無しさん:2009/08/29(土) 02:27:10
static string encode32(ulong n)
{
string str = string.Empty;
char[] d = {'0', '1','2','3','4','5','6','7','8','9',
'a','b','b','d','e','f','g','h', 'i','j','k','l','m','n','o','p','q','r','s','t','u','v'};
ulong _base = 32;

do
{
str += d[n % _base];
}
while ((n /= _base) != 0);
char [] strArray = str.ToCharArray();
Array.Reverse( strArray );
return new string( strArray );

}
このサイトのCをC#に焼きなおしてみた。
http://paranoids.sakura.ne.jp/kaworu/2008-06-14-2.php
ケチのつけどころは多々あるが、そこは適当に直してくれ。
サイトの結果を信じるならば、これであってるはず。
62デフォルトの名無しさん:2009/08/29(土) 02:38:48
>>61
なるほど。
24進数でも36進数でも応用が効くね。
63デフォルトの名無しさん:2009/08/29(土) 02:42:25
先が思いやられるな
64デフォルトの名無しさん:2009/08/29(土) 02:47:22
>>63
貴殿ならどうやるか示せ。
65デフォルトの名無しさん:2009/08/29(土) 02:51:24
わけねーだろ
66デフォルトの名無しさん:2009/08/29(土) 03:01:59
>>65
もったいぶらないで教えてよ。
67デフォルトの名無しさん:2009/08/29(土) 03:08:33
皆さんはVS歴どれくらいなんですかね。
私は1ヶ月ですが。
68デフォルトの名無しさん:2009/08/29(土) 03:16:01
こいつVSスレにいた荒らしだろ
69デフォルトの名無しさん:2009/08/29(土) 04:44:08
>>68
つやつやリキッドファンデーションでも塗っとけ。
70デフォルトの名無しさん:2009/08/29(土) 09:39:16
Accessのファイルに複数のクライアントアプリから同時に接続できるんですか?
71デフォルトの名無しさん:2009/08/29(土) 10:07:59
出来るけど接続多過ぎるとmdb破壊
破壊の目安はぐぐれ
72デフォルトの名無しさん:2009/08/29(土) 11:10:46
>>49
>>58で剰余をyield returnしてLSDから順に取りだす。
得られたシーケンスをReverse, Select, ToArrayして、String.Concat
73デフォルトの名無しさん:2009/08/29(土) 11:19:49
宿題はC風に書け
でないと先生が読めない
74デフォルトの名無しさん:2009/08/29(土) 12:16:22
PL1とCOBOLのみの経験者です。
「オブジェクト指向」の意味を本で調べましたが、
何を読んでも、

COBOLなどの「サブルーチン」や「共通ルーチン」に、デザイン上の汎用コントロールを付け加えたもの

という意味を言っているように見えて仕方がないんです。
けどCOBOLはオブジェクト指向ではありませんし…。
オブジェクト指向言語とCOBOLとの決定的なちがいは何でしょうか?
75デフォルトの名無しさん:2009/08/29(土) 12:33:57
何を読んだら
> COBOLなどの「サブルーチン」や「共通ルーチン」に、デザイン上の汎用コントロールを付け加えたもの
に見えてしまうんだ?
76デフォルトの名無しさん:2009/08/29(土) 12:41:23
Panelの外観(Backgroundimage)に画像が追加されたソリューションを友人からもらいました。

しかし、そのBackgroundimageプロパティが「System.Drawing.Bitmap」という汎用的な定義になっており、
かつ、その画像のありかが分かりません。

これは、ソース一式をくれた彼が、画像をリソースに追加せずにローカルPCの画像を
Backgroundimageに表示させていたからこうなったのでしょうか。

同じような経験をお持ちの方、教えていただけないでしょうか。
77デフォルトの名無しさん:2009/08/29(土) 12:42:56
>>75
結局オブジェクト指向は、
「共通部分をパッケージ化する」みたいな意味合いに見えるんです。
なので、サブルーチンのようなものではないかと…。
けど、それだったら昔からあるCOBOLもオブジェクト指向になってしまいますもんね
(-_-;)。
78デフォルトの名無しさん:2009/08/29(土) 13:04:34
オブジェクト指向はゴールじゃなくて「手法」。君が言ってるのは目的の一つ。
79デフォルトの名無しさん:2009/08/29(土) 13:05:50
オブジェクト指向というか、クラスの概念は「データとそれを触る処理をパッケージ化する」です。
なのであるデータがどう弄られているかを知りたい時、そのデータが所属するクラス内を見るだけで済みます。
オブジェクト指向言語で無い場合、スコープの範囲で調べる必要がでます。
80デフォルトの名無しさん:2009/08/29(土) 13:13:37
>>77
まず「クラスとは何者か?」を理解する。

「オブジェクト指向とは何か」を考えるのはそれからでいい、というより、
君がノイマンみたいな天才でもない限り、いきなり抽象論から理解しようとするのは
無理がある。
81デフォルトの名無しさん:2009/08/29(土) 13:26:08
オブジェクト指向は経験的な手法を整理したものだから触ってりゃそのうちわかる

>>76
それ実行したら画像は表示されるの?
82デフォルトの名無しさん:2009/08/29(土) 13:31:10
>>81
もらった状態でデバッグすると画像は表示されますが、一度、画像「なし」にしたり、他の画像に変えてしまうと、元にもどらなくなってしまうんです。
83デフォルトの名無しさん:2009/08/29(土) 13:34:14
VS のバージョンにもよるかも知れないが…resx ファイルの
中にバイナリが Base64 あたりで入ってるかと。
84デフォルトの名無しさん:2009/08/29(土) 13:38:41
COBOLみたいにデータを処理する手続きの集まりでプログラムを作るんじゃなくて、
クラスというかオブジェクトが何かをするという、そのオブジェクトの組み合わせでプログラムが動くイメージ。
でもこんな書き方で誤解なく意図が伝わるのは元々ちゃんと理解出来てるやつだけなので意味なし。
85デフォルトの名無しさん:2009/08/29(土) 13:59:59
>>83
ありがとうございます。
resxファイルの中に、3つのGIFファイルがありました。
これら全てをリソースにインポートしてみましたが、
どのファイルを指定しても、元には戻りません…。
86デフォルトの名無しさん:2009/08/29(土) 14:11:33
>>85
何がしたくて何を困ってるのかいまいちよく理解できないが、
とありあえず(手を入れる前の)元のコードのInitializeComponent()の
中のコードはちゃんと見た上で言ってるの?
87デフォルトの名無しさん:2009/08/29(土) 14:26:26
>>86
元のコードのInitializeComponent()を見ても、
どの画像を引用しているかが記述されていません。
リソースファイルではなく、画像が埋め込まれている…のかもしれませんが、
その埋め込まれている画像をリソースファイルに格納し、他のコントロールでも活用したいんです。
88デフォルトの名無しさん:2009/08/29(土) 14:42:44
コードで指示されてない画像が本当に表示されているのなら、
質問はプログラム板じゃなくてオカルト板ですべき。
89デフォルトの名無しさん:2009/08/29(土) 15:05:00
>>88
うむ。
存在しない画像を読み込むわけがない。
組み込み画像とリソースファイルの区別は俺も全く理解できていないが。
というか難しい。
90デフォルトの名無しさん:2009/08/29(土) 15:09:54
複数のユーザーコントロールを作ったんですが、お互いのコントロールクラスの中で使っているインスタンスを使用してそのクラスの関数までを他のユーザーコントロールから実行するにはどうすればいいんですか?
GetMainForm().funk();
のようなことがしたいんです
どうやって親のメインフォームでインスタンスを作ってある複数のユーザーコントロールにアクセスすればいいんですか?
91デフォルトの名無しさん:2009/08/29(土) 15:11:41
class UC1{
funk(){
GetMainForm().UC2.funk();
}
}
間違えましたやりたいのはこれです。
92デフォルトの名無しさん:2009/08/29(土) 15:20:06
それやっちゃうとユーザーコントロールに分けた意味が無くなるんだよね
ユーザーコントロールのコンストラクタに親のインスタンスを渡したりすればできるけど,
基本的にはそういうことをしなくていいように作るべき
93デフォルトの名無しさん:2009/08/29(土) 16:02:50
>>91
どうして、「しなくていいように作るべき」なのかを説明しといたほうがいい。

>>90
ユーザコントロールから他のコントロールの処理を呼び出すというのは、その
コントロールが「閉じていない」という証拠。他のコントロールの仕様を変えた
ときにこっちのコントロールまで影響が出る。
くわしくは「オープンクローズドの原則」という用語をググってくれ。

んで、ダメダメな設計の見本のようなものだから、そもそも設計から見直せ
と言われているわけだ。俺も見直せと、そう思う。
94デフォルトの名無しさん:2009/08/29(土) 16:03:21
基本的には、じゃなくて絶対にそうだよw
>>90はプログラミングのセンスなさ過ぎる。
95デフォルトの名無しさん:2009/08/29(土) 16:08:27
なんかオープンクローズドの原則ともちょっと違うか。
まあ、設計の見直しが必要ということには変わりない。
96デフォルトの名無しさん:2009/08/29(土) 16:12:31
皆、最初は通る道じゃないか。
どこが悪いかだけ書けばいいのであって人格攻撃は問題だと思う。
97デフォルトの名無しさん:2009/08/29(土) 16:26:41
>>96
それはない。
もちろん最初からダメな理由に言葉を与えることまではできないと思うが、
それなりに適性がある人間なら、グラフでいう枝がなるべく少なくなるような
コードを書いた方が理解しやすいことは最初から直感的にわかる。
98デフォルトの名無しさん:2009/08/29(土) 17:28:00
最初からは分からないだろ普通。
例えばボタンコントロール。
押された時他のクラスのメソッドを呼び出したい
と思っても何の不思議もない。

もちろん直接参照はできないからイベントを使うというように
閉じたままで実現する手法があるわけだが、
ボタンを押したときに他のクラスの処理が呼ばれるという
事実そのものに問題があるわけではない。

そりゃ元質問者がそういったところを理解できるようになるかは分からんが、
今の段階じゃ単に望ましい実現手法や考え方を知らないだけかもしれない。

.NETでのプログラミング歴がそれなりにあったうえでこの質問だと
ちょっと怪しいけどな。
99デフォルトの名無しさん:2009/08/29(土) 17:35:04
まあVBだと Form1.textBox1.Text = "ABC" みたいなとんでもないコードの方が普通なわけだが
100デフォルトの名無しさん:2009/08/29(土) 18:19:46
パネルを9枚、ドックで敷き詰めているんだ。
けど、ある一つを最背面にしたら、めちゃくちゃになった。
これってzオーダーって言うんだよね。
皆さんはどうやって直してますか?
101デフォルトの名無しさん:2009/08/29(土) 18:40:14
>>99
このコーディングのどこがだめなのですか?
短大卒の1年目です。
102デフォルトの名無しさん:2009/08/29(土) 18:56:31
名前の 〜1 のとこじゃね?
意味ある名前つけるのがお作法だけど、
IDE の生成した名前のまま変えてないっていう。
103デフォルトの名無しさん:2009/08/29(土) 18:59:03
なんだ、てっきりVBってインスタンス無しで記述できるのかと思ってたわw
104デフォルトの名無しさん:2009/08/29(土) 19:00:03
YouTubeから指定した動画を avi or mpg 形式でダウンロードするにはどうすればよいですか?
105デフォルトの名無しさん:2009/08/29(土) 19:00:22
VBにはデフォルトインスタンスという機能があって,どこでもForm1のインスタンスにアクセスできる。
テキストボックスを直接外から触ってるのも問題。カプセル化が全くできていない。
106デフォルトの名無しさん:2009/08/29(土) 19:37:34
>>105
もっと分かりやすく説明してちょうだい!!
107デフォルトの名無しさん:2009/08/29(土) 19:38:58
前に、デリケートに関する質問があったが、
結局デリケートは、サブルーチンを呼ぶサブルーチンを呼ぶサブルーチンを1オブジェクトのように見立てるようなもの?
108デフォルトの名無しさん:2009/08/29(土) 19:51:13
デリケートに好きして
109デフォルトの名無しさん:2009/08/29(土) 19:54:54
>結局デリケートは、サブルーチンを呼ぶサブルーチンを呼ぶサブルーチンを1オブジェクトのように見立てるようなもの?

バグってる
110デフォルトの名無しさん:2009/08/29(土) 20:05:35
俺は後輩に毎日、栄養ドリンクを買いに行かせている。
・下痢気味のとき…ドラッグストアでアセロラエキス入りドリンク
・睡眠不足のとき…ローソンでユンケル1,000円クラス
・セサミンを飲んだあとのとき…ローソンでチオビタ
こういう場合に、
「栄養ドリンクをどこかに買いに行かせる」
というデリゲートを組めば、有益ということか?
で、パラメータとして、
睡眠不足とか下痢気味とかセサミンとかを与えるという感じ?
111デフォルトの名無しさん:2009/08/29(土) 20:11:36
罹患してる
112デフォルトの名無しさん:2009/08/29(土) 20:14:20
俺って病気持ち????????
113デフォルトの名無しさん:2009/08/29(土) 20:38:22
セサミンを飲んだあとのとき…ローソンでチオビタ
これってどういうこと?
セサミンって危険なの??

>>92
自分で渡さないとたどれないんですね。メインフォームでUC1とUC2のインスタンスが作ってあるんで
メインフォームさえ取得できればと思ったんですが、それでもだめですか?そういう命令はありませんか?
この場合ユーザーコントロールの中の使いたいインスタンスはメインフォームに持って行ったとしても分離できてないのは変わらないと思うんですが、
もう一歩どうすればいいんですか

ただ単にコードを重複させたくないので他のUCのコードを使いまわしたいがために呼ぶんですが
114デフォルトの名無しさん:2009/08/29(土) 20:40:56
UCGO
115デフォルトの名無しさん:2009/08/29(土) 21:01:54
わかりません

Class MainForm{
UC UCinst;
MainForm(){
UCinst = this;
}
}

Class UC{
MainForm mfinst;
UC(){
mfinst = new MainForm();
}
}

全然インテリセンスが通りません。連絡し合いたいですお願いします。
116デフォルトの名無しさん:2009/08/29(土) 21:12:10
連絡し合いたいw
おのろけでしょうか
117デフォルトの名無しさん:2009/08/29(土) 21:15:34
俺はノンケだって構わないで食っちまう人間なんだぜ。
118デフォルトの名無しさん:2009/08/29(土) 21:15:53
MainForm で UCinst = this って、アンタ UC じゃないだろ。
意味はサッパリ分からないけど、もしかしてこうしたいのか?

public class MainForm {
UC UCinst;
public MainForm() { UCinst = new UC(this); }
}

class UC {
MainForm mfinst;
public UC(MainForm parent) { mfinst = parent; }
}
119デフォルトの名無しさん:2009/08/29(土) 21:19:38
UCinst = this;

ってエラーになるだろ?
120デフォルトの名無しさん:2009/08/29(土) 21:26:42
>>108
マミ乙
121デフォルトの名無しさん:2009/08/29(土) 21:31:44
ありがとうございます!
インテリセンスが通りました。後少しなんです。
UCに張り付けてあるテキストボックスをpublicにしてもUC.textbox
が通りません最後にこれだけお願いします
UC.Controls.でもテキストボックスがインテリに出てきません
122デフォルトの名無しさん:2009/08/29(土) 21:36:16
あかん、デリゲートの意味がさっぱりわからへん。
c#をやりはじめてもう1か月経つのに。
123デフォルトの名無しさん:2009/08/29(土) 21:38:06
あきらメロン
124デフォルトの名無しさん:2009/08/29(土) 21:39:49
関数ポインタちゃうんけ?
125デフォルトの名無しさん:2009/08/29(土) 21:47:55
WebExceptionのプロパティにResponseってあるけどこれも明示的にCloseせなならんの?
MSDNのWebExceptionのサンプルはスルーしてる

http://msdn.microsoft.com/ja-jp/library/system.net.webexception.response%28VS.80%29.aspx

Response.Close()には使い終わったら閉じろカスと書いてある
http://msdn.microsoft.com/ja-jp/library/system.net.webresponse.close%28VS.80%29.aspx
126デフォルトの名無しさん:2009/08/29(土) 21:51:20
>>121
インテリセンスが通らないじゃなくって、
ちゃんと実現方法を考え、理解した上でやった方が良いと思う。
じゃないと、会社入ってからロクな仕事まわって来ないぞ。
127デフォルトの名無しさん:2009/08/29(土) 22:13:58
WROXを買ったけど、読むのが大変だわこりゃ。
128デフォルトの名無しさん:2009/08/29(土) 22:44:44
>>125
ちらりと見た感じmyHttpWebResponseと同じ参照を返してるだけなんじゃないのかな。
HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
それならCloseはmyHttpWebResponseに対してすれば足りる。
例外処理だからGCに任せてるのだと思うけど、例外時の後片付けもしたいなら
finallyでmyHttpWebResponse.Close();を実行すべきなのだろう。
129デフォルトの名無しさん:2009/08/29(土) 22:53:21
>>128
GetResponseで例外が出たらmyHttpWebResponseに値格納できないぜ
130デフォルトの名無しさん:2009/08/29(土) 23:17:35
それはtrycatchの外に出してnullでも入れとけばいいだろ
131デフォルトの名無しさん:2009/08/30(日) 00:30:49
プロジェクトA(継承元のコントロールを収納)に、ユーザーコントロールを作成し、
プロジェクトB(メインフォームを収納)でプロジェクトAのフォームを継承したフォームを作成しました。
プロジェクトA内に作成したユーザーコントロールは、
今まではプロジェクトを追加したただけで、デザイン画面の左側にユーザーコントロールのアイコンが表示されていたのですが、
新しいプロジェクトを追加しても表示されなくなりました。
参照設定は常にプロジェクトAを参照するようにしています。
なぜ、ユーザーコントロールが他プロジェクトでも使用できるようにならなくなったのでしょうか。
すみませんがよろしくお願いします。
132デフォルトの名無しさん:2009/08/30(日) 01:16:49
ツールボックスのバグじゃなかった?
リセットすれば直ったような気がしたけど。
若しくは手動で追加してやるか
133デフォルトの名無しさん:2009/08/30(日) 01:20:16
DataTable と入出力先の XML ファイルについておしえてください。
通常、DataSet と併用して XML ファイルに複数レコードのデータを出力すると以下のようになります。

<NewDataSet>
 <Table01>
  <Item01>...</Item01>
 </Table01>
 <Table01>
  <Item01>...</Item01>
 </Table01>
</NewDataSet>

これをたとえば以下のようなファイルから、上記のようなファイルから読み取ったときと同様に
DataTable に入力させることは可能でしょうか。

<NewDataSet>
 <Item01>...</Item01>
 <Item01>...</Item01>
</NewDataSet>

もともと下のようなファイルを一部に使用していたらしいのですが、プログラムを修正する際に
他のファイル(上の例)と同じように扱えるようにしたいと考えています。
すでに上のような書式に書き換えることは了解させたのですが、あまり変更を入れたくないようなので
可能なら下のようなファイルをそのまま上のような場合と同様に扱えないかと思っています。

ご教示いただけないでしょうか。よろしくお願いします。
134133:2009/08/30(日) 01:22:23
あ‥‥ごめんなさい。下のファイルの書式を間違えていました。

間違い
<NewDataSet>
 <Item01>...</Item01>
 <Item01>...</Item01>
</NewDataSet>

正しい
<NewDataSet>
 <Table01>
  <Item01>...</Item01>
  <Item01>...</Item01>
 </Table01>
</NewDataSet>
135デフォルトの名無しさん:2009/08/30(日) 01:46:43
>>132
ありがとうございます。
今まで2アプリケーションを作成しましたが、

一方のアプリケーションは、
ソリューション内に新規でプロジェクトをどれだけ追加しても、
追加直後に開くform1デザイナの右側ツールボックスに、
作成済みのユーザーコントロールが歯車アイコンで表示されるのですが、

もう1つのアプリケーションの方では、
ユーザーコントロールを作成したプロジェクト内のformをデザイナで開いたときにのみ
ユーザーコントロールがツールボックスに表示されるものの、
新規でプロジェクトを追加した直後のデザイナには
ユーザーコントロールが表示されません。

自分が関わっていながらこの差異に気付きませんでした。
どこの設定によって、ユーザーコントロールの自動表示がなされるのでしょうか。
136デフォルトの名無しさん:2009/08/30(日) 02:18:45
だから(表示されなかったりすることがあるのは)バグじゃなかったのかな、
と言ってるんだけど・・・
137デフォルトの名無しさん:2009/08/30(日) 02:39:45
>>136
できたりできなかったりするわけですね…。
会社で作ったときはできて、自宅でやったらできませんでした。
2008を買ったばかりだったのに…
(>_<)。

ありがとうございます。
138名無しさん@そうだ選挙に行こう:2009/08/30(日) 06:26:54
テキストボックスにキーボードからではなくコードでエンターキーを入力するにはどうかけばいいですか?
139名無しさん@そうだ選挙に行こう:2009/08/30(日) 08:36:25
SendKey
140名無しさん@そうだ選挙に行こう:2009/08/30(日) 10:29:29
>>133-134
なんかの間違いとしか思えない。

<NewDataSet>
 <Table01>
  <Item01>...</Item01>
 </Table01>
 <Table01>
  <Item01>...</Item01>
 </Table01>
</NewDataSet>

だったはずだと思う・・・その<Item01>項目がどのDataRowに含まれているのか
特定できないから。それとも自力で順に読み込んでRowにまとめていたのか?
そして今回、どうやってTable01テーブルのDataRowにマッピングするつもりなのか?
全くTable01というノードが無くなっちゃってるよな。
こんなトコに聞きにくるということは、そこも分からないで省略したいとか言っている
としか見えない。分かってるなら、そのように読み込み処理を書くから。

>すでに上のような書式に書き換えることは了解させたのですが
無茶苦茶に嫌な予感が・・・がんばってな。南無南無
悪いことは言わないから、吐いた唾飲んで元通りにしとくほうがいいと思う。
141名無しさん@そうだ選挙に行こう:2009/08/30(日) 10:36:35
あ、読み間違えていた。すまん、はやとちった。

自力で順に読み込んでRowにまとめるしか無いだろうね。XSLTでも無理くさい。
元のコードから、そのノード解析処理をコピってくるとか?
142名無しさん@そうだ選挙に行こう:2009/08/30(日) 11:25:53
ただ、カラムが Item01 だけだったら、なんとかなると思い至った。
<?xml version='1.0' standalone='yes'?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match='/'><xsl:apply-templates/></xsl:template>
<xsl:template match='NewDataSet'><NewDataSet><xsl:apply-templates/></NewDataSet></xsl:template>
<xsl:template match='Table01'><xsl:apply-templates/></xsl:template>
<xsl:template match='Item01'><Table01><Item01><xsl:value-of select='.'/></Item01></Table01></xsl:template>
</xsl:stylesheet>
を使ってXSLTに食わせればいい。
(参考コード)
XslCompiledTransform xsltf = new XslCompiledTransform();
xsltf.Load(new XmlTextReader(new StringReader(xslt)));
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
StringWriter sw = new StringWriter();
xsltf.Transform(doc, null, sw);
DataSet dataSet1 = new DataSet();
dataSet1.ReadXml(new StringReader(sw.ToString()));
143名無しさん@そうだ選挙に行こう:2009/08/30(日) 12:09:35
>>142
ありがとうございます。(上ふたつも同じ人だよね?)
いまのコードは >>141 に書かれているように自分で解析しているようです。
正直、いまはちゃんとは理解できていないですけど、参考にしてお勉強させていただきます。


>>138
ついで。
TextBox1.Text = "123\r\n456";
詳しくは C# テキストボックス 改行 でぐぐれ。
144名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:18:32
DataTableをソースにしたグリッドビューの中で文字列検索した後ヒットしたレコードの他のフィールドの値を取り出すにはどう書けばいいですか?
クエリを調べても出来そうにないんですが、エクセルシートみないな操作はできないんですか?
145名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:21:42
ずいぶん口調変わるんだなw
146名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:22:50
素直にエクセル使ってろと
147名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:36:43
おねがいします。レコードが800万件あるんです。助けてください。
148名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:49:02
プログラムからブラウザ上のボタンとかを操作するプログラムを作っているのですが、
そのページ上に、通常のHTMLで作成されたtype=button では無く、
Flashで作成されたボタンがあった場合、
プログラムからそれをクリックする事は出来ますか?
149名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:50:10
>>147
Access+VBAで今回はしのげ
150名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:50:36
業務なら然るべき所に有償で依頼してくれたまえ
151名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:53:52
ヒットしたなら、行番号は取れてるんだろ?
行と列を指定すれば、フィールドの値は取れる。

つーか、グリッド上でやるのはパフォーマンス悪すぎだろ。
152名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:54:13
>>148
無理。
153名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:00:41
DataGridViewはリフレクション使いまくりでクソ遅いからなあ
154名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:04:58
>>145
ん? >>143 宛なら、そりゃ、教えていただいたときとその反対の時の口調が同じなわけないだろ。w
>>144 まで含めているなら、それは別人だ。
155名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:06:55
>>153
自分で試しもみないでなんだけど、DataGridView で実用になるのってレコード数何件くらいまでかな?
156名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:08:50
検索するたびにデータベースにアクセルするのはパフォーマンスが悪いと思ってDataTableに取り込んだ状態でその中で検索をかけたいんですがこれって
グリッドビュー通してることになるんですよね。
>>151
ヒットしてません。アダプターでクエリするとカレントレコードの位置をグリッドビューからみて行番号はとれるんですがこれはDataTable内でのカレント操作はできないんですか?
157名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:14:07
DataGridViewって件数が増えると極端にパフォーマンスが落ちね?
一度二次元配列に代入してから素直に検索掛けた方がいいよ
158名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:14:37
>>156
> DataTableに取り込んだ状態でその中で検索をかけたいんですがこれってグリッドビュー通してることに
ならない。
データとUIは別物。
つかグリッドビューってことはASP.NETでいいんだな?

> アダプターでクエリすると
アダプタってTableAdapterとかDataAdapterか?
なら凄い勢いでDBにクエリを投げてるじゃないか
159名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:16:45
>>152
マジっすか。。。残念。Flashウザイ
160名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:18:46
いちいち口調を変えるなんて、頭悪そうだなぁ、って思っただけだよ。
161名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:19:48
データグリッドはあくまで表示用なんだから、800万件も入れるのは正気の沙汰じゃない。
162159:2009/08/30(日) 14:28:04
Windowsアプリからブラウザ上のファイル選択(参照)ボタンをクリックし、

クリックをしてファイル選択ダイアログが立ち上がった後に

スグに別の処理を行いたいんですけど、その起動したダイアログを

閉じない限り次の処理を行う事が出来ず困っています。

何か良い方法はありませんか?
163名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:37:24
マルチスレッドにしないと無理じゃない?
164名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:39:16
>>162
なんとなくだけど、HTML を操作するんじゃなくて、HTTP 通信に手を出した
方がいい気がしないでもない。
165名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:44:07
>>162
基本的には別スレッド起動だけど、
単に「立ち上がったその瞬間」軽い処理ができればよいのなら
Application.EnterThreadModalイベントが使える。

あと、モーダルダイアログ表示中でもタイマーのtickイベントは発生する。
166名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:51:31
>>162
同じ質問をあちこちに書くと嫌われるよ。
どーせ見てる人は被ってるんだし。
167名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:57:33
関係ないけど、dobonさんのところの掲示板のところの
マルチポスト監視員はちょっと気持ちが悪いなw

マルチポストする奴もたいがいロクな奴じゃないとは俺も思うが、
あれはマリチポストしてる奴よりよほど精神的に異常な奴に思える。
168名無しさん@そうだ選挙に行こう:2009/08/30(日) 15:05:34
>>163
マルチスレッドとして実行させる為に

Dim str As String = "あいうえお"

Dim t As New System.Threading.Thread( _
New System.Threading.ThreadStart(AddressOf TestMethod(str)) _
)
t.Start()



Private Sub TestMethod(Dim str As String)
   Debug.WriteLine("テスト" & str)
End Sub

と記述してみたところエラーが出てしまいます。
マルチスレッドで引数を受取る形で宣言されたメソッドを実行する事は出来ないのでしょうか?
(あっ、C#スレだった・・・ごめんなさい。マルチスレッドが解決したら落ちます。)
169名無しさん@そうだ選挙に行こう:2009/08/30(日) 15:08:08
>>164
それはちょっと難易度があがりそうなので見送ります。

>>165
そんなイベントもあったのですね。知りませんでした。
とりあえずマルチスレッドにすればやりたい事が実現できそうなので今回は
こちらの方法で対処しようと思います。

それにしても今更だけど、プログラムって本当に面白いね^^;
面倒な作業を何でも自動化で来ちゃうところがナイスです。

>>166
ですね。気をつけます。

>>167
多分暇してる人だと思います。
170名無しさん@そうだ選挙に行こう:2009/08/30(日) 15:11:55
>>168
ParameterizedThreadStart
171163:2009/08/30(日) 15:15:14
ここまできたらMSDN見た方が早くない?
http://msdn.microsoft.com/ja-jp/library/system.threading.threadstart(VS.80).aspx
172名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:40:56
PanelとPanelとの間に境界線を引きたいと思っています。
BorderLineだと四辺全てに引かれてしまうので、
.NET3.5より新しく加わった、lineshapeを使おうと思いました。
けど、接戦を引いたパネル上に別のパネルを置いてしまうと、見えなくなってしまいます。
何かいい方法はないでしょうか。
173名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:54:59
>>172
あのコントロール、メニューストリップなどの上に描けないんだよね。
まだまだ不便だよ。
174名無しさん@そうだ選挙に行こう:2009/08/30(日) 17:19:21
SplitContainerじゃだめなん?
TableLayoutでもいけそうだけど
175名無しさん@そうだ選挙に行こう:2009/08/30(日) 18:38:51
2つのpanelが接する辺だけに境界線を引きたいんです。
他の3辺はNONEでいきたいのですが、継承するしかないでしょうか。
Lineshapeが登場して喜んでいたのですが(+_+)。
176名無しさん@そうだ選挙に行こう:2009/08/30(日) 18:53:03
OnPaint で直接描いちゃえば?
177名無しさん@そうだ選挙に行こう:2009/08/30(日) 18:54:40
手っ取り早く見た目をなんとかするだけなら、細長いボタンを重ねるという手もある
ドラッグイベントを自前で実装するのもそれほど大変じゃないはず
178名無しさん@そうだ選挙に行こう:2009/08/30(日) 19:58:51
>>175
>>175で言ってることと>>172は矛盾してない?
175の通りならLineShapeで何も問題ないように思えるが・・・

まあ、事ほど左様に言ってることがいまいち理解できないところがあるんで
トンチンカンなアドバイスかもしれんが、

■ A案
パネルCの中に、それを左右に(あるいは上下に)分割するような形で
パネルAとBを入れる。AとBの間には1〜2ドット分隙間をあけ、パネルCのBackColorを
境界線として利用する。

■ B案
2つのパネルのうちの片方パネルの、相手と接している辺にラベルをDockさせる。
179名無しさん@そうだ選挙に行こう:2009/08/30(日) 19:58:54
LineShapeはあくまでVB向けのおまけだから…
180デフォルトの名無しさん:2009/08/30(日) 21:45:35
>>178
俺も>>172の意味が分からん
自分でLineShapeの上に別のコントロールを置いて隠しているだけじゃないのか

こういう構成で

- Form1
  - panel1
  - panel2
    - panel3
    - lineShape1

panel2とpanel3のサイズが同じとかアホなことしているのではと疑いたくなる
181デフォルトの名無しさん:2009/08/30(日) 22:36:08
エスパー多いなw
>>172,175意味不明すぎるw
182デフォルトの名無しさん:2009/08/30(日) 23:05:02
馬鹿は黙ってろ
183デフォルトの名無しさん:2009/08/30(日) 23:07:23
>>182
馬鹿は黙ってろ
184デフォルトの名無しさん:2009/08/30(日) 23:16:52
くやしそうwww
185デフォルトの名無しさん:2009/08/31(月) 00:43:31
<asp:GridView ID="gridWord" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:BoundField HeaderText="ワードカテゴリ" DataField="Category" />
<asp:CheckBoxField DataField="Check" />
<asp:BoundField DataField="SynonymWord" HeaderText="チェックワード" />
</Columns>
</asp:GridView>

こういうグリッドビューに対して
これに対応したDataTableを作成し,データバインドしました.
2つ目に挿入されているCheckBoxFieldにはDataTableにBoolean型の列を割り当てました.

実行してみるとチェックボックスがフォームアプリケーションでいうEnebled = False 状態で
チェックを変更することができません.

GridViewのTableCellに対してEnebuled = Trueしたり
DataTableとGridViewCollumのCheckBoxField ReadOnlyをFalseにしたりしましたが
グレーアウトのままです

どうすればよろしいでしょうか
186デフォルトの名無しさん:2009/08/31(月) 19:06:30
YUI/again(single)
CAN'T BUY MY LOVE(3rd album)
YUI/FROM ME TO YOU(album)
YUI/I LOVED YESTERDAY(album)
LOVE&TRUTH(album)
YUI/Namidairo(single)

から、

again
CAN'T BUY MY LOVE
FROM ME TO YOU
I LOVED YESTERDAY
LOVE&TRUTH
Namidairo

を取得するのに、正規表現をどう書いたらいい?
string title = "artist/(?<title>.*?).*?\((?<albumname>.*?)\)";
と書いてみたんだけど、なんか違ってるっぽい。
教えてください。
187デフォルトの名無しさん:2009/08/31(月) 19:10:45
>>186
何から何まで間違っている。
188デフォルトの名無しさん:2009/08/31(月) 19:22:55
不覚にもワロタ
189デフォルトの名無しさん:2009/08/31(月) 19:28:58
VBで書こうがC#で書こうが.基本的に実行速度って変わらないんですか?
190デフォルトの名無しさん:2009/08/31(月) 19:50:15
>>186
どんだけ妄想を働かしてるんだよ。1回マニュアルを読んだほうが良い。
191デフォルトの名無しさん:2009/08/31(月) 20:03:22
string title = "(?<artist>.*?)/(?<title>.*?).*?(?\(<albumname>.*?\))";
ならOK?
192デフォルトの名無しさん:2009/08/31(月) 20:04:52
>>191
正規表現を1から勉強してこい
193デフォルトの名無しさん:2009/08/31(月) 20:13:41
一番ポピュラーで使いやすくて軽いHTMLパーサーを教えてください
194デフォルトの名無しさん:2009/08/31(月) 20:15:42
mshtmlでいいやん
195デフォルトの名無しさん:2009/08/31(月) 20:42:04
>>189
或る統計 data より…
Spec and more  250MHz 400MHz  Total
          R10000  Pentium U Source lines
C        : 0.3秒  : 0.30秒  : 150行
C++/STL/deque : 2.6秒  : 11.2秒  : 70行
C++/STL/list  : 1.7秒  : 1.5秒  : 70行

C# VB は在りませんが 統計上では 詠み込み行が多く為り 速度も変わる様です
196デフォルトの名無しさん:2009/08/31(月) 20:46:54
>>191
ヒント。その正規表現は '/' が文字列中に無いとマッチしないよね。
197デフォルトの名無しさん:2009/08/31(月) 20:49:28
失礼…

Spec and more  250MHz 400MHz  Total
          R10000 Pentium U Source lines
C         : 0.36秒  : 0.30秒  : 150行
C++/STL/deque : 2.6秒  : 11.2秒  : 70行
C++/STL/list    : 1.7秒  : 1.5秒  : 70行

でした…
198デフォルトの名無しさん:2009/08/31(月) 20:53:10
>>197
なんでVBとC#の比較しないの?意味分かんない。
199デフォルトの名無しさん:2009/08/31(月) 21:02:56
変ですね… ズレます…

Spec and more   250MHz 400MHz  Total
         R10000  Pentium U Source lines
C         : 0.36秒  : 0.30秒  : 150行
C++/STL/deque : 2.6秒  : 11.2秒  : 70行
C++/STL/list    : 1.7秒  : 1.5秒  : 70行
200デフォルトの名無しさん:2009/08/31(月) 21:03:42
荒らしか。
201デフォルトの名無しさん:2009/08/31(月) 21:04:12
>>199
全角でやれ、そして専ブラのリンク先で見る分には大丈夫だw
最後に、意味ないからこれ以上張るな。
202デフォルトの名無しさん:2009/08/31(月) 21:29:19
150行が何意味するのかわからんし。
処理データ数ならせめて100行、10000行、1000000行の性能比較くらいしない
と、ただのゴミ。データ量によって性能の特性が変わることはよくあるから。
203デフォルトの名無しさん:2009/08/31(月) 21:32:06
ソースコードの行数じゃないの? 「読み込み行」とか言ってるのはワケワカだけど。
204デフォルトの名無しさん:2009/08/31(月) 21:37:20
>>191
まずはその変数をtitleじゃなくてpatternにしないか
気持ち悪い

俺も>>199のデータがどう>>189に関係有るのか分からないけど、
>>189は「基本的に」って書いてあるから答えとしては、「ほぼ変わらない」でFAでしょ。
ほぼ同じ中間コードが同一のCLRで走るんだし。
細かく見れば言語固有の実装があったりとかで、違ったりするかもしれないけどそこまでは知らにゃい。
というか、どちらにしようか迷ってる段階であの質問なんだとしたら、処理速度で選ぶのは間違ってると思います。
あ・・・でもVB.netってunsafeコード書けないんでしたっけ。
205デフォルトの名無しさん:2009/08/31(月) 21:43:50
最近、スレで見たけどさ。
ラインシェイプは、パネルの境界線としては大して役に立たないのかよ。
Sp1は大した機能がないのか世。
206デフォルトの名無しさん:2009/08/31(月) 21:46:10
馬鹿が自分じゃなくてハサミの方を馬鹿だと思い込むの巻、か
207デフォルトの名無しさん:2009/08/31(月) 21:46:42
WinFormsはもう放置モードに入りましたから
208デフォルトの名無しさん:2009/08/31(月) 21:47:08
1.0 の頃は、なんと VB の方が速かったという話。
コンパイラの出来がよかったんだって。

今となってはそんなこともないんだろうけどね。
209デフォルトの名無しさん:2009/08/31(月) 22:08:06
VBは結構ヘルパー関数呼び出しが入るから普通に書いても若干遅くなることはある
想定されてるVBの用途を考えればほとんど無意味なコストなんだろうけど
210デフォルトの名無しさん:2009/08/31(月) 23:19:03
this.FormBorderStyle = FormBorderStyle.None ;
でウィンドウを枠を表示しないようにすると、ウィンドウ内をダブルクリックしてウィンドウが最大化します。
これを抑止するにはどうしたらよいですか?
211デフォルトの名無しさん:2009/08/31(月) 23:26:31
string title = "(?<artist>.*?)/*(?<albumtitle>.*?).*?(?\(<albumcategory>.*?\))";
ならOK?
212デフォルトの名無しさん:2009/08/31(月) 23:28:26
>>210
それだけなら最大化なんかしないはずだが
WndProcオーバーライドしてなんかやってないか
213デフォルトの名無しさん:2009/08/31(月) 23:28:56
>>211
スレ違い
214デフォルトの名無しさん:2009/08/31(月) 23:31:47
>>212
フレームなしのウィンドウを移動可能にするので、
protected override void WndProc(ref Message m){
base.WndProc(ref m) ;
if ((m.Msg == 0x84) &&
(m.Result == (IntPtr)1))
{m.Result = (IntPtr)2 ;}
}
というのを入れてます。
これがだめなんですか?
といっても、フレームなしのウィンドウを移動するには、
これが必要だし…。
215デフォルトの名無しさん:2009/08/31(月) 23:31:49
>>211
PHPとXMLと正規表現混ざってるんじゃね?
本気で解答得たいという姿勢を感じられん。
216デフォルトの名無しさん:2009/08/31(月) 23:37:31
>>214
そういうのはOnMouseDownとOnMouseMoveでやるんじゃないの普通・・・
217デフォルトの名無しさん:2009/08/31(月) 23:43:10
…。←うざい
218デフォルトの名無しさん:2009/08/31(月) 23:45:12
・・・←もっとうざい
219デフォルトの名無しさん:2009/08/31(月) 23:49:38
>>214
他でもいろいろやってそうだね。
問題の切り分けを自分で出来るようにならないと、
情報を小出しするとかいろいろ文句をつけられるぞっと。
220デフォルトの名無しさん:2009/08/31(月) 23:51:19
>>214
WM_NCHITTESTでHTCAPTION返すようにするなら、
WM_SYSCOMMANDでWParamにSC_MAXIMIZEが含まれるときにIntPtr.Zeroを返すようにする処理を追加しないと
221デフォルトの名無しさん:2009/08/31(月) 23:57:39
なんか落ちた犬を叩くようだが、
>>214って典型的な「何でもMSのバグのせいにするタイプ」だね。

こんなの普通の神経してれば、人に質問する前にコード何も書かない素のフォームで
試して自分の仮説が本当に正しいのか実証するだろう。
俺には理解できん。真面目に精神病の一種か何かじゃないのこういう人。
222デフォルトの名無しさん:2009/09/01(火) 00:01:52
↑いつもの人乙
223デフォルトの名無しさん:2009/09/01(火) 00:49:46
>>216の案で書いてみた
private Point _p;
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (e.Button == MouseButtons.Left)
_p = e.Location;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.Button == MouseButtons.Left)
Location = new Point(Location.X + (e.Location.X - _p.X), Location.Y + (e.Location.Y - _p.Y));
}
224デフォルトの名無しさん:2009/09/01(火) 02:45:27
>>223
これって、イベントハンドラはどう割り当てるのですか?
225デフォルトの名無しさん:2009/09/01(火) 03:03:32
お前には無理だから忘れろ。
226デフォルトの名無しさん:2009/09/01(火) 06:04:01
イベントっていうのは勝手に起こるんじゃなくて
イベントを定義しているクラスがイベントハンドラを実行するんだよ。
そのイベントハンドラを実行するメソッドを普通On[イベント名]メソッドで定義するのが作法。

public event EventHandler SomeEvent; //イベント定義 呼び出し側からハンドラを追加する。
protected void OnSomeEvent(EventArgs e)
{
if(SomeEvent != null) //ハンドラが追加されているかをチェック

}



227デフォルトの名無しさん:2009/09/01(火) 06:07:28
途中で勝手に書き込まれてしまった・・・

public event EventHandler SomeEvent; //イベント定義 呼び出し側からハンドラを追加する。
protected virtual void OnSomeEvent(EventArgs e)
{
if(SomeEvent != null) //ハンドラが追加されているかをチェック
  SomeEvent(this, e);
}

なので 同一クラスおよび、サブクラスでは イベントハンドラを追加しなくても
Onメソッドをオーバーライドすればイベントハンドラを追加したのと同じことができる。
ただしスレッドは同一になるのでマルチスレッドデリゲートしたければ
イベントハンドラ追加するかな。
228227:2009/09/01(火) 06:14:05
訂正:同一クラスではオーバーライドできないので
Onメソッド内部に処理をかけばいいのだが、
そんなのは邪道なので
Onメソッドを実行せずに直接やりたい処理をやらせる。
イベントを起こしたいのならOnメソッドも実行する。

229デフォルトの名無しさん:2009/09/01(火) 11:07:09
internalインターフェイスにinternalメンバを定義したいんだけどコンパイルエラーになる
publicにしたくないメンバだけ明示的実装するしかないの?
230デフォルトの名無しさん:2009/09/01(火) 11:15:27
インターフェイスがインターナルならメンバをインターナルにする必要ないと思うんだが。
いずれにせよインターフェイスにはパブリックなメンバしか定義できないよ。
231229:2009/09/01(火) 11:24:23
そのinternalインターフェイスを実装するときに,
internalとしてそのメンバを実装するとコンパイルエラーになってしまう
publicメンバとして実装したら通るけどアセンブリ外から見えてしまう
明示的実装すれば実質internalになるけど,呼び出すときにいちいちインターフェイスにキャストするのが面倒
232デフォルトの名無しさん:2009/09/01(火) 11:58:22
明示的実装はいまいち融通が利かんからねぇ
まあこれぐらいで 多分どっかで最適化されて実行コストのロスはなくなるだろ
internal interface ITest {
    void Test();
}
public class Test : ITest {
    void ITest.Test() { }
    internal void Test() {
        ((ITest)this).Test();
    }
}
233デフォルトの名無しさん:2009/09/01(火) 14:39:02
逆の方が良くない?
これなら実装をvirtualやabstractにもできるし。

internal interface ITest {
void Test();
}
public class Test : ITest {
void ITest.Test() {
Test();
}
internal void Test() { }
}
234デフォルトの名無しさん:2009/09/01(火) 15:13:49
string s;
double d;
s="this is ";
s= s + d.ToString;

これだと 演算子 '+' を 'string' と 'メソッド グループ' 型のオペランドに適用することはできません。

って怒られるんだけど、こういうときはどうしたらいいですか?

StringBuilder使うのがいいですか?
235デフォルトの名無しさん:2009/09/01(火) 15:14:59
あ、
d="1234";
が抜けてました
236デフォルトの名無しさん:2009/09/01(火) 15:15:07
メソッド呼び出しには括弧つけろ
237デフォルトの名無しさん:2009/09/01(火) 15:15:23
>d.ToString

ToStringなんてプロパティねーよ
メソッドならあるよ
238デフォルトの名無しさん:2009/09/01(火) 15:18:25
は!そういうことですか!ありがとう
239デフォルトの名無しさん:2009/09/01(火) 16:25:56
実は.ToStringは不要
240デフォルトの名無しさん:2009/09/01(火) 16:39:33
定数に関する質問なんですが。
よくコレクション定数をプロパティで作ることがあるですが、
その定数が配列などのときにいちいちGet{for{list.Add(***):}}でループしながら定数を組んでいるためその変数を呼ぶごとにほんの少し時間をとります。
タイムカウントをとるとほんと微々たるものですが、私にとってはあまり気分のいいものではありません。
Getで指定する理由は、その定数には数十個とそれなりに大きなもので
バージョンを上げるごとに変わることが予想されるためで、変更し易いようにということでこのようにしています。

一度アプリケーションが起動するときに一気にロードしてreadonlyにしていたこともあるのですが、個人的に気持ちいいものではありませんでした。

皆さんはこのような状況のとき、どのような対策を行っているのでしょうか?
241デフォルトの名無しさん:2009/09/01(火) 16:41:31
気にしないように日々訓練しています
242デフォルトの名無しさん:2009/09/01(火) 16:41:41
お前の気分なんてどうでもいいんだよ
243デフォルトの名無しさん:2009/09/01(火) 16:53:51
int? myProperty;
int MyProperty {
get {
 if (myProperty == null) { /*値を計算してmyPropertyに代入*/ }
 return myProperty;
}
}
こうやって最初に呼び出された時だけ計算するとか
244デフォルトの名無しさん:2009/09/01(火) 17:03:27
クラスにアクセスするまで静的コンストラクタは起動されないので
staticフィールドで済ませる事が多いな。

メモリを圧迫するような大きなデータだと、
プロパティアクセス時に生成してキャッシュしておくけど。
245デフォルトの名無しさん:2009/09/01(火) 17:21:58
ところでコレクションや配列にreadonlyは無意味だぞ
246デフォルトの名無しさん:2009/09/01(火) 17:22:41
>>243,244
やっぱり一発で書ける方法はないんですね・・・
変数生成やプロパティ呼び出しのときにconstが使えて、呼び出し後は変数として使えるなんて出来れば幸せになれるのですが、orz
人の意見を聞けてよかったです。
ありがとうございました。m(_ _)m
247デフォルトの名無しさん:2009/09/01(火) 17:32:49
>>245
コンストラクタでの変更は故意にやらない限り弄られることはないかなっという
軽い気持ちで行っていますw
248デフォルトの名無しさん:2009/09/01(火) 17:51:19
static readonly ReadOnlyCollection<Hoge>
とか書くかな
249デフォルトの名無しさん:2009/09/01(火) 21:05:45
キャッシュせずにgetで毎回コレクションや配列を作るのは禁止(MSDNにも明記されている)
for (int i = 0; i < hoge.ConstValues.Length; i++) { x = hoge.ConstValues[i]; }
とかされると死ぬから
250デフォルトの名無しさん:2009/09/01(火) 22:42:52
datatableの内容を印刷するにはどうやったらできますか?
意外と難しい一般的なやりかたじゃないんですかねー?
251デフォルトの名無しさん:2009/09/01(火) 22:54:26
DataTableの質問してるやつ死ねよ
252デフォルトの名無しさん:2009/09/01(火) 23:00:21
やはり難しいのでしょうか?
253デフォルトの名無しさん:2009/09/01(火) 23:04:22
お前には難しすぎる
諦めろ
254デフォルトの名無しさん:2009/09/01(火) 23:07:16
標準では簡単なやり方はないな
自前で頑張って描画して印刷するしかない
255デフォルトの名無しさん:2009/09/01(火) 23:11:16
サードパーティのライブラリ買うか,データだけCSVかなんかで吐いてExcelで印刷したら
256デフォルトの名無しさん:2009/09/01(火) 23:11:40
仕事だか何だか知らんが毎回聞きに来るなよ
ボランティアでも飽きるわ
257デフォルトの名無しさん:2009/09/01(火) 23:18:14
な なるほど難しいですか
皆さんどうしたんですか
カルシュウム足りてませんよ
>>253 あい
>>254-255 そうですよねググッテQ&A読んでたら最終的にそういった結論でした
>>256 このスレの意義がなくなるでわないか!国民よ!!
258デフォルトの名無しさん:2009/09/01(火) 23:20:09
WPF使えばわりと簡単に印刷できるよ
君には簡単じゃないだろうけど
259デフォルトの名無しさん:2009/09/01(火) 23:27:41
ごめんごめんもう少し調べてみる
ちょっと安易すぎた
>>258
ありがとう
興味あるけどWPFはもっと腕をあげてからだな
ありがとうね
260デフォルトの名無しさん:2009/09/01(火) 23:29:28
treeViewで指定したnodeを選択できますか?
aspだと
TreeNode.Selected = True
TreeNode.Select()
ようなのですが・・・・
261デフォルトの名無しさん:2009/09/01(火) 23:32:01
ソースかけ
262デフォルトの名無しさん:2009/09/01(火) 23:34:08
TreeViewの方にプロパティがある
263デフォルトの名無しさん:2009/09/01(火) 23:55:38
TreeViewの方にありました!ありがとうございます。
264259:2009/09/02(水) 00:10:03
意外と簡単に出来ました
datatbsuu.Rows[r]["hoe01"].ToString().PadRight(10)
すいません
マジググって分からなかったんで安易に聞いてしまいました
すまぬ
265デフォルトの名無しさん:2009/09/02(水) 00:11:57
それが印刷・・・?
まあ解決したなら別にいいけど。
266デフォルトの名無しさん:2009/09/02(水) 09:36:34
例えばピクチャーボックスに機能を追加したいだけの時、ユーザーコントロールだとピクチャーボックスの機能を
すべて受け渡してやらないといけないんですが、単にピクチャーボックスの派生型から必要な機能だけを追加しても
いいでしょうか?
なにか不具合はありませんか?

できればオリジナルのピクチャーボックス同様デザイナでも利用したいのですがツールボックスに登録して
デザイナでレイアウトできますか?
267デフォルトの名無しさん:2009/09/02(水) 09:54:19
別に問題はない
268デフォルトの名無しさん:2009/09/02(水) 20:42:15
機能を追加するならユーザーコントロールにした方が分かりやすそう
269デフォルトの名無しさん:2009/09/02(水) 20:54:36
そんなわけないでしょ。
ツラが変らないならカスタムコントロール(既存のコントロールからの派生)でいいし、
その方がずっとわかりやすい。

ユーザーコントロールってのは、当たり前だが複合コントロールを作るためのものだよ。
270デフォルトの名無しさん:2009/09/02(水) 20:57:46
ピクチャボックスくらいならユーザーコントロールから派生してプロパティを橋渡ししてる暇があったら
Controlから直接派生して自作できそうだ
271デフォルトの名無しさん:2009/09/02(水) 21:19:19
機能を追加するコンポーネント作るってのもあり
272デフォルトの名無しさん:2009/09/02(水) 21:30:17
起動が遅すぎます
何とかして下さい
273デフォルトの名無しさん:2009/09/02(水) 21:44:31
新しいマシン買えよ。
274デフォルトの名無しさん:2009/09/02(水) 22:03:53
アドビのソフトみたいにスタートアップにこっそり仕込んでおけばいいんだよ。
やりすぎるとOSそのものの起動が激遅になるけどねw
275デフォルトの名無しさん:2009/09/03(木) 12:06:16
ジュネリックコレクション型のcontainがうまくいかなくて困っています
配列へコピーしてもダメで困っているのですがどうしたらいいのでしょうか?
public class Location{
  public int x, y, z;
  public void data(Location position){
    this.x = position.x;
    this.y = position.y;
    this.z = position.z;
  }
  public void data(int x, int y, int z){
    this.x = x;
    this.y = y;
    this.z = z;
  }
}
static void Main(string[] args){
  Location pos1 = new Location();
  Location pos2 = new Location();
  List<Location> FilePosList = new List<Location>();
  pos1.x = 5;
  pos1.y = 10;
  pos1.z = 20;
  pos2.x = 5;
  pos2.y = 10;
  pos2.z = 20;
  FilePosList.Add(pos2);
  if (FilePosList.Contains(pos1)) {
    Console.WriteLine("値が一致しました");
  }
}
276デフォルトの名無しさん:2009/09/03(木) 12:07:16
>>275 すいません 現象は Containsが一致しないことです
277デフォルトの名無しさん:2009/09/03(木) 12:16:03
>>276
pos1 == pos2が成立するようにする
具体的にはEqualsのオーバーライド
278デフォルトの名無しさん:2009/09/03(木) 12:21:19
EqualsやGetHashCodeを実装するのはもちろんだけど,
そういうデータは変更可能なクラスであってはいけない。
あとからメンバの値を変更できないような設計にするか,
クラスではなく構造体にしないと整合性が保たれない。
279デフォルトの名無しさん:2009/09/03(木) 12:32:03
>>276 文字通り Equalsのオーバーライドで求めているものができました
ありがとうございます。

>>278 アドバイスありがとうございます
280デフォルトの名無しさん:2009/09/03(木) 12:47:43
List<T>.Containsの解説にEqualityComparer.Default使うって書いてあるんだから読めよな
しかしこれもダックタイピングなのか
281デフォルトの名無しさん:2009/09/03(木) 13:05:19
EqualityComparer<T>.Defaultは通常はObject.Equalsの結果を返すだけ。
だからオーバーライドしてあればそっちが呼ばれる。ダックタイピングではない。
EqualityComparer<T>.Defaultは面白いプロパティで,TがIEqualityComparer<T>を実装してたら
Object.EqualsじゃなくてIEqualityComparer<T>.Equalsを使う実装に代わったりする。
282デフォルトの名無しさん:2009/09/03(木) 13:12:41
面白いというよりトリッキーだな

IEquatable<T>なら理解できるが
283デフォルトの名無しさん:2009/09/03(木) 13:13:20
ContainsじゃなくてExistsを使うというのも一案
284281:2009/09/03(木) 13:14:35
>>282
間違えた
IEquatable<T>で正解
285デフォルトの名無しさん:2009/09/03(木) 14:03:53
そういえばMSDNでコレクションクラスにIがつくものはプロパティとなっていて
つかないものはクラスとなるけど、サンプルはその記述だけで他が一緒。
これはどういう使い分けをしたらいいの?
286デフォルトの名無しさん:2009/09/03(木) 14:20:52
先頭にIが付くのはインターフェイスといいます。
わからないうちはクラスだけ使ってれば問題ありません。
非常に重要な概念ですがとてもこんなところで説明しきれるようなものではないので
ちゃんと基礎から自分で勉強した方がいいです。
287デフォルトの名無しさん:2009/09/03(木) 14:26:57
フェルマーおつ
288デフォルトの名無しさん:2009/09/03(木) 14:31:07
インターフェイスという言葉も知らない奴に何を教えるんだよ
オブジェクト指向や多態性について10レスくらい使って書けばいいの?
289デフォルトの名無しさん:2009/09/03(木) 15:06:48
下記のようにlistという配列に追加してDataRowを追加しています。
list.Add(DataRow.ItemArray);
それで、テンプレート側でlistの表示を行いたいのですが、
やり方がいまいちわかりません。
foreach等でまわすのはわかるのですが、どうやってまわすのですか?
290デフォルトの名無しさん:2009/09/03(木) 15:12:52
以下をオブジェクト指向に則って書き換えるとするとどのようなコードになるますか?

class MyClass{
public int methodA (int i)
{
return i + 1;
}
public int methodB (int i)
{
return i - 1;
}
}

class ClassB{
public int methodA (int i)
{
return i * 2;
}
public int methodB (int i)
{
return i / 2;
}
}
291デフォルトの名無しさん:2009/09/03(木) 15:17:02
クラス分ける意味ないと思う
292デフォルトの名無しさん:2009/09/03(木) 15:17:24
そんなんにオブジェクト指向もなにもない
293デフォルトの名無しさん:2009/09/03(木) 15:29:28
インタフェースを使って、

interface IStrategy {
int methodA(int i);
int methodB(int i);
}

class ClassA : IStrategy {
...
}

class ClassB : IStrategy {
...
}

GetStrategy() は、ClassAかClassBのどちらかのインスタンスを返すメソッドとして
どこか別のところで、
IStrategy strategy = GetStrategy();
int bar = strategy.methodA(foo);

294デフォルトの名無しさん:2009/09/03(木) 15:30:24
>>292
そうですよね。
昨日行った面接でホワイトボードにこれ出されて、
オブジェクト指向で書き換えるように言われたのですが。。。
上手く回答する事ができず、取りあえずinterfaceをくっ付けてみたのですが、
後学の為に、どうか書けば良かったのか知りたかったのです。
分かる方居ればご教授頂けると嬉しいです。
295デフォルトの名無しさん:2009/09/03(木) 15:33:01
酷い面接だなw
OOP脳っぽいw
296293:2009/09/03(木) 15:33:44
>>294
オブジェクト指向は関係なくて、Strategyパターンを知っているかが求められていたのでは?
297デフォルトの名無しさん:2009/09/03(木) 15:34:18
>>293
ありがとうございます。ストラテジーパターンですね。
やはり、デザインパターンで回答するのがスマートでしたか。
イメージはありましたが、名前が出てきませんでした。
298デフォルトの名無しさん:2009/09/03(木) 15:36:58
>>294
その可能性はありますね。ストラテジーパターンは知ってはいたのですが、
面接官の前でテンパってしまってInterfaceくっ付けるだけで、
その後の説明ではアワアワなってしまいました。
299デフォルトの名無しさん:2009/09/03(木) 15:41:48
面接頑張ったね☆
300デフォルトの名無しさん:2009/09/03(木) 15:59:22
>>291-299
ありがとうございました。
301デフォルトの名無しさん:2009/09/03(木) 18:12:02
質問です。

TabPageとそれに格納されているコントロールを複製して、
同じ挙動・レイアウトのTabPageを作成したいのですが、
どのような方法がありますか?
302デフォルトの名無しさん:2009/09/03(木) 18:37:47
山田 優   A
山本 一太     B
山田 太郎     C

テキストボックスで名前とアルファベットの間にタブを入れると
上のようになるんですが、メモ帳やテキストエディタにコピペすると
きちんと等長になります
テキストボックスコントロールでタブを等長にするにはどうすればいいですか?
303302:2009/09/03(木) 18:42:29
自己解。
フォントが非等長でした。
すんまそん。
304デフォルトの名無しさん:2009/09/03(木) 19:53:15
等幅と言ってくれ寒気がする
305デフォルトの名無しさん:2009/09/03(木) 20:02:56
プロポーショナル・非プロポーショナルという方が実際的な気がする
306デフォルトの名無しさん:2009/09/03(木) 21:24:47
ああ、そうでしたね・・・

細かいこと気にするなよ兄弟
307デフォルトの名無しさん:2009/09/03(木) 22:04:11
>>301
やりたいことがよくわかんないんだけど。
ユーザコントロールにその「タブに格納されているコントロール」群を貼り付けて、
そのユーザコントロールをあちこちのタブページに貼り付けるんじゃダメなの?
308デフォルトの名無しさん:2009/09/03(木) 22:45:25
質問です。

サブスレッドにてメインスレッドのListvViewコントロールから取得したListViewItem似たいし
処理を施してからメインスレッドのListViewに返したいと思っています。
Invokeする際にIndexを取得しておく方法を考えていますが、Itemを返すときに取得した位置に
間違いなく返す方法があれば教えてください。
309デフォルトの名無しさん:2009/09/03(木) 22:48:55
仮想リストビュー便利よね
310デフォルトの名無しさん:2009/09/03(木) 22:48:55
C#からネットの切断を行うことはできますか?
コントロールパネルのネットワーク接続から「無効にする」を選択した状態を再現したいです。
アンセーフなものでも構わないのでご教授いただけませんか
311デフォルトの名無しさん:2009/09/03(木) 22:54:09
>>308
それ日本語かよ。
312デフォルトの名無しさん:2009/09/03(木) 23:28:50
>>310
ネットワークデバイス(ドライバ)を無効化すれば?

>>308
落ち着け
313301:2009/09/03(木) 23:35:03
>>307
それでやりたいことはできそうです。
ありがとうございました。
314デフォルトの名無しさん:2009/09/03(木) 23:42:15
マザーボードの種類がLGA1366よりLGA1156が圧倒的な速さで出回っているのは
これからのCPUの割合がそうなっちゃうからなのか?
メモコンとかで劣るのに。
まじで?
315314:2009/09/03(木) 23:43:48
Janeのタブが悪戯しました。
代わりに誤爆したことを謝ります。
m(´。。)mペコリー
316デフォルトの名無しさん:2009/09/03(木) 23:45:16
おちゃめさんなJaneだなぁ
317デフォルトの名無しさん:2009/09/04(金) 00:16:01
俺もJaneちゃんにいたずらされたいです。
誰かコーディングしてください!
318308:2009/09/04(金) 00:21:06
すいません。やりたいことは

delegate GetItemDelegate();
delegate SetItemDelegate();

private void Button1_Click(sender, e)
{
Thread t = new Thread(new ThreadStart(Send));
t.Start();
}

private void Send()
{
Invoke(new GetItemDelegate(GetItem)); ←これを
〜処理〜
Invoke(new SetItemDelegate(SetItem)); ←もとの位置に戻したいが上手い方法がわからない
}

private ListViewItem GetItem(){〜処理〜}

private void SetItem(ListViewItem lvi){〜処理〜}
319デフォルトの名無しさん:2009/09/04(金) 00:40:46
ListView.Itemsに含まれてるListViewItemは別スレッドで操作できないから
一旦ListView.Itemsから削除することになるけど
適当にListViewItemと元のIndexを持ったクラスでもやりとりすれば良いんじゃね
仮想リストビュー使った方が良いと思うけどね

つか元の位置に戻したいとかよく分からん GetItemの返値捨ててるし
320デフォルトの名無しさん:2009/09/04(金) 00:46:30
やはり>>318の言いたいことはさっぱり理解できんね。
恐らく本人も自分が何をしたのか、よく理解できてないんだろう。

いずれにせよ、自分を考えを整理できない人間が、かつ説明能力も欠如してると
最強の「日本語でおk」なフィーリング溢れる文章が出来上がる、と。
321デフォルトの名無しさん:2009/09/04(金) 00:52:08
>>312
ありがとうございます。
devconというものを使えばできそうなのはわかったのですが
再配布禁止なようなので、できればAPIなどで実現したいです。

ドライバの無効化はどのように実現するものなのですか?
322318:2009/09/04(金) 01:04:09
>>319
なんも見ないでおおざっぱに書いただけなので細かい部分は勘弁してください
仮想モード調べてみたけどソートとかめんどくさそうで・・・
323デフォルトの名無しさん:2009/09/04(金) 01:07:01
別スレッドで処理せにゃならんほど大量のListViewItemねぇ
324312:2009/09/04(金) 01:08:13
>>321
私は組込屋ではないので、ドライバの知識はないです
ドライバなんで、もしかしたらWindowsAPIやDLLの知識が要るかもしれないです

参考になるかはわかりませんが
ttp://okwave.jp/qa1733096.html
325318:2009/09/04(金) 01:25:10
>>319
今ListViewに実装してるソータークラスを改良したらなんとか行けそうな気がしてきたんで
仮想モードを使う方法とインデックス保持専用クラスをやりとりする方法を両方検討してみます
ありがとうございました。
326314:2009/09/04(金) 01:37:44
>>325
気になって調べてみた。
こういったネットワークとかは経験上コマンドラインでなんとかなると思って調べてみると色々でてきた。
自分も試したことないから何とも言えないけど、コマンド関係を調べて見てはどうでしょうか、
http://kgo.dtiblog.com/blog-entry-32.html
327デフォルトの名無しさん:2009/09/04(金) 01:39:01
>>326
Janeのコテハン記憶にやられた。
かまって欲しいのか、そうなのか。
328デフォルトの名無しさん:2009/09/04(金) 01:42:48
Win32_NetworkAdapter の Disable() メソッドでいいだろ。
329デフォルトの名無しさん:2009/09/04(金) 10:13:37
マルチスレッドについてです

どぼんさんところのサンプルを改造しててコンパイルエラーがでました

キーワード"base"は静的メソッドでは使用できません。

BeginInvoke・EndInvokeを使ってメインスレッドで処理しなければいけない

ような気がするんですがどう書いていいかわかりません。

よろしくお願いします。

次でコードを載せます。
330デフォルトの名無しさん:2009/09/04(金) 10:15:05
  public partial class RequestTextBox : TextBox
  {
    public GMapStaticParameters GSParam = new GMapStaticParameters();

    //受信したデータを入れておくMemoryStream
    private static System.IO.MemoryStream requestData;
    //受信したデータを入れるバッファ
    private static byte[] bufferData;

    //html.Textの取得
    public static void GetMap()
    {
      //HttpWebRequestの作成
      System.Net.HttpWebRequest webreq =
        (System.Net.HttpWebRequest)
        System.Net.WebRequest.Create("http://www.hogehoge.com/data.htm");

      //非同期要求を開始
      //状態オブジェクトとしてHttpWebRequestをわたす
      IAsyncResult r =
        (IAsyncResult)webreq.BeginGetResponse(
        new AsyncCallback(ResponseCallback), webreq);

    }

    
331デフォルトの名無しさん:2009/09/04(金) 10:16:25
  //非同期要求が終了した時に呼び出されるコールバックメソッド
  private static void ResponseCallback(IAsyncResult ar)
  {
    //状態オブジェクトとしてわたされたHttpWebRequestを取得
    System.Net.HttpWebRequest webreq =
      (System.Net.HttpWebRequest) ar.AsyncState;
    //非同期要求を終了
    System.Net.HttpWebResponse webres =
      (System.Net.HttpWebResponse) webreq.EndGetResponse(ar);
    //ストリームを取得
    System.IO.Stream st = webres.GetResponseStream();

    //データを読み込むための準備をする
    requestData = new System.IO.MemoryStream();
    bufferData = new byte[1024];
    //非同期でデータの読み込みを開始
    //状態オブジェクトとしてStreamをわたす
    IAsyncResult r = (IAsyncResult) st.BeginRead(
      bufferData, 0, bufferData.Length,
      new AsyncCallback(ReadCallback), st);
  }
332デフォルトの名無しさん:2009/09/04(金) 10:17:28
  //非同期読み込み完了時に呼び出されるコールバックメソッド
    private static void ReadCallback(IAsyncResult ar)
    {
      //状態オブジェクトとしてわたされたStreamを取得
      System.IO.Stream st = (System.IO.Stream)ar.AsyncState;
      //データを読み込む
      int readSize = st.EndRead(ar);
      if (readSize > 0)
      {
        //データが読み込めた時
        //読み込んだデータをMemoryStreamに保存する
        requestData.Write(bufferData, 0, readSize);
        //再び非同期でデータを読み込む
        IAsyncResult r = (IAsyncResult)st.BeginRead(
          bufferData, 0, bufferData.Length,
          new AsyncCallback(ReadCallback), st);
      }
      else
      {
        //データの読み込みが終了した時
        //データをデコードして表示する
        System.Text.Encoding enc =
          System.Text.Encoding.GetEncoding(51932);
        base.Text = enc.GetString(requestData.ToArray());
base.Refresh;
        //閉じる
        st.Close();
        requestData.Close();
      }
    }
  }
インデントは全角スペースです
333デフォルトの名無しさん:2009/09/04(金) 10:21:26
よく読んでないけどとりあえずstaticは論外
334デフォルトの名無しさん:2009/09/04(金) 10:31:50
ありがとうございます
staticを外すと

静的でないフィールド、メソッド、またはプロパティ 'ResponseCallback(System.IAsyncResult)' で、オブジェクト参照が必要です。

と言われますた。
335デフォルトの名無しさん:2009/09/04(金) 10:40:10
そう良かったね。
336デフォルトの名無しさん:2009/09/04(金) 10:46:13
ざまぁね〜な
337デフォルトの名無しさん:2009/09/04(金) 11:40:15
まだstatic残してるだろ
338デフォルトの名無しさん:2009/09/04(金) 11:47:44
解答する気もないのに煽る糞がまた増えてきたな
339デフォルトの名無しさん:2009/09/04(金) 11:52:13
自己紹介お疲れ様です。
340デフォルトの名無しさん:2009/09/04(金) 11:55:46
>>337
天才!

無事コンパイルは通りました。ありがとうございました。

ただ、これをこまま実装した場合、メソッド呼び出しが連続したときなどの対処を考える必要があると思うのですが
連続した場合は動いているスレッドを破毀したい場合どのように改良していくべきでしょうか?
ロードマップだけでもお示しください。何とぞ。
341デフォルトの名無しさん:2009/09/04(金) 12:12:15
ReadCallbackは非同期で呼び出されるんじゃないの?
その中でコントロールを触るにはControl.Invokeが必要
342310:2009/09/04(金) 12:28:30
>>324,>>328
ありがとうございます。

いろいろ調べてみたのですが
とりあえずローカルエリア接続から排除するだけでも私のやりたいことを叶えられそうなので
「NetUseDel」を使ってみようと思いました。

しかし、NetUseDelはネットワークドライブからの接続解除について書かれたものが多く
どうやってローカルエリア接続を解除するのかわかりませんでした。

UseNameには「ローカル エリア接続」、「物理アドレス」、「ネットワークカード名」を試してみました。


もはやこちらでお願いするのもどうかと思うのですがご教授いただけないでしょうか
343デフォルトの名無しさん:2009/09/04(金) 12:56:15
>>341
非同期です。Control.Invokeですね。
たぶん実行時エラーが出るとは思ってました。
344デフォルトの名無しさん:2009/09/04(金) 14:50:44
>>341
とりあえず動作確認まで完了できました

ありがとうございました
345デフォルトの名無しさん:2009/09/04(金) 21:11:17
>>342
無理。
346デフォルトの名無しさん:2009/09/04(金) 22:35:46
>>329でございます。

動作確認が取れたところでちょっとハードに重複してスレッドを呼び出してみました。
そうすると、閉じたストリームに書き込もうとしてるぞエラーが出ました。
場当たり的にあちこちlockを使ってみましたがダメでした。

イベントハンドラがメソッドAを呼び出す。
メソッドAがメソッドBをマルチスレッドで呼び出す。
メソッドBはメソッドCをマルチスレッドで呼び出す。
メソッドCは自分の仕事が完了したかどうかチェックしてまだならメソッドCを呼び出す。
完了していたらControl.Invokeを呼び出す。

イベントはスレッド完了を待たずにどんどん発生します。
メソッドBを呼び出された順番で1つづつ実行したいのですが、BeginInvokeでいいでしょうか?
ヒントをひとつよろしくお願いします。
347デフォルトの名無しさん:2009/09/04(金) 22:56:53
EndGetResponseでReponse取得した後はわざわざBeginReadとかする必要は普通ない

> イベントはスレッド完了を待たずにどんどん発生します。
> メソッドBを呼び出された順番で1つづつ実行したいのですが
メソッドBが呼び出された順番でいいのか? メソッドAが呼び出された順番じゃなくて
なんにせよスレッドに順番なんて保証は皆無なので
メソッドBが呼び出された順をキューとかリストとかに保存して
Invokeを呼び出す時に並べてやる必要がある
その辺をマルチスレッドから扱うにはlockとかが必要
あとControl.BeginInvokeじゃ呼び出されるメソッドの順番は保証がない
348デフォルトの名無しさん:2009/09/04(金) 23:54:14
GraphicsのDrawString等を使用してフォントサイズをピクセル単位で指定して描画することはできるでしょうか?
たとえばサイズを20pxとして描画した場合に全角なら幅20px、高さ20px、半角なら幅10px、高さ20pxとなるような
349デフォルトの名無しさん:2009/09/05(土) 00:04:53
>>347
ありがとうございます。以前はリストを保存してタイマーでスレッドをチェックしてスレッドが走ってなかったらリストをひとつ消化
という仕組みにしてましたが、今回はイベントがタイマーより早く発生しそうでどうするか迷ってました。
かなり操作を早くしないとこのエラーはでないし、そこまで操作が早くなるとキューやリストを消化できない弊害がでそうなので
ストリームの状態を確認してエラーが出たら保存作業をスキップさせるように変更します。

経験に基づいた判断はサンプルコードでは得られないものですね。
ありがとうございました。
350デフォルトの名無しさん:2009/09/05(土) 00:08:18
>>348
ペゾルドの本でもじっくり読んでみたら。
偉そうに言ってる俺は拾い読みしかしてないけどw
http://msdn.microsoft.com/ja-jp/library/dd297679.aspx
351デフォルトの名無しさん:2009/09/05(土) 05:33:46
ラジオボタンで、個人と法人のいずれかを選択させ、
個人の場合は、個人の姓名などの情報、
法人の場合は、会社名や代表者などの情報を入れてもらうように
パネルを切り替えています。
しかし、どちらが前面にあっても、タブオーダーは背面のコントロールにまで飛んでいるようです。
これを、背面に隠れている側のパネルのコントロールにタブが飛ばないようにするには
どうする方法が効率的でしょうか。
イベント発生ごとに、各コントロールのタブストップのTRUE FALSE を
1つずつ記述するしか方法はないでしょうか。
よろしくお願いします。

352デフォルトの名無しさん:2009/09/05(土) 05:58:41
個人の場合のパネルも法人の場合のパネルもフォームに貼り付けられてるのか?
選択された方のパネルだけ貼り付ければもう片方にフォーカスが移るはずがないんだが。
353デフォルトの名無しさん:2009/09/05(土) 06:00:00
背面に隠したパネルのVisibleかEnabledをfalseにすればいい
354デフォルトの名無しさん:2009/09/05(土) 06:02:20
隠れている側のPanel.Enabledをfalseにすればいい気もするけど試さずに書き込み。
355デフォルトの名無しさん:2009/09/05(土) 09:50:40
初歩的な質問ですみません
ふだんVBでコーディングしているんですが、今回C#を書いています
そしたら、インテリセンスが不親切です
メソッドを選択しても()がつかない
メソッドの引数候補の情報が出ない
文法エラーが出て修正してもアンダーラインが消えない

こういうものですか?C#って
356デフォルトの名無しさん:2009/09/05(土) 09:58:03
それはC#じゃなくてVSが糞って言いたいんじゃないの?
引数候補の情報や文法エラーは正しく書いていないだけだし。
357デフォルトの名無しさん:2009/09/05(土) 09:59:11
>メソッドを選択しても()がつかない
これは本当に好みの問題。嫌いな人もいる。
>メソッドの引数候補の情報が出ない
出る。
>文法エラーが出て修正してもアンダーラインが消えない
消える。
358デフォルトの名無しさん:2009/09/05(土) 10:02:13
インテリセンスでメソッドを決定するときには,
目的のメソッドが選択された時点でいきなり ( を入力するのがおすすめ。
359デフォルトの名無しさん:2009/09/05(土) 10:05:45
>>351
氏の質問を見て、私も質問をさせていただきたいのですが…。
私は縦横にパネルを6枚ほど敷き詰めて、
それぞれに、約10ずつのコントロールを置いており、
タブオーダーを約50まで設定していますが、
間に項目が追加になりそうなんです。
その場合、追加したコントロール以降のタブオーダーを全てプロパティ画面で手で直さなくてはならないのでしょうか。
表示⇒タブオーダーの画面だと、コントロールが密集しているのでうまくクリックできない状態です。
よろしくお願いします。
360デフォルトの名無しさん:2009/09/05(土) 10:10:00
VBが自動的にブロックや括弧を閉じてくれるのって,VBはEnd Ifとか綴りが多くて面倒だからなんだよね
C系の言語の場合はあまり変わらないので不要。ちゃんとリアルタイムにエラーが表示されるから閉じ忘れも起こらない。

>>359
もうデザイナ使わずにコードでコントロールを作るようにしたら?
361デフォルトの名無しさん:2009/09/05(土) 10:15:51
はい。
362デフォルトの名無しさん:2009/09/05(土) 10:26:02
>>356
いやーそういうつもりはないんですが

>>357
なるほど 好き嫌いや慣れの部分はしかたないですね
>>メソッドの引数候補の情報が出ない
>出る。
>>文法エラーが出て修正してもアンダーラインが消えない
>消える。
もうちょっと悩んでみます・・・

>>358
なるほど!そうさせていただきます

>>360
なるほど・・・ 


文法エラーが消えないのはなぜなんでしょうかねえ
インストールの時の言語選択が原因ですかね?
363デフォルトの名無しさん:2009/09/05(土) 12:01:05
はっきり言ってVBの方がIDEの補助弱いぜ。
使ってりゃあれって思うこと多い。
リファクタ機能も使えないし、
ツールチップ表示でフルクラス名出ないし、
自作ライブラリのコメント出ないし、
型が色分け表示されないし、
オーバーライドしたいときにoverrideって打って対象メソッド選択とか出来ないし、
こんな感じでイライラする。
364デフォルトの名無しさん:2009/09/05(土) 12:02:52
あと、構文補完も弱かった気がする。
365デフォルトの名無しさん:2009/09/05(土) 12:30:14
>>363
本当にVB(2005以降)の使ったことある?
嘘はいかんと思うよ。

まあVBのIDEの方が遅れてる面が大きいのは事実だが、
リアルタイムのエラー警告だけはVBの方が精度が高いね。
C#みたいにビルドして初めて警告が発せられる・・・ってことがVBにはない。

あと個人的にはメソッドの区切り線の表示機能もC#にあってもいいと思う。
366デフォルトの名無しさん:2009/09/05(土) 12:34:03
で、どれが嘘?
367デフォルトの名無しさん:2009/09/05(土) 12:52:42
VBのコードスニペットだけは使いにくすぎる
なんでC#と同じようにしないんだろう
368デフォルトの名無しさん:2009/09/05(土) 12:52:54
リファクタリング機能があるのならStandard以上のグレードのVSを
持ってるんだろうから試せばわかると思うよ。
369デフォルトの名無しさん:2009/09/05(土) 13:06:33
>>365
>ビルドして初めて
ん?うちのVS2005stdのC#は入力すると即座にエラー一覧に出るんだが。
何か設定か、CPUの能力から自動判断とかじゃないか?
370デフォルトの名無しさん:2009/09/05(土) 13:15:37
staticクラスに宣言されたインスタンスメンバとか
internalクラスをpublicクラスのpublicメンバで公開するとか
そういうのはビルド時までエラーが出ない
371デフォルトの名無しさん:2009/09/05(土) 13:28:18
おお、確かに。文法的に判断もできそうなのに。
public inner a() {
return new inner();
}
static class inner {
int a;
public inner() { }
}
372デフォルトの名無しさん:2009/09/05(土) 14:11:02
メインパネルの中にパネルA、B、Cの3枚を横に並べました。
A、B、Cの横幅を足すと、フォームに収まりきらないので、
メインパネルにはオートスクロールを設定しました。
しかし、ユーザーから、A、B、Cのパネルの内容を一度に閲覧したいという要望がありました。
このとき、
A、B、Cの各パネルのキャプチャーを取得し、各々をやや縮小して別のフォームに横並びに貼り付けて、画面に一覧表示させることは可能でしょうか。
よろしくお願いいたします。
373デフォルトの名無しさん:2009/09/05(土) 14:14:02
はい
374デフォルトの名無しさん:2009/09/05(土) 14:26:14
ものすごく初歩的な質問で申し訳ないんですが

仮にFormを画面左上に移動する関数MoveForm()を作ったとして
あとで、移動先を自由に決めたい、MoveForm(int x, int y)みたいなのが欲しいなーって思ったとします
それでこのとき、引数無しのMoveFormと有りのMoveFormの差は、移動先が決め打ちかどうかの違いしかなかったとします

こういう時は、どういう風に書けばいいのですか?
例えば、MoveForm(int x, int y)という風にオーバーロード?して、その中に引数無しの時との「違い」だけを書くということことがしたいです。
375デフォルトの名無しさん:2009/09/05(土) 14:31:26
void MoveForm()
{
MoveForm(0,0);
}
void MoveForm(int x, int y)
{
//移動処理
}
376デフォルトの名無しさん:2009/09/05(土) 14:39:51
>>373
どうすればできるのでしょうか…。
何かヒントを…。
377デフォルトの名無しさん:2009/09/05(土) 14:41:45
>>361
>>373
あなた、何か怒っているのか?
378デフォルトの名無しさん:2009/09/05(土) 14:46:31
>>377
質問に答えているだけだろ。大人げないとは思うがw
質問する方も素直に、判らないのでどうすればいいか教えて下さいって書けよ。
379デフォルトの名無しさん:2009/09/05(土) 14:48:51
たぶん怒ってはない。
質問に「リテラルに」答えてるだけだと思うよ。
それは>>373がただ意地悪な人間なだけかのか、それとも他のになにか原因もあるのかは
よく考えたほうがいいと思うな。
380デフォルトの名無しさん:2009/09/05(土) 14:50:42
>>375
なるほどー!
引数無しの方をなんというか「オリジナル」みたいに考えていたので
これにどう「付け足すか」っていう風にしか考えることができてなかったです

続けて質問して申し訳ないんですが
オーバーロードの使い方ってどんな風に使うんですか?
OnPaintとかをオーバーロードしてるのは本にあったのですが
自分で作るときにうまく当てはめることができないです。
381デフォルトの名無しさん:2009/09/05(土) 14:51:37
>>373
教えていただけないでしょうか。
dobonさんのページにキャプチャー機能があるとは書いていましたが、縮小拡大が分かりません。
382デフォルトの名無しさん:2009/09/05(土) 14:52:22
オーバーロード?
オーバライドじゃなくて?
383デフォルトの名無しさん:2009/09/05(土) 15:05:38
あ、ごめんなさい、オーバーライドです
384デフォルトの名無しさん:2009/09/05(土) 15:15:09
>>381
そのキャプチャー機能とやらがどういう風なのか知らないし
やりたいこともいまいち意味がわからんが…

画像の拡大縮小はちょっと調べたら出てくるよ
一番簡単なのはDrawImageにそのまま希望するサイズを書くことかな。


// ここまでに何かしらしてGraphics GとBitmap bmpを取得しているとする...
G.DrawImage(bmp, 0, 0, 800, 600);
bmp.Save("hoge.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
385デフォルトの名無しさん:2009/09/05(土) 15:19:04
書き忘れたけどGを800*600としてhoge.bmpに保存してる
別フォームのPictureBoxとかに貼り付けるなら最後に連結したbitmapをそのまま送り込めばいいんじゃない?

つーか悪いこと言わんから他の方法考えろよ
386デフォルトの名無しさん:2009/09/05(土) 15:24:02
手間の割りにあまり有り難味の無い機能だと思う
387デフォルトの名無しさん:2009/09/05(土) 20:26:01
いつまでたってもオブジェクト指向で作れねぇ…
ゲームとかならともかくふつうのアプリ作ってる時にうまくオブジェクトとして切り分けできん

個人で極々規模の小さいものしか作ってないから「動くからいいか」ってなってるのも悪いって自覚はしてるんだがな…
388デフォルトの名無しさん:2009/09/05(土) 20:28:14
別に悪く無いだろ
389デフォルトの名無しさん:2009/09/05(土) 20:53:29
フォームにA、Bの2枚のパネルを並べてそれを継承し、
新しいフォームを作成しました。
継承先でパネルAにコントロールやデータグリッドビューをたくさん配置したのですが
継承元のフォームでパネルAを削除してリビルドしました。
継承先のフォームからパネルAの箇所がごっそり消えていたので安心していましたが、
パネルAに置いていたコントロールがどうも残っているようです。
これは、やり直した方がいいでしょうか。
390デフォルトの名無しさん:2009/09/05(土) 20:55:20
知らんがなそんなこと。
391デフォルトの名無しさん:2009/09/05(土) 20:56:57
そういうのは継承を使わない方がいい
フォームAは共通にして,パネルAやパネルBのところをユーザコントロールで差し替えられるようにするのが普通
392デフォルトの名無しさん:2009/09/05(土) 21:02:23
>>390
冷たいこと言わないで答えてあげようよ。
俺たちは同士じゃねえか。
393デフォルトの名無しさん:2009/09/05(土) 21:03:55
>>391
やり直しはできないものなのかな。
デザイナーのところで消していくとどうなるんだろ。
他にもゴミが残るの?
394デフォルトの名無しさん:2009/09/05(土) 21:14:24
>>381ですが、
皆さんありがとうございます。

契約書作成フォームなのですが、
入力項目が多いので1画面に収まりきりません。
なのでスクロールバーや、モーダルフォームを加えて入力をしてもらうようにしているのですが、
利用者がパソコンが苦手な人が多く、
ふと画面から隠れてしまったものがどこにいったのか気になるようです。
なので、
「入力内容一覧」ボタンを置いて、
そこをクリックしたら全入力内容を凝縮させて1枚のパネルやフォームで表示させたいと思ったんです。
けど…文字が小さくなりますもんね。
皆さんはどのような工夫をされているのでしょうか。
395デフォルトの名無しさん:2009/09/05(土) 21:16:06
>>394
なんか数週間前から同じ質問を何度もずっとしてるようだけど、
同じところで何度聞いても同じだと思うよ。
っていうか、どこで聞いても恐らく同じこと。
やろうとしてることに無理があるんだから。
396デフォルトの名無しさん:2009/09/05(土) 21:27:34
もうHTMLでも吐いてブラウザ丸投げでいいよ
397デフォルトの名無しさん:2009/09/05(土) 21:32:43
>>394
入力をいくつかのモーダルフォームに分けて順次入力させれば良いんじゃないの?
あとはそのモーダルフォームが隠れないようにすれば。
398デフォルトの名無しさん:2009/09/05(土) 21:38:00
キー操作でさくさく、ページ切り替えみたいに全部みれればいいんでない。
399デフォルトの名無しさん:2009/09/05(土) 21:43:19
じゃタブコントロールを使えと言う事で
400デフォルトの名無しさん:2009/09/05(土) 21:56:28
画面に入りきらないほど内容が多いみたいだけど、
全てのモーダルが隠れないようにできるの?
やや重ねたらいいのかな。
401デフォルトの名無しさん:2009/09/05(土) 21:58:24
>>393
ですが、どなたかご経験者の方、
教えていただけないでしょうか。
自分も、>>389と同じで、
実態のないコントロールが残っていて悩んでいます。
(-_-;)。
402デフォルトの名無しさん:2009/09/05(土) 22:02:36
どのみちそんな設計を根底からぶっ壊すようなことしちゃったら作り直しだろ
403デフォルトの名無しさん:2009/09/05(土) 22:05:12
継承元のフォーム上のコンテナ(パネル)は、デザイナからは
「見えない」仕様なんだろう。

アクセス修飾がprivateの場合との整合性をとるためか、ただ実装が
面倒だからかは知らないが。

いずれにせよ、普通は>>391の指摘どおりにするよ。
404デフォルトの名無しさん:2009/09/05(土) 22:13:58
>>397
モーダルフォームの表示時は大きめに表示させて、
入力が終われば小さく縮小してパネルの片隅に納めたらいいんじゃないか?
けどそれじゃ、>>394がやろうとしていたことと同じか。
できるかどうかも分からないのに書いてしまったが。
405デフォルトの名無しさん:2009/09/05(土) 22:18:49
1画面に納めようとすることはできそうだけどさ。
無理して、多くの項目を1画面に圧縮したところで、
ユーザーが読むことができるのか?
若者だけが使うのならいいかもしれないけど、
高齢者も利用するのなら、文字が小さいことが逆にストレスになると思うよ。
うーん、どうすればいいんだろう。
406デフォルトの名無しさん:2009/09/05(土) 22:30:05
>>394
仕様がわからないから見当違いかも知れないけど。
・入力フォームとは別に入力済みのデータの一覧か、出力帳票のイメージを表示するフォームを用意して、
 両方を同時に見れる&操作できるようにする
  -> 別のフォームは可変サイズでスクロールバーを用意するか
   縮尺率を自由設定(画面に収まるように自動調整機能あり)出来るようにする
・入力フォームに折り畳み機能を付ける
  -> 秀丸エディタみたいに画面左側に + とか - みたいなボタン?を用意して、ブロックごとに
   表示したり消したりユーザの自由に出来るようにする
・入力データの属性を分類して、分類ごとに入力画面をまとめる
 まとめたらタブコントロールを利用する

たいていは3つめを使う。
407デフォルトの名無しさん:2009/09/05(土) 22:32:31
>>394
あんまり綺麗なやり方じゃないけど1枚辺り1フォームで数個のフォームを同時起動するとかは?
画面から契約書が消えることがダメなら>>398が言うみたいにキー操作で画面切り替えしていくのもダメな訳?
408デフォルトの名無しさん:2009/09/05(土) 22:47:39
はじめまして。
ブラウザ上のテキストボックスに文字を入力させたいです。
書き込む文字云々はできてますが、肝心のそこがわかりません。
テキストファイルに書き込むとかなら方法わかるのですが…
どのようにして、ブラウザ上のテキストボックスを判定して
どうやって書き込めばいいのでしょうか。。。
なんでもいいです、ヒントをください。
409デフォルトの名無しさん:2009/09/05(土) 22:55:04
>>406
自分なら、折り畳み方式となる 2 番目を選ぶ。
動作は jQuery のアコーディオンや、WPF の Expander 的にする。
実装に際しては、全体の折り畳み状態のワンタッチ切り替えも付ける。

画面遷移方式の場合、入力不足などを提示するのが難しいし、画面に
よってコントロール数が偏りやすい点がイマイチかな。
410デフォルトの名無しさん:2009/09/05(土) 22:59:52
一方ロシアはExcelマクロを使った
411デフォルトの名無しさん:2009/09/05(土) 23:02:34
>>407
キー操作で画面切り替えするのって、
alt+tabみたいなイメージ?
それとも、
alt+kで画面A、alt+Lで画面Bみたいなの?
412デフォルトの名無しさん:2009/09/05(土) 23:17:07
折り畳み方式、特にカーソルを当てるだけで展開されるコントロールは
ユーザーもびっくりのいい設計だと思う。
ただ、>>394の対象ユーザーが、全入力内容に対する一覧性を求めているようなので、
>>406の1番目もユーザー寄りのいい設計になるかと思う。

全項目を網羅した単票を用意して画面右側にプレビューさせる。
プレビューの文字が小さすぎなければいいけど…。
作るのは…超めんどくさいな。
413デフォルトの名無しさん:2009/09/06(日) 00:39:07
>>411
1行目で書いたのは前者で2行目は後者のイメージかな
414デフォルトの名無しさん:2009/09/06(日) 00:58:51
WPFでウィンドウ位置を設定するには、
Window windowlocation = new Window();
windowlocation.WindowStartupLocation = WindowStartupLocation.Manual;
windowlocation.Left = 700;
のほかになにが不足してますか?
415デフォルトの名無しさん:2009/09/06(日) 01:14:03
AcrobatReaderとかPowerPointとかOOo Impressみたいにプレビューペインと
ドキュメントペイン作って中でスクロールさせちゃえよ。
PDFとかプレゼンテーションツールみたいに操作します。って言えばいい。
既存のUIの方がわかりやすいと思うんだよなぁ。
416デフォルトの名無しさん:2009/09/06(日) 01:17:24
>>414
Leftの他にTopも必要じゃないの?
WPF知らんけど
417デフォルトの名無しさん:2009/09/06(日) 01:25:53
知らないなら黙っててくれませんか?
418デフォルトの名無しさん:2009/09/06(日) 02:16:10
不足してない
419デフォルトの名無しさん:2009/09/06(日) 02:22:19
>>365
でどれが嘘?
420デフォルトの名無しさん:2009/09/06(日) 02:56:33
バージョン特定してないのにどれがどうとかないだろ
コメントは2008から表示されてるとか2010の評価版は型の色分けされてるとか
ツールチップのフルクラス名についてはたぶん勘違いだと思う

あとoverrideはOverridesと間違えてないか
421デフォルトの名無しさん:2009/09/06(日) 03:05:28
>>417
書いてくれた相手に失礼だ。
憶測も立派な意見。
大抵は憶測から新しい発見がある。
422デフォルトの名無しさん:2009/09/06(日) 04:21:03
>>394のいうイメージでやってみた。
確かに画像はキャプチャーされるし拡大縮小のロジックもあったけど、
もし画面やコントロールのキャプチャーをとり、縮小表示させた。いのであれば要注意だ。

画像を縮小したら文字がつぶれてしまうぞ。
例えば文字フォント9ポイントの入力フォームを作成し、それの縮小番も見たら、画像がぼやけていた。
423デフォルトの名無しさん:2009/09/06(日) 04:57:18
そもそも>>394は別の方法を模索しているでしょ。
424デフォルトの名無しさん:2009/09/06(日) 05:04:09
TextWriterに書き出された内容を文字列として受け取りたいのですが、
どうすれば良いでしょうか。ToString()等では取れませんでした。
いったんMemoryStreamに吐き出してから
ReaderでRead()することで動作は実現しましたが…。
425デフォルトの名無しさん:2009/09/06(日) 05:28:58
それでいいよ
426デフォルトの名無しさん:2009/09/06(日) 06:21:53
StringWriterも知らんのか
427デフォルトの名無しさん:2009/09/06(日) 06:23:25
>>423
そうなんだけど…
画像キャプチャーしてサムネイルみたいに縮小させる表示は俺も覚えておこうと思っていた。
結局は、縮小は特に画像が劣化してしまうね。bmp90%でもかなり汚くなった。
きれいになんかできないよね。
…カクン。
428デフォルトの名無しさん:2009/09/06(日) 07:38:12
アルゴリズムを指定して拡大縮小する方法があるだろ。
429デフォルトの名無しさん:2009/09/06(日) 07:46:51
でその拡大縮小を>>394は本当にほしがっているのかと。
木とブランコの絵思い出したわ。
430デフォルトの名無しさん:2009/09/06(日) 08:38:13
>>428
概要を…教えてもらえませんか?
今、ネットで探したけど見つかりませんでした。
431デフォルトの名無しさん:2009/09/06(日) 08:41:43
>>429
見映えが良いなら、採用したいんじゃないか?
裏に隠れた項目も含めて、一覧で全項目を画面表示できたら壮快だし。
僅かながらのサプライズもあるだろう。
彼はそのサプライズを求めているのだろうけど、気持ちは分かる。
432デフォルトの名無しさん:2009/09/06(日) 08:57:11
433デフォルトの名無しさん:2009/09/06(日) 09:36:58
WPFならベクトルだから綺麗に縮小できる・・かな?
434デフォルトの名無しさん:2009/09/06(日) 10:15:08
>>420
バージョン特定ったって、2010はないだろ。

今VBで確認してみたが、
ツールチップでフルクラス名は表示されない。
リファクタ機能はない(少なくとも標準の機能では)。
自作ライブラリのコメント表示は2008からはできるようになってるな(2005ではできなかった、もしくは制限があった)。
クラスの色分けはされない。
Overridesは2008ではできるようになってるな(2005ではできなかったと思うが)。
435デフォルトの名無しさん:2009/09/06(日) 10:23:15
5つのうち3つは2008でもそのままで2005では多分全部正しかったと思うがなんで
>本当にVB(2005以降)の使ったことある?
>嘘はいかんと思うよ。
こうなるのか不思議だよ。
436デフォルトの名無しさん:2009/09/06(日) 10:25:36
まあWPF向きではあるな
字が小さいなら拡大鏡みたいな機能を付けるのも簡単
437デフォルトの名無しさん:2009/09/06(日) 13:35:19
>>434
リファクタ機能は2005からある(C#に比べて貧弱だが)
まあ、Refactor!っていうフリーで使えるアドインも一応あるし。

オーバライドの入力支援も、少なくとも2003からある。
ただし2003の時代はエディタ上部のドロップダウンから選択する方式だったが。

>>435
あんた不思議な思考回路してるな。
これが俗に言う「幸せ回路」って奴かな。
最近流行り(?)の「新型うつ」っていうのはこういう思考回路の人がかかる病気なんだろうな恐らく。
438デフォルトの名無しさん:2009/09/06(日) 14:01:07
VBのリファクタ機能って名前変更だけで他は全部使えないだろ?
アドインで追加するのは今の話と違うんじゃないの?

オーバーライドだけは勘違いだったみたいだが。
で、それでも事実上4つは正しいのに幸せ回路とか
お前ちょっとおかしいんじゃないか?

5つの内4つは正しいのに、嘘書くな、使ったことないだろって書く方が正常なわけ?

まともに言い返せないから意味不明な人格攻撃を始めるやつの方がまともとは思えんね。
439デフォルトの名無しさん:2009/09/06(日) 14:07:23
ぶっちゃけ何の原語で書こうとも、どんな文法で書こうとも

自動化できて早ければいいじゃん

人間様がそれで楽できれば
440デフォルトの名無しさん:2009/09/06(日) 14:13:01
>>438
「幸せ回路クン」って何でも自分に都合がいいように解釈するから
議論が成り立たないのがよくわかったよ。
441デフォルトの名無しさん:2009/09/06(日) 14:27:04
都合がいいって…

リファクタ機能が名前変更だけはできるってのはわざわざ書かなかっただけ。
名前変更できるだけではリファクタ機能があるとは言えんだろう普通。
つか元々C#で使える他のリファクタ機能が使えないことをさして言ったんだ。
ちょっと言葉足らずだったとは思うが普通意図は通じるだろう。

オーバーライドだけは勘違い。

君はこの2つを指して嘘とか使ったことないだろとか都合がいいなんて言ってるの?

まあもう言っても無駄なタイプだと思うけど。
442デフォルトの名無しさん:2009/09/06(日) 14:29:05
>>439
でもさ、自動化できて早くなったとしても肝心の人間の中身が
つまらんことで言い合ってスレを消費するような阿呆だったら変わりないよな。
443デフォルトの名無しさん:2009/09/06(日) 14:36:33
当然知ってると思うけどInterpolationModeで補完拡縮できるよ
http://www.atmarkit.co.jp/fdotnet/dotnettips/023resize/resize.html

まあ、そうはいってもそんなにたいしたことないから
本気でやりたいならライブラリとか探した方がよさそう。
444デフォルトの名無しさん:2009/09/06(日) 14:42:27
ライブラリ探しても大して変わらんと思うけど。
445デフォルトの名無しさん:2009/09/06(日) 14:45:52
まあそれはそうかもしれんけどさw
だから”本気でやりたいなら”って書いたじゃん
446デフォルトの名無しさん:2009/09/06(日) 14:51:30
いや、画像の拡大という特性上、本気でやったところで出来ることは限られてるわけで、
標準の機能だけでもほとんどその上限レベルだから、
良くしようがないんじゃないかって話。
447デフォルトの名無しさん:2009/09/06(日) 14:52:42
大して変わらないのに、ライブラリ探せ?

何言ってんの?
448デフォルトの名無しさん:2009/09/06(日) 14:53:28
それはその通りだね。だけど今回は縮小だからなんか凄い人が凄い方法でやってないかなーって思っただけ
まったく調べてもないし妄言だと思ってください。
449デフォルトの名無しさん:2009/09/06(日) 14:57:48
おっと縮小ならまだやりようはあるか。
まあ期待される結果になるかは別問題ではあるけど。
450デフォルトの名無しさん:2009/09/06(日) 14:58:22
どうでもいいよ
451デフォルトの名無しさん:2009/09/06(日) 15:05:44
つまり結論としてデカい液晶を使えってことですね
452デフォルトの名無しさん:2009/09/06(日) 15:06:31
拡大機能付ければよくね
453デフォルトの名無しさん:2009/09/06(日) 15:08:35
>>452
ソース画像は持ってるもんな。
でも全体が潰れてる訳だから全部拡大鏡で見なきゃいけないからそれが優しいGUIかどうかは…。
454デフォルトの名無しさん:2009/09/06(日) 16:56:52
ジェネリックスで生成したtabPageをpublicにしたいのですが
どう宣言すればよいのでしょうか?
455デフォルトの名無しさん:2009/09/06(日) 17:01:03
日本語でおk
C#でもおk
456デフォルトの名無しさん:2009/09/06(日) 18:14:02
ラインシェイプが増えましたが、
DOCKはないんですか?
せっかく楽にきれいな罫線が引けると思ったのに。
パネルもテキストボックスもラベルも、ボーダーラインは黒か3Dしかないしさ。
寂しくて辛くて飲まずにはいられません。
457デフォルトの名無しさん:2009/09/06(日) 18:21:20
ラインシェイプって何?
458デフォルトの名無しさん:2009/09/06(日) 18:29:34
プログラミング素人です
以下のような機能をもつニコニコ動画やYoutubeを観るための
専用ブラウザを作ろうとしています
【機能】
ニコ動上で検索結果一覧からある動画を選んだ際、
その動画に含まれる映像シーンと同じシーンを含む動画を
検索結果の一覧に含まれる動画を探索して取得

言語はC#です。調べた限りではおそらく以下のような流れになると
考えているのですがもっと良い方法はあるでしょうか?

1..動画を選択した際にニコ動のAPIにアクセス→FLV取得
2.FLVをaviに変換(この辺自信ありません)
3.シーンに分割
4.検索結果内の動画を取得し,同様にシーンに分割
5.選択した動画におけるシーンと総当たりで比較

画像解析にはOpenCVというライブラリが良いということを聞いたので
それを使おうと思っています。宜しくお願いします。
459デフォルトの名無しさん:2009/09/06(日) 18:35:42
ということは、一度すべての動画をローカルに引っ張ってくるって事?
はた迷惑なソフトだな
460デフォルトの名無しさん:2009/09/06(日) 18:37:04
まぁ、基本的に無理って考えた方がいいな。
461デフォルトの名無しさん:2009/09/06(日) 18:38:26
>>458
何に使うためにそんなことするの?
かなりの高スペPCでも処理時間半端じゃないと思うんだが。
462デフォルトの名無しさん:2009/09/06(日) 18:39:49
>>461
P2P感覚で動画を地引きしたいんだろ。
463デフォルトの名無しさん:2009/09/06(日) 18:40:04
>>457
3.5のsp1からついてる線引きコントロールさ。
ドックがなきゃ、危なくて使えねえよ。
464デフォルトの名無しさん:2009/09/06(日) 18:49:55
>>459>>462
目的は卒業研究です
上記ではブラウザと書きましたが特にブラウザにこだわる必要はなく
入力として一つの動画が与えられた時に、それと同一シーンを含む
動画を抽出するシステムがあれば問題ないです
C#しか使ったことがないので、クライアントサイドのアプリケーションしか
思い浮かびませんでした

何か良い方法はありますでしょうか?
465デフォルトの名無しさん:2009/09/06(日) 18:52:32
卒研っていつから自分で考えずに他人任せで良くなったんだ?
吐きそうになるわ。
466デフォルトの名無しさん:2009/09/06(日) 18:56:06
プログラミングは手段でしかないんだから別に質問していいだろ
467デフォルトの名無しさん:2009/09/06(日) 18:57:07
その手段を考えるのが研究じゃないのか
468デフォルトの名無しさん:2009/09/06(日) 18:58:37
>>464
そのOpenCVがどういうライブラリかも知らんけど
もっと他のアプリ作る訳にはいかんわけ?
469デフォルトの名無しさん:2009/09/06(日) 19:00:22
たぶんアクセスし過ぎで運営から弾かれると思うけど
とりあえず458の方法で作ってみればいいじゃん

なんでプロトタイプスラ作らないで質問しに来るわけ
470デフォルトの名無しさん:2009/09/06(日) 19:01:55
動画関係の研究室なら実験用の動画があるだろ
それを使えよ
471デフォルトの名無しさん:2009/09/06(日) 19:02:20
この場合、手段の研究だもんな。
472デフォルトの名無しさん:2009/09/06(日) 19:03:14
研究なんて大仰なもんじゃなく卒業工作だろこれはwww
473デフォルトの名無しさん:2009/09/06(日) 19:04:27
いえ理論重視の研究です
上記の力技でもやれんことはないことは分かってるけど
早く出来る方法があれば知りたかっただけ
あんがと
474デフォルトの名無しさん:2009/09/06(日) 19:05:14
テキストボックスに、
「あいうえお」と入れて、別のラベルにも表示させたいのですが、
「あ」「い」など、1文字単位で確定したときに、ラベルに反映させる方法はありますか?
もしあれば教えてください。
よろしくお願いします。
475デフォルトの名無しさん:2009/09/06(日) 19:05:20
>>472
これはあくまで研究の一部分です
476デフォルトの名無しさん:2009/09/06(日) 19:06:24
理論なんか出てきたか?

>>474
TextBoxにTextChangedとかいうイベントがある
477デフォルトの名無しさん:2009/09/06(日) 19:07:14
研究(笑)
478デフォルトの名無しさん:2009/09/06(日) 19:09:23
>>474
変換確定前にそういう事をしたいとエスパーすると
Imm〜
系のWinAPIを使うしかないんじゃね
479デフォルトの名無しさん:2009/09/06(日) 19:09:51
>>476
社会学系の文系院で
理論検証にプログラムが少し要るってことです
480デフォルトの名無しさん:2009/09/06(日) 19:09:52
まず大学名をいえ
481デフォルトの名無しさん:2009/09/06(日) 19:10:59
いいよ言わなくてw
482デフォルトの名無しさん:2009/09/06(日) 19:11:11
Bランの私大です
483デフォルトの名無しさん:2009/09/06(日) 19:12:59
違うアプローチを考えたほうが良さそうな気がするけどな…
484デフォルトの名無しさん:2009/09/06(日) 19:13:29
社会学(笑)
485デフォルトの名無しさん:2009/09/06(日) 19:14:00
>>483
わかりました
ありがとうございます
486デフォルトの名無しさん:2009/09/06(日) 19:20:49
>>464
幼稚な煽りは気にすることはないと思うが、
少なくとも今のPCの性能じゃ無理。
恐らく10年後のハイエンドPCでも無理な仕様だと思う。
487デフォルトの名無しさん:2009/09/06(日) 19:22:19
まあこのキーワードでググれば卒業研究から実名がばれることも想像できない程度だからな。
下手に卒研なんて出すのが阿呆。
488デフォルトの名無しさん:2009/09/06(日) 19:26:55
ふーんしょうもない煽りしかできないお前さんはアホじゃないって言うんだw
これが2ch脳かね。人間として終わってるだろ。
489デフォルトの名無しさん:2009/09/06(日) 19:29:34
>>486
ですよね・・・・。
なんとか別の手段を考えてみます・・。
490デフォルトの名無しさん:2009/09/06(日) 19:33:38
手段だの何だのはどうでもいいけどさ
サーバに迷惑だけはかけるな
491デフォルトの名無しさん:2009/09/06(日) 19:35:12
>>489
まともな回答が来ないのはお前の質問の仕方が…
と言おうと思ったが言う前に低脳がいっぱい沸いてたわ

答えにくいなら答えなくてもいいが理論の検証には何が必要なんだ?
もしくは、どういう理論を証明したいんだ?

あの方法でやらなくてもいいんだとして最低限これは必要ってのはないのか?
492デフォルトの名無しさん:2009/09/06(日) 19:41:33
そのへん言うと特定特定いう馬鹿が出てくるからごめんなさい
回答してくれた方ありがとうございました
493デフォルトの名無しさん:2009/09/06(日) 19:43:48
だろうな。
まあ、それがわからんことにはこっちも他の方法を考えることができんし
自分でなんか他の方法考えついたらまた聞きに来たら?
494デフォルトの名無しさん:2009/09/06(日) 19:44:48
じゃあ最初から質問するなよ!
495デフォルトの名無しさん:2009/09/06(日) 19:47:25
>>493
ありがとうございます

>>494
うんこ
496デフォルトの名無しさん:2009/09/06(日) 19:49:46
最初から最後まで最悪な奴だったな。
497デフォルトの名無しさん:2009/09/06(日) 19:51:50
2ch脳は黙っとけや
498デフォルトの名無しさん:2009/09/06(日) 20:20:29
2ch脳なんて煽り言葉を使う人こそ、2ch脳と呼ばれるに相応しいと思う。
自己紹介してるようにしか見えんな
499デフォルトの名無しさん:2009/09/06(日) 20:28:38
どうでもいいよ
休みがあと少しだからって興奮すんなよ
500デフォルトの名無しさん:2009/09/06(日) 20:28:52
初歩的な質問です

クラスA
 メソッドA
 メソッドA’
 メソッドB
 メソッドB’
 プロパティX

のように、プロパティXの値によってメソッドAかメソッドA’ メソッドBかメソッドB’のどちらかが呼び出されます
でも呼び出し側はそれを意識したくありません
将来的に分岐はこれ以上増えません あくまで2つのうちどちらかに分岐します
こんなときはどんなパターンを使えばいいでしょうか?
一つのメソッドの中でifで分岐しちゃうのが一番楽ですか?
ちなみにメソッドはこの先増える可能性があります
501デフォルトの名無しさん:2009/09/06(日) 20:28:56
あれか、そろそろ荒らしに反応する人も荒らしって書けばいいのかな
502デフォルトの名無しさん:2009/09/06(日) 20:31:14
>>500
Stateパターン
503デフォルトの名無しさん:2009/09/06(日) 20:31:50
Factory パターン
504デフォルトの名無しさん:2009/09/06(日) 20:43:28
>>500です
すみません。重要なことですが、状態は(分岐条件は)アプリケーション実行中に変化します。
505デフォルトの名無しさん:2009/09/06(日) 20:50:01
別に重要じゃない件
506デフォルトの名無しさん:2009/09/06(日) 20:52:59
Factoryパターンだと途中で変わるのには相性が悪いね
507デフォルトの名無しさん:2009/09/06(日) 20:57:05
TextBoxに次しか入力をさせたくないので次のコードを記述し
数値のみ入力を受け付ける様にする事は出来たのですが、
ABCも入力を許可したい場合にはどうすれば良いでしょうか?

@ 数値
A ピリオド
B BackSpace
C Delete

private void txtTest_KeyPress(object sender, KeyPressEventArgs e)
{

  if (e.KeyChar < '0' || e.KeyChar > '9')
   {
     e.Handled = true;
   }
}
508デフォルトの名無しさん:2009/09/06(日) 20:58:14
>>502
ちょっと調べてみます。ありがとうございました。
>>503
わたしも最初それが思い浮かんだんですが、実行中に条件が変化したらって考えると・・・
>>506
Factoryは使ったことあったんですが、工夫すれば使えますがなんか遠回りしてる気がしたんで・・・ありがとうございます
509デフォルトの名無しさん:2009/09/06(日) 20:59:01
分岐が常に2パターンで、増えるメソッドの方は分岐しない
→そのまま

分岐が常に2パターンで、増えるメソッドの方も常に2パターン分岐する
>>502
510デフォルトの名無しさん:2009/09/06(日) 21:05:19
>>509
ありがとうございます 解説読んでてStateパターンがよさそうと思いました

とりあえず試してみます。ありがとうございました。
511デフォルトの名無しさん:2009/09/06(日) 21:57:09
>>507
こういうのは自分で考えた方がためになるよ?
動作確認はしてないし、この方法だとたぶん制約があるから、確認はちゃんとしてね。

System.String ok = "0123456789."
e.Handled = ( 0x20 <= e.KeyChar ) && ( 0 > ok.IndexOf( e.KeyChar ) );
512デフォルトの名無しさん:2009/09/06(日) 22:17:44
普通にArray.Containsでいいような・・・

ちなみに、BSかDELのどちらか(確かBSの方だったと思うけど・・・)は
KeyDownの方でないと弾けない。
513デフォルトの名無しさん:2009/09/06(日) 22:27:19
>>511
ありがとうございます。参考にさせて頂きます。
514デフォルトの名無しさん:2009/09/06(日) 23:45:26
いや、だからそんな間抜けな方法じゃなくて普通にArray.Contains使おうよ。
515デフォルトの名無しさん:2009/09/07(月) 00:23:47
ペンでラベルの四隅にオレンジ の枠線を描こうとしたら、2辺しか描かれません。
0 0 ワイズ 0
0 0 0 ハイト
0 ハイト ワイズ ハイト
ワイズ 0 ワイズ ハイト
と記載しました。
下の2つが無視されているようです。
なぜでしょうか。
516デフォルトの名無しさん:2009/09/07(月) 00:25:50
何言語だよ
517デフォルトの名無しさん:2009/09/07(月) 00:50:12
>>515
今年は(10年区切りで)2000年代最後の年なわけだけど、2010年ではない。
この意味わかる?

っていういか、こういう算数レベルのことが直感的にわからない人は
プログラマ向いてないよマジで。
518デフォルトの名無しさん:2009/09/07(月) 00:51:10
うるせえばーか
519デフォルトの名無しさん:2009/09/07(月) 00:51:50
範囲外への描画は無視されるんじゃないか
wiseが意味不明だけど
520デフォルトの名無しさん:2009/09/07(月) 00:52:38
ハイトワイズわろた
521デフォルトの名無しさん:2009/09/07(月) 00:56:05
"height","width"と読め
522デフォルトの名無しさん:2009/09/07(月) 01:01:43
http://dictionary.goo.ne.jp/leaf/ej2/80875/m0u/width/
Goo辞書で発音聞けますよ
523デフォルトの名無しさん:2009/09/07(月) 01:03:42
いや俺ネイティブだから要らんわ
524デフォルトの名無しさん:2009/09/07(月) 01:06:40
Linuxのカタカナ表記は何だって話になる
525デフォルトの名無しさん:2009/09/07(月) 01:12:37
ワイズってのは新しいなしかしw
大昔ヤマハのPCでそんな名前のがあったような
526デフォルトの名無しさん:2009/09/07(月) 01:12:45
Enumerableってどうよむんですか
527424:2009/09/07(月) 01:21:36
>>425,426
StringWriterでそのまま取れました。お恥ずかしい限りです。
ありがとうございました。
528デフォルトの名無しさん:2009/09/07(月) 01:26:46
気にするな
恥ずかしいことじゃない
俺も知らんかったからな
529デフォルトの名無しさん:2009/09/07(月) 01:27:05
>>526
いにゅまらぶる
530デフォルトの名無しさん:2009/09/07(月) 01:56:49
ワイズか、懐かしい
30年前、BASIC始めたとき俺もそう呼んでいたな
WIDTH 80,25
531デフォルトの名無しさん:2009/09/07(月) 04:15:41
>>145
俺も思ったw
532デフォルトの名無しさん:2009/09/07(月) 06:42:34
>>521
ヘイト?
ワイス?
何て読むのが通常なの?
533デフォルトの名無しさん:2009/09/07(月) 06:45:13
>>519
彼の指定は範囲外になるの?
一見、範囲内の境界座標を指定しているように見えるが…。
534デフォルトの名無しさん:2009/09/07(月) 06:46:10
>>532
ヘイ
ウィスス
535デフォルトの名無しさん:2009/09/07(月) 07:25:13
>>533
(0, 0)          (width-1, 0)
┌────────┐
└────────┘
(0, height-1) (width-1, height-1)
536デフォルトの名無しさん:2009/09/07(月) 08:25:49
背景画像を表示できるテキストエディタを作りたいのですが、TextBoxではできませんよね?
方法あれば教えてください
537デフォルトの名無しさん:2009/09/07(月) 09:42:16
WPFならグリッドにイメージとテキストボックスを入れるだけ、C#のフォームウィンドウは簡単にはできない
538デフォルトの名無しさん:2009/09/07(月) 10:36:32
今から見た目を重視したアプリ作るならいいかげん観念してWPF使った方がいいね
自前描画は一切無しで自由自在に外観を操れる
539デフォルトの名無しさん:2009/09/07(月) 17:22:39
.net framework compact ですが
Graphicsには
TranslateTransform()
RotateTransform()
などのサポートがありません

画像を任意の角度で回転させたいのですが、よい方法がありませんか?
90度刻みではちょっと困りまして・・・imgeのRotateFlipではもの足りません
CかC++の座標変換と補完のサンプルプログラムなどでもかまいません
あるいはフリーのライブラリでもかまいません(小さいやつがいいですが)
よろしくお願いします
540デフォルトの名無しさん:2009/09/07(月) 17:27:28
自分で書く
高校レベルじゃん?
541デフォルトの名無しさん:2009/09/07(月) 18:05:29
やってみまーす
542デフォルトの名無しさん:2009/09/07(月) 20:08:27
ただの座標変換と訳が違うのに高校レベルなわけないだろアホか。
回転行列を全ての座標に施せばいいとでも思ってるのかw
543デフォルトの名無しさん:2009/09/07(月) 20:12:50
ぶっちゃけ回転させると
DirectX(SlimDXorMDX)の方が楽な気がする
544デフォルトの名無しさん:2009/09/07(月) 20:13:01
誰か…誰か…
ユーザビリティーに優れたインターネットサイトを教えてください。
ユーザビリティーに優れたアプリを作らなければいけないんだけど、アイデアもスキルもありません。
会社を退職に追いやられるかもしれません。
ユーザビリティーに優れたサイトを教えてください。
545デフォルトの名無しさん:2009/09/07(月) 20:15:23
ゆーざびりてぃーってなんですか
546デフォルトの名無しさん:2009/09/07(月) 20:29:17
>>545
ユーザビリティーとは、使いやすくて面白くて優しくてまた使いたいと思って手が話せなくて美しくてサプライズがあって嬉しいこと。
547デフォルトの名無しさん:2009/09/07(月) 20:49:00
そりゃすごい
548デフォルトの名無しさん:2009/09/07(月) 21:22:39
>>537
WPF触ったことなかったのですが、簡単にできました
ありがとうございます
549デフォルトの名無しさん:2009/09/07(月) 21:57:54
using の使いどころなんですが、IDisposable は全部 using で囲っとけいいんでしょうか?
それとも囲うべきものと囲わなくていいてものがありますか?

あと、あるクラスを使おうとおもったときに、それが IDisposable を実装しているか
どうか簡単に調べる方法ありますか?いまはヘルプでしらべてるんですが、
そのクラスが直接 IDisposable を実装してれば簡単なんですけど、
継承元があると順々にヘルプを見ていくのが面倒なもので。
550デフォルトの名無しさん:2009/09/07(月) 22:11:46
厳密に言うとあるんだけど、気にせずに Dispose() できるものは Dispose() しとけば OK。
551デフォルトの名無しさん:2009/09/07(月) 22:15:16
>>549
ドット打ってIntelliSenseにDisposeが出てくればIDisposable。
でいいんじゃないかな(たまに隠れてるのもありますが9割方はOK)。
正確に調べたければ右クリックして定義に移動、そんなに手間かからないでしょ。
552デフォルトの名無しさん:2009/09/07(月) 22:15:58
usingは使えるときには使う。できれば,usingが使えないような使い方はなるべく避ける。
553デフォルトの名無しさん:2009/09/07(月) 22:34:11
StreamReaader/WriterとStreamはどっちをCloseするんだったか、
毎回忘れて悩む俺。

Stremをその後使わないなら両方Closeしてもいいんだっけ。
どうもこのあたり釈然としない。
554デフォルトの名無しさん:2009/09/07(月) 22:40:18
WPFとWINフォームを混在させることはできるの?
WINフォームを作成しながら、時々WPFを使うことはできないの?
555デフォルトの名無しさん:2009/09/07(月) 22:54:13
>>553
StreamReader/Writer.Closeは元のStreamごとClose
元のStreamを閉じたくなかったら(WriterならFlushして)放置
556デフォルトの名無しさん:2009/09/07(月) 22:54:17
>>554
やったことはないが、できることはできる。ここを参照。
http://msdn.microsoft.com/ja-jp/library/ms753178%28VS.80%29.aspx

557デフォルトの名無しさん:2009/09/07(月) 23:02:04
>>555
そうかありがとう。

なんか分かりにくくてミスリーディングな仕様のような気もするけど、
それはたぶん俺の理解が浅いからなんだろうね。
558デフォルトの名無しさん:2009/09/07(月) 23:02:53
>>542
ちょっとロードマックみてください
最終的な画像の大きさはピクチャーボックスの表示領域と決っているので
まず、最終的な画像の大きさと同じビットマップを作成
for(x=0;x<=xmax;x++)
for(y=0;y<=ymax;y++)
逆回転の計算をしてソース画像のピクセル情報を取得してコピー
座標がソース画像をはみだしたら背景色で埋める
loop
loop
こんな感じで考えてますが・・・
もと画像がでかい上に最終的な領域を計算で求めてから元画像のビットマップを
ループするより簡単かつ補完の必要がなさげ・・・・

>>543
SlimDX MDX ってWindows mobile や Framework compackt もカバーしてますか?
サイズが小さければ使いたいですが、ちょっと見ただけではカバーしてなさげで・・・
559デフォルトの名無しさん:2009/09/07(月) 23:11:08
>>557
うん、極めて明快な仕様だと思うよ。
ドキュメントが記述不足なのは確かだけどね。
560デフォルトの名無しさん:2009/09/07(月) 23:18:38
>>558
つ「.NET Compact Framework での Mobile Direct3D プログラミング」
.NET CF2.0以降なら標準でついてるはず
どんなことができるのかは知らん
561デフォルトの名無しさん:2009/09/07(月) 23:55:16
>>560
見てみます!ありがとう
562デフォルトの名無しさん:2009/09/08(火) 00:06:06
配列について質問があります。
配列の合成の話がありましたが、ふたつの配列のうち、いっぽうにあるものを取り除く方法を教えてください。
いっほうが配列で、もういっぽうがstringであれば、

string dislikeitem = "あんまん";
string[] menuitems = {"肉まん","あんまん","ピザまん","茄子","ゴーヤいり卵焼き"};
string favoritemenu = "";

foreach(string item in menuitems) {
if (!item.Contains(dislikeitem) && !favoritemenu.Contains(item)) favoritemenu = favoritemenu + item + "\r\n";
}
MessageBox.Show(favoritemenu);

のように書けるのですが、もういっぽうも配列になったときの比較の方法がわかりません。

string[] dislikeitems = {"にがうり","ゴーヤ","あんまん"};
563デフォルトの名無しさん:2009/09/08(火) 00:24:33
ループを一つ重ねるだけだと思うけど?
// 拡張メソッドならExceptがあるけど、比較にラムダ式使えないのは面倒だなー
564デフォルトの名無しさん:2009/09/08(火) 00:26:01
>>562
質問とは直接関係ないがStringBuilder使え。
んで、ループをforeachやめてforの2重ネストループにしろ
565デフォルトの名無しさん:2009/09/08(火) 00:27:34
もちろんforeachのがわかりやすいならそれの2重ループでも構わん
566デフォルトの名無しさん:2009/09/08(火) 00:29:25
DxLib3.0誕生
567デフォルトの名無しさん:2009/09/08(火) 00:32:12
>>560
見てみましたが3Dに特化した話でした
568デフォルトの名無しさん:2009/09/08(火) 00:36:55
>>566
むしろ今までDX7だったことに驚いた。

>>562
もしコードみてわからんかったらもっかい聞け。

string[] menuitems = {"肉まん","あんまん","ピザまん","茄子","ゴーヤいり卵焼き"};
System.Text.StringBuilder favoritemenu = new System.Text.StringBuilder();

foreach(string item in menuitems) {
foreach (string dislikeitem in dislikeitems)
{
if (!item.Contains(dislikeitem) && !favoritemenu.Contains(item))
{
favoritemenu.Append(item + "\r\n")
}
}
}
}
569デフォルトの名無しさん:2009/09/08(火) 00:46:38
こういうスレだと
長い変数って読むの面倒くさくなるけど
じっさいのコーディングだと普通に長い名前つけるよね
570デフォルトの名無しさん:2009/09/08(火) 01:00:39
面倒だからとても短い変数名にしてしまう
571デフォルトの名無しさん:2009/09/08(火) 01:03:34
読むのが面倒になるほど長い変数名って、可読性落ちて本末転倒じゃね?

変数名が長くなるのって、関数の粒度が大きすぎる時に起きやすい気がする。
適切に分割して関数にちゃんと名前つけてれば、長い変数名使わなくても十分分かりやすいと思う。
572デフォルトの名無しさん:2009/09/08(火) 01:11:18

ある程度変数長ければ
MenuItemsとかにした方が多少自分の命名ルール破っても読みやすい気がする
573デフォルトの名無しさん:2009/09/08(火) 02:27:56
>>564、565
配列と配列なので、

foreach(string item in menuitems) {
foreach(string dislikeitem in dislikeitems) {

のように重ねて書けばよいのかと思ったのですが、
それだと、
あんまん-にがうりの組み合わせであんまんがヒットしてしまいます。
(とりあえずforeachで実装。)

>>568
ゴーヤいり卵焼きがヒットします。

あとStringBuilderにはContainsがないそうで、uniqは別途処理する必要があるみたいです(それはできます)。
574デフォルトの名無しさん:2009/09/08(火) 02:54:09
いきなりコード書くよりまず手順を日本語で書いてみるのを勧めてみる

1.メニューの一つ目を手に取る。itemとする。
2.嫌いなメニューの一つ目を手に取る。dislikeとする。
3.dislikeがitemに含まれているか確認する。
 含まれていなければ次の嫌いなメニューの確認。
 含まれていれば、このitemは無視する。以降の嫌いなメニューの確認は不要。次のメニューへ。
4.全ての嫌いなメニューに含まれていないことが確認できたら、そのitemを出力する。
 次のメニューへ。

さあこのままコード化。
3で含まれていた場合に次のメニューに飛ぶのがちょいと単純ではないけどな。
575デフォルトの名無しさん:2009/09/08(火) 03:13:56
C#のHashtableをRubyみたいに簡単に保存ファイルにする方法ってありませんか?
576デフォルトの名無しさん:2009/09/08(火) 03:15:19
質問と一切関係ないが話の流れ的に
>>562にはぜひキャメルケースとか憶えてほしい。
577デフォルトの名無しさん:2009/09/08(火) 03:46:44
string[] menuitems = { "肉まん", "あんまん", "ピザまん", "茄子", "ゴーヤいり卵焼き" };
string[] dislikeitems = { "にがうり", "ゴーヤ", "あんまん" };
IEnumerable<string> diffSet = menuitems.Except(dislikeitems);

string favoritemenu = string.Join("\r\n", diffSet.ToArray());
MessageBox.Show(favoritemenu);

上で出てるけど、LINQ使っていいならExceptで簡単に差集合作れる。
あとはToArrayで配列にして、Joinで結合するだけ。
578デフォルトの名無しさん:2009/09/08(火) 07:02:56
HashtableってSerializableAttributeついてるからBinaryFormatter使えんじゃないの
試してないけど
579デフォルトの名無しさん:2009/09/08(火) 08:36:23
>>567
3D上の板として2Dを描画するのが最近では普通になってるんだよ
580デフォルトの名無しさん:2009/09/08(火) 09:35:06
>>589
いや3Dの中でも縦回転以外の回転とかメッシュとか固定小数点化での高速化とか、ほんとうに3Dのためのトピックばかりで・・・

http://homepage2.nifty.com/tsugu/sotuken/rotation/

ここのサンプルでなんとか自作できそうです。
あとはLockBitでさらに高速化できるかな・・・という感じです。
581デフォルトの名無しさん:2009/09/08(火) 09:43:38
SetPixelやGetPixelは試すだけ無駄
高速化というよりLockBits使わないと使い物にならない
582デフォルトの名無しさん:2009/09/08(火) 10:59:52
ref DataRow を受け取るメソッドがあって、そこに型付DataSetのDataTableのrowを
渡したいのですが、どうやってCastすればいいんでしょうか?

UserDataSet.TESTTBLRow r = UserDataSet.TESTTBL.NewTESTTBLRow();
foo(ref r);

---

private void foo( ref DataRow r )

foo()の中でDataRowの中身を変更しています
583デフォルトの名無しさん:2009/09/08(火) 11:02:53
refなんかいらん
値型と参照型について勉強しなさい
584デフォルトの名無しさん:2009/09/08(火) 11:05:51
>>578
ありがとうございます試してみます
585デフォルトの名無しさん:2009/09/08(火) 11:11:56
>>577
それだとゴーヤ入り卵焼きが食卓に並んじゃう!
586デフォルトの名無しさん:2009/09/08(火) 11:24:37
ゴーヤ入り卵焼きからゴーヤを皿の脇によけて食べればいいじゃない
587デフォルトの名無しさん:2009/09/08(火) 11:43:17
>>583
ありがとうございます。refを削除してブイルドは通るようになりました。
ただ、次のようなコードを書いたときに、

---呼び出し元

foo( UserDataSet.TESTTBLRow r );

int a = r.HOGEHOGE; ← ここでエラー

--呼び出され元

private void foo( UserDataSet.TESTTBLRow row )
{
 row = UserDataSet.TESTTBL.FindByPKEY("xxxx"); // (1)
return;
}

FindByをした直後に row を見ると、個々のColumnには確かに値が入っているんですが、
その後r.HOGEHOGEを見るとDBNullに成っているようなのです。

(1)のところでイコール式で代入しているのが駄目なんでしょうか?
588デフォルトの名無しさん:2009/09/08(火) 11:47:35
いいから黙って値型と参照型について調べてこい
なぜ駄目か理解しないと意味がない
589デフォルトの名無しさん:2009/09/08(火) 11:53:06
参照型だと代入演算子で代入されるのはポインタとうい認識なのですが。
つまり

1) FindBy〜 でメモリ上のどこかにオブジェクトが作られて、オブジェクトへのポインタが返る
2) (1) のところで row = 〜〜 としているので、この時点では row は FindBy〜が作った
オブジェクトの領域を指している
3) 参照型なので、foo() の引数でやり取りされるのはポインタ。つまり r はFindBy〜で確保
されたオブジェクトの領域を指している

と言う感じで、r は FindBy〜で確保された場所をそのまま指しているのでは???
590デフォルトの名無しさん:2009/09/08(火) 12:03:06
ポインタはポインタ 参照型は参照型

そもそも何かを返したいなら返値で返せばよい
591デフォルトの名無しさん:2009/09/08(火) 12:09:27
>>590
答えになってないw
592デフォルトの名無しさん:2009/09/08(火) 12:26:27
var x = new Hoge(); // Hogeの実体を作り,紙xにその住所を書く
foo(x); // 紙xに記されている住所を新しい紙yに書き写してfooに渡す
Console.WriteLine(x.Value);//100が出力される

void foo(Hoge y) { //この時点でxとyは別の紙だが書かれている住所は同じ
y.Value = 100; // yに記されている住所をもとにHogeの実体を探し,Valueプロパティに100を代入する
y = new Hoge(); // yに書かれている住所を消しゴムで消して新しく作られたHogeの実体の住所を書く
y.Value = 200; // 初めに作られたHogeには影響しない
}
説明するのは難しいなあ
593デフォルトの名無しさん:2009/09/08(火) 12:33:57
>>587
その例で言うとですね、変数rと変数rowには同じobjを指し示すアドレスが入っています。
だからrow.XXXXX を変更すると r.XXXXX も同じように変更される(ように見える)のは貴方が
認識しているとおりです。

ただし、変数rの実体と変数rowの実体は別物です。ここに注意しましょう。
だから変数rowそのものの値を書き換えてしまうと、もはや「rowが示す先のobj」と「rが示す先
のobj」は別物になってしまうんです。

あくまで、「rowが示す先のobjの内容をrが示す先のobjに代入」しなければいけません。
で、そういう場合のために通常Copy()メソッドが用意されていたりするんですが、もし無ければ
自分で全要素コピーする必要があります。ディープコピーとかで調べてみて下さい。
594デフォルトの名無しさん:2009/09/08(火) 12:52:49
>>581
まじすか! ありがとうございます。
595デフォルトの名無しさん:2009/09/08(火) 15:04:47
BeginInvoke, EndInvokeを用いたスレッドからの例外について質問です。
以下のプログラムにて、BeginInvokeによって呼び出されるDoWork内の例外を、メインスレッドで
キャッチしてやるにはどうしたらいいのでしょうか?

Main()内のEndXXX呼び出しでキャッチ出来ると思っていたのですが、どうやら駄目なようです。

改行が多すぎると怒られたので、プログラムは次のレスに貼ります。
596デフォルトの名無しさん:2009/09/08(火) 15:07:08
static IAsyncResult BeginXXX(AsyncCallback cb){
Action f = DoWork;
return f.BeginInvoke(cb, null);
}

static void EndXXX(IAsyncResult ar){
AsyncResult res = (AsyncResult)ar;
Action del = (Action)res.AsyncDelegate;
del.EndInvoke(ar);
}

static void DoWork(){
throw new System.Exception("例外っす");
}

static void Main(string[] args){
AsyncCallback cb = (ar) =>{
try{
EndXXX(ar);
}
catch (Exception ex){
Console.Write(ex.Message);
}
};
BeginXXX(cb);
Console.ReadKey();
}
597デフォルトの名無しさん:2009/09/08(火) 15:29:04
何故メインスレッドでcatchしなければならないのか
598デフォルトの名無しさん:2009/09/08(火) 15:34:22
コールバックではなく、メインスレッドでEndXXXを呼び出せばいい
599デフォルトの名無しさん:2009/09/08(火) 16:22:36
>>574
できました。
これを見る前に、自分で考えたので、一日かかっちゃいました。
すこしロジックが違いますが、これで動くようです。
ありがとうございました。
string[] dislikeitems = {"にがうり","ゴーヤ","あんまん"};
string[] menuitems = {"肉まん","あんまん","ピザまん","茄子","ゴーヤいり卵焼き"};
string favoritemenu = "";
bool favorite;
foreach(string item in menuitems) {
favorite = false;
foreach(string dislikeitem in dislikeitems) {
if (item.Contains(dislikeitem)) favorite = true;
}
if (favorite == false && !favoritemenu.Contains(item)) favoritemenu = favoritemenu + item + "\r\n";
}
MessageBox.Show(favoritemenu);

>>576
キャメルケース?
調べてみます。

>>577
LINQは、まだ使ったことがないので、これを機会に勉強します。
ありがとうございました。
…あ。でもこれって、ゴーヤいり卵焼きも入っちゃいますよ。
と、585さんもおっしゃってました…。
>>586
そうか、その手があるか。って、そうじゃなくって。
LINQでゴーヤいり卵焼きをのぞく方法も教えてください。
600595:2009/09/08(火) 16:26:42
失礼しました、デバッグ環境だとcatchしてもコードは停止するのですね…。
ちゃんとメインスレッドでcatchしてるようです。
601デフォルトの名無しさん:2009/09/08(火) 19:07:08
してねーだろw
何が起こってるか理解しろよ。
602577:2009/09/08(火) 19:16:34
>>599
ゴーヤを外すなんてけしからん!真夏には必須だ!

string[] menuitems = { "肉まん", "あんまん", "ピザまん", "茄子", "ゴーヤいり卵焼き" };
string[] dislikeitems = { "にがうり", "ゴーヤ", "あんまん" };

var diffSet = from x in menuitems
where dislikeitems.All((y) => !x.Contains(y))
select x;

string favoritemenu = string.Join("\r\n", diffSet.ToArray());
MessageBox.Show(favoritemenu);
603デフォルトの名無しさん:2009/09/08(火) 19:32:01
InfoPath2007とC#の組み合わせで開発をしています。

入力した文字列をSQLのWhere句に入れて、
取得された結果を動的にドロップダウンリストに入れたいのですが、
テキストボックスには結果が返ってくるのですが、
ドロップダウンリストは変化がありません

while (myReader.Read())
{
this.MainDataSource.CreateNavigator().SelectSingleNode("/my:travelRequest/my:d取引先名", NamespaceManager).SetValue(myReader.GetString(0)); ←こっちがドロップダウン
this.MainDataSource.CreateNavigator().SelectSingleNode("/my:travelRequest/my:d取引先_担当者", NamespaceManager).SetValue(myReader.GetString(1) + " / " + myReader.GetString(2)); ←こっちがテキストボックス、結果返ってくる
}

すみません、どなたか教えてください。
604デフォルトの名無しさん:2009/09/08(火) 19:54:51
>>601
どういう意味で?
605デフォルトの名無しさん:2009/09/08(火) 20:01:19
なんで
トライ、キャッチなんだよ。

エラーとサクセスみたいなのでいいだろうが。
606デフォルトの名無しさん:2009/09/08(火) 20:02:41
607デフォルトの名無しさん:2009/09/08(火) 20:03:18
は?
608デフォルトの名無しさん:2009/09/08(火) 20:05:01
>>605
ダサい。
609デフォルトの名無しさん:2009/09/08(火) 20:24:20
エラー投げるんだからキャッチで良いんじゃない。
610601:2009/09/08(火) 20:24:48
言葉足らずだったかな。
>ちゃんとメインスレッドでcatchしてるようです。
ここに対して言った。
611デフォルトの名無しさん:2009/09/08(火) 20:27:01
VS2005、C#なんですが

pictureBoxの画像をマウスドラッグでgoogleMapのように滑らかにスクロールさせる方法ってありますか?
またはこのような実装を行う方法ってありますか?
612デフォルトの名無しさん:2009/09/08(火) 20:27:01
>>596
>Action f = DoWork;
>return f.BeginInvoke(cb, null);

へえ、こんな風にかけるんか
613デフォルトの名無しさん:2009/09/08(火) 20:29:58
>>612
俺もC#勉強中でこの書き方は初めて見た。
一般的にはどうかくんだろう。誰か教えて。
614デフォルトの名無しさん:2009/09/08(火) 20:39:00
>>613
マルチスレッドのやり方は幾つかあるし正着ってのはないんじゃないかな。
デリゲートに包むってのはそのうちの一つに過ぎないわけで。
615デフォルトの名無しさん:2009/09/08(火) 20:40:25
>>613
非同期デリゲートでググれ

ちなみに、silverlightではサポートされてないので、
コンパイルエラーにはならないが、実行時にエラーが出るので注意
616デフォルトの名無しさん:2009/09/08(火) 20:58:28
>>614-615
ガイドサンクス
617デフォルトの名無しさん:2009/09/08(火) 22:02:52
>>576
キャメルケース。パスカル方式のことでしたか。了解しました。
string[] menuItems = {"肉まん","あんまん","ピザまん","茄子","ゴーヤいり卵焼き"};
ってことですね。
っていうか、なんでそう書かなかったんだろ。
ふだんはそう書いているんですが。

>>602
LINQの一端に触れた気がします。
fromとかinとかwhereとかselectというのが、LINQの書式なのですね。
まだ充分じゃないですけど、foreachをネストする書き方にくらべて、圧倒的にスマートなことはわかりました。
ありがどうございます。
618デフォルトの名無しさん:2009/09/08(火) 22:06:36
Camel形式とPascal形式は違う
camelCase PascalCase
619デフォルトの名無しさん:2009/09/08(火) 23:51:21
>>603
コードが読みにくい。
まさか実際のソースもそんな書き方して無いよね?
趣味で作ってるのならいいんだけどさ。

で、問題の方だけど、ドロップダウンリストに値を設定してるところがダメなんじゃない?
InfoPathは使ったこと無いからよくわからないけど。
620デフォルトの名無しさん:2009/09/09(水) 00:48:01
>>618
一応、これも書いておかないと

Upper Camel = Pascal
Lower Camel = 狭義のCamel
621デフォルトの名無しさん:2009/09/09(水) 09:22:35

Bitmap BmpBuf = new Bitmap("C:\\2008052314460001.jpg");
Picture1.Image = BmpBuf;


画像が表示されません
622デフォルトの名無しさん:2009/09/09(水) 09:29:10
そうか
623デフォルトの名無しさん:2009/09/09(水) 09:35:56
せめてヒントだけでも ><。。
624デフォルトの名無しさん:2009/09/09(水) 10:20:41
もうimagelocation でやれwwwww
625デフォルトの名無しさん:2009/09/09(水) 10:41:29
>>621
デバッグしてそこ実行時にBmpBufが有効か見てみたか?
Picture1ってどのコントロール?
626デフォルトの名無しさん:2009/09/09(水) 10:42:26
"C:\\2008052314460001.jpg"

@"C:\2008052314460001.jpg"
こうしたい
627デフォルトの名無しさん:2009/09/09(水) 10:48:28
>>625
BmpBufはnullでなくサイズプロパティは読み込んだ画像のサイズでした
>>626
あーそういう意味だったのか @使います

628デフォルトの名無しさん:2009/09/09(水) 10:50:00
>>625
Picture1はPictureBoxです
629デフォルトの名無しさん:2009/09/09(水) 10:53:33
それはちゃんとFormに貼り付けられてるのか
何かのコントロールの後ろに隠れてないか
サイズが0,0になってたりFormの表示範囲外にいってたりしてないか
630デフォルトの名無しさん:2009/09/09(水) 11:18:33
>>629
もう一度一から貼り直してやってみます
コードは間違ってはいませんよね?

再描画されないかもしれないのはおいといて
631デフォルトの名無しさん:2009/09/09(水) 11:23:00
>>630
うまくいきました!!

デザイナのコードが壊れてたみたいです
632デフォルトの名無しさん:2009/09/09(水) 11:23:16
>>611
paintでGraphicsのDrawImage使うといい。
633デフォルトの名無しさん:2009/09/09(水) 12:12:39
C++のデザパタに片足突っ込んだ程度の経験なんですが、
今回.NET Framework 4.0が面白そうな事になってるのを聞き及び、C#に手を出してみようかと思っています。
C#のオススメの教本とかあったら教えてもらえませんでしょうか?
634デフォルトの名無しさん:2009/09/09(水) 12:20:31
.NET4ってそんなに面白そうなフィーチャーあったっけ
DLRやPLINQなんか.NET触ったことない人には全く分からないだろうし
635デフォルトの名無しさん:2009/09/09(水) 12:27:34
>>632
ドラッグ中MouseMoveイベントで毎回それやってpictureBoxリフレッシュすると滑らかにならず・・・
636デフォルトの名無しさん:2009/09/09(水) 12:49:42
>>635
どんな環境でどうやってんの?
こっちで試す限りでは普通になめらかに動くよ。
Bitmap毎回作ってるとか?
637デフォルトの名無しさん:2009/09/09(水) 13:43:13
>>636
よっぽどでかくなきゃそれでもまぁいけると思うぞ
Disposeしてなさそうだけど(Disposeいるっけ?)
638デフォルトの名無しさん:2009/09/09(水) 20:31:59
breakについて教えてください。
for (int i = 0; i < 10; i++) {
foreach(string line in lines) {
if {//条件。
break;
}
}
}
で、ifの条件が一致したとき、この位置にbreakを書くと、foreachは終了しますが、外側のforは終了しません。
どこに書けば、外のforも終了できますか?
639デフォルトの名無しさん:2009/09/09(水) 20:36:37
for (int i = 0; i < 10; i++) {
bool exit = false;
foreach(string line in lines) {
if {//条件。
exit = true;
break;
}
}
if (exit) break;//外のforを抜ける
}
もしくは,
for (int i = 0; i < 10; i++) {
foreach(string line in lines) {
if {//条件。
goto EXIT;
}
}
}
EXIT:
640デフォルトの名無しさん:2009/09/09(水) 20:40:30
>>639
ラベルに命令はんないといけないから
EXIT:;じゃね?
641デフォルトの名無しさん:2009/09/09(水) 20:43:09
そうだけど後にステートメントが続くならセミコロンは普通書かない
642デフォルトの名無しさん:2009/09/09(水) 20:47:43
>>641
コンパイル通るの?
前ここではまったんだけど
643デフォルトの名無しさん:2009/09/09(水) 20:48:38
別のアプローチとしてはforを別の関数に切り出してreturnで抜けるというのもある。
644デフォルトの名無しさん:2009/09/09(水) 20:53:44
>>642
通る例
EXIT:
  Console.WriteLine(x);
}
通らない例
EXIT:
}
とにかく後にステートメントがあればいい。セミコロンだけの場合は空のステートメントがあるとみなされる。
645デフォルトの名無しさん:2009/09/09(水) 20:55:44
>>644
じゃあ>>639は嵌るべ
646デフォルトの名無しさん:2009/09/09(水) 22:03:03
>>639
thanks.
647デフォルトの名無しさん:2009/09/09(水) 23:37:40
C♯で拡大鏡はできますか?
648デフォルトの名無しさん:2009/09/09(水) 23:49:15
うん
649デフォルトの名無しさん:2009/09/10(木) 00:27:42
とあるクラスにA1〜A5というプロパティがあるんですが
配列のindexのように参照する方法はあるでしょうか?
650デフォルトの名無しさん:2009/09/10(木) 00:34:43
ない
651デフォルトの名無しさん:2009/09/10(木) 01:17:53
>>649
A1〜A5の型が同じなら、とあるクラスにインデクサを実装すればいい。
まぁ、こんな事するんじゃなくてA1〜A5を格納するAってリストを作るべきだ。
652デフォルトの名無しさん:2009/09/10(木) 01:58:11
.netってスタティックリンクライブラリって使えないの?
DLLは作れるみたいだけどLibファイルのようなものは作れないのかな
653デフォルトの名無しさん:2009/09/10(木) 02:00:44
必要ないだろ
654デフォルトの名無しさん:2009/09/10(木) 02:05:08
作れるよ
655デフォルトの名無しさん:2009/09/10(木) 06:30:54
>>648
どんなメソッドを使えばできますか?
656デフォルトの名無しさん:2009/09/10(木) 07:33:35
Graphics.CopyFromScreen
657デフォルトの名無しさん:2009/09/10(木) 12:06:35
重大ニュース スレは★30までいく

【国際】 中国 「IT製品、ソースコード開示せよ」…日本側が撤回求めるも、予定通り実施へ★4
http://tsushima.2ch.net/test/read.cgi/newsplus/1252535413/
「ソースコード開示せよ」…中国が外国企業に要求
http://pc11.2ch.net/test/read.cgi/prog/1221835452
23 :名無しさん@十周年:2009/09/10(木) 02:28:25 ID:UeD78g5r0
李鵬が言ってた、20年後に日本なんてなくなるって、こういう事か。
40 :名無しさん@十周年:2009/09/10(木) 02:35:03 ID:BKKfZepB0
トヨタがプリウスで儲けれるのも来年までなんだね。

鳩山幸さんはサイエントロジーというカルトと関係があるという噂があります。
http://an★tikimchi.see★saa.net/art★icle/127578850.html
↑ 日本アンチキムチ団

鳩山幸さんの旧姓が不明だそうですよ。

764 名前:可愛い奥様[] 投稿日:2009/09/06(日) 01:04:07 ID:/WrcABwtO
北海道苫小牧在住の者ですが、老人ホームで暮らす朝鮮人のお婆ちゃんから聞いた話です。
幸夫人のごお父様は中国人ではなく、キム・ジョンウォン(漢字不明)という朝鮮北部出身の貿易商だったようです。
戦後は日本に渡り、幸さんが渡米するまでは神戸の商社に勤めていたようです。
キムさんは幸さんが渡米した直後、北海道室蘭に引っ越し、貿易商を営みながら総連支部の設立に尽力されたと話しておりました。
中国語・英語・ロシア語がお上手だったようですね。
【ファーストレディー】鳩山幸をウォッチするスレ 2
http://hideyoshi.2ch.net/test/read.cgi/ms/1252279762/
658デフォルトの名無しさん:2009/09/10(木) 14:33:30
>>652
ILMerge を使えば、複数のアセンブリを一つにできる。
659デフォルトの名無しさん:2009/09/10(木) 15:20:01
DataRowの各項目はキャストしないとobject型のようなんですが、

if (rowA["HOO"] == rowB["HOO"])

みたいな比較は、右辺左辺両方が同じ型?(stringとかint)であることが事前に分かって
いれば、キャストせずに比較しても正しい比較結果が得られますでしょうか?
660デフォルトの名無しさん:2009/09/10(木) 15:23:42
得られません。常に参照比較になってしまいます。
Object型のままで値を正しく比較したければEqualsメソッドを使います。
661デフォルトの名無しさん:2009/09/10(木) 20:50:57
プロセスの終了について質問があります。
写真をまとめてみたいと思って、
string[] files = Directory.GetFiles(@"c:\photo", "*.jpg");
foreach(string file in files) {
photoProcess = new Process();
photoProcess.StartInfo.FileName = file;
photoProcess.Start();
}
Thread.Sleep(1*60*1000);
if (! photoProcess.CloseMainWindow()) {photoProcess.Kill();}photoProcess.Close();photoProcess.Dispose();
とやって見たところ、開いて1分待つところまではよいのですが、最後に閉じるのが1枚だけで、あとのウィンドウは開いたままになってしまいます。
こういう場合は、どうやればぜんぶのウィンドウを一括してクローズできるか、ご教示いただけないでしょうか。
662デフォルトの名無しさん:2009/09/10(木) 20:51:47
>>652
csc.exe /target:module
ちなみに
Q. Visual Studio 開発環境でこのコンパイラ オプションを設定するには
A. Visual Studio 開発環境では、モジュールの作成はサポートされていません。
663デフォルトの名無しさん:2009/09/10(木) 20:54:39
>>661
各Processオブジェクトを配列にでも突っ込んで、
終わるときはそれらを順にCloseMainWindowしてけばいい

>>662
moduleもダイナミックリンクだぜ
664デフォルトの名無しさん:2009/09/10(木) 20:55:39
>>661
関連づけされてるアプリ次第。別々にプロセスが立ち上がるなら、
ここのプロセスをそれぞれ閉じるしかないよ。
665デフォルトの名無しさん:2009/09/10(木) 21:06:46
終了もforeachすればいいのかなとは漠然と思うのですが、この方法でcloseするにはそれぞれのプロセス名を知る必要があって、それを取得する方法がわからずにおります。
>>663
オブジェクトを配列につっこむ方法を教えてください。
>>664
プロセスを取得してってこと?
プロセス名だと、ファイル名まではわからないんじゃなかったでしたっけ?
ペイントだと、mspaint.exeとか?
666デフォルトの名無しさん:2009/09/10(木) 21:10:00
>>665
違う。アプリによっては、ひとつのプロセスで複数のウィンドウを開く形になる。
たとえば、デフォルト状態の Explorer とかね。

その場合、最後とのプロセスを殺せば、勝手にまとめて死んでくれるってわけ。

#「ここのプロセス」は「個々のプロセス」ね。
667デフォルトの名無しさん:2009/09/10(木) 23:13:46
>終了もforeachすればいいのかなとは漠然と思うのですが、この方法でcloseするにはそれぞれのプロセス名を知る必要があって、それを取得する方法がわからずにおります。
なんためにphotoProcess変数を使ってるんだ?
同じことを配列(まあListとかのがいいけど)に入れる形でやればいいだけだろ?
668デフォルトの名無しさん:2009/09/10(木) 23:14:57
>>656
これは画面キャプチャだね。
これで取得したオブジェクトを拡大させるってこと?
やはり難しそうだなぁ。
669デフォルトの名無しさん:2009/09/10(木) 23:48:01
仮想リストビューに1000件くらいのアイテムを表示して
一件ずつループ処理でsubitemを書き換えてリストビューのRefreshメソッドを実行するのですが
書き換えた内容が描画されない
表示するアイテムリストとアイテムはそれぞれ専用のクラスを作って管理してて、
書き換え後にアイテムのクラスを見るときちんとデータが入ってる
どんな原因が考えられる?
670デフォルトの名無しさん:2009/09/10(木) 23:52:09
ListView.RetrieveVirtualItemはちゃんと発生してますか?
671669:2009/09/10(木) 23:56:05
>>670
発生しておりまする
リストビューが表示されたときにはCSVから読込まれたデータが
表示されてる状態
672デフォルトの名無しさん:2009/09/11(金) 00:13:36
微妙に671の回答がずれてる気がしないでもない
Refreshしたときに、RetrieveVirtualItemがちゃんと表示領域分発生してるんだね?
673669:2009/09/11(金) 00:22:03
ステップインで確認したらちゃんと発生してますよ
てか、RefreshでRetrieveVirtualItemが発生しないことってあるのん?
674デフォルトの名無しさん:2009/09/11(金) 00:34:28
確認だよ確認 質問者の画面は見れないんだから
で、RetrieveVirtualItemで生成するListViewItemにはちゃんと変更後のデータ入れてる?
675669:2009/09/11(金) 00:41:30
入ってますよ
676デフォルトの名無しさん:2009/09/11(金) 00:43:39
ちなみにBeginUpdateとEndUpdate使っても駄目そうですか?
677669:2009/09/11(金) 00:56:49
だめでした
やろうとしてる編集を最初からCSVにしておくと
読み込むときにきちんと描画される
只単にアイテムを編集しただけでRetrieveVirtualItemでやってることは
最初に読込むときと全く同じなんだけどな
なんか足りないのか
678デフォルトの名無しさん:2009/09/11(金) 01:07:45
>>667
できました。ありがとうございます。
679デフォルトの名無しさん:2009/09/11(金) 01:08:24
コード見ないと分からんね
680669:2009/09/11(金) 01:14:53
private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
{
if (0 <= e.ItemIndex && e.ItemIndex < ItemList.Count)
{
e.Item = ItemList.Items[e.ItemIndex];
}
}
private void button1_Click(object sender, EventArgs e)
{
foreach (Item item in ItemList.Items)
{
item.SetResult("○");
listView1.Refresh();
}
}

コードこんだけ
681デフォルトの名無しさん:2009/09/11(金) 01:29:03
listView1.Refresh();をループから出す
682デフォルトの名無しさん:2009/09/11(金) 01:36:07
起きてる人ー
みんなでH-IIBロケットの打ち上げを見守ろう!
2時ごろ打ち上げだよ!
http://www.jaxa.jp/countdown/h2bf1/live/h2bf1_300k_j.asx
683デフォルトの名無しさん:2009/09/11(金) 02:47:38
板違い。
まぁ、俺も別のとこで打ち上げ見てたけどね。
684デフォルトの名無しさん:2009/09/11(金) 08:18:35
.asxとか死ねよと
685デフォルトの名無しさん:2009/09/11(金) 09:43:30
設定ファイルを作ってそこから設定を読み込もうとしています
設定ファイルはこんな感じです

#setting.txt
#aの値を書き込んでください
a=1
#bの値を書き込んでください
b=hoge
#cの値を書き込んでください
c=hoge hoge

#(#以外でも構いません)で始まる行はスキップ、それ以外の行は=の右辺を取得して変数に代入
このような場合はどうすればいいのでしょうか
686デフォルトの名無しさん:2009/09/11(金) 09:51:04
string line; に対して、
line[0] == '#'
line.Split('=')[1]
か、正規表現使うか。
687デフォルトの名無しさん:2009/09/11(金) 09:52:57
>>685
iniファイルを連想した。
あれのコメントは;だったが。
もし、iniファイルで…ということならWin32APIを呼び出せばOK
688デフォルトの名無しさん:2009/09/11(金) 09:58:29
フォーマット変えていいならXMLを使うことを強くお勧めする
XmlSerializerとか使えば一瞬でできる
689デフォルトの名無しさん:2009/09/11(金) 10:23:27
>>680
Item型は?
690デフォルトの名無しさん:2009/09/11(金) 10:38:53
>>686-688
アドバイスを参考に調べてみます
ありがとうございました
691デフォルトの名無しさん:2009/09/11(金) 11:35:54
【国際】 中国 「IT製品、ソースコード開示せよ。情報漏洩はないから」…日本側が撤回求めるも、予定通り実施へ★5
ttp://tsushima.2ch.net/test/read.cgi/newsplus/1252552869/
692669:2009/09/11(金) 12:50:04
Itemクラス

class Item : ListViewItem
{
string _columns[] = new string[3];
public Item(string[] columns)
{
_columns = columns
}
public Column0 { get { return _columns[0]; } }
public Column1 { get { return _columns[1]; } }
public Column2 { get { return _columns[2]; } }
}

今職場だから思い出して適当に書いてみたけどこんな感じ
何の変哲もない保持用クラス
693デフォルトの名無しさん:2009/09/11(金) 14:13:14
SetResultメソッドとやらでSubItems[n].Textに転写してる?
694デフォルトの名無しさん:2009/09/11(金) 14:35:54
肝心な部分が書いてないっていうね
695685:2009/09/11(金) 17:51:22
頭こんがらがってきた;;

class Program
{
//第一引数にファイルパス、第二引数にオプション名を入力
static void Main(string[] args)
{
string line = "", option_value = "";
using (StreamReader sr = new StreamReader(args[0], Encoding.GetEncoding("Shift_JIS")))
{
do
{
line = sr.ReadToEnd();
if (line.Split('=', '\n')[0] == args[1])
{
option_value = line.Split('=', '\n')[1];
break;
}
}
while (line != "");
}
Console.Write(option_value);
}
}

行頭#スキップがどうすればいいのわかりません…
696デフォルトの名無しさん:2009/09/11(金) 17:56:15
そんなもんif(line[0]=='#')continue;でいいだろ
697デフォルトの名無しさん:2009/09/11(金) 18:01:42
素直にGetPrivateProfileStringとかInt使ってくれない?
面倒くさいからさ。
698デフォルトの名無しさん:2009/09/11(金) 18:05:43
よく見ると色々おかしい気がする
699デフォルトの名無しさん:2009/09/11(金) 18:09:59
#以前に滅茶苦茶すぎる
700デフォルトの名無しさん:2009/09/11(金) 18:16:47
File.ReadAllLinesの方が良くねえ?
ファイルを行ごとに取り扱うのにReadToEndで読む必要性が分からん。

string optionValue = "";

string[] lines = null;

try {
lines = File.ReadAllLines(args[0], Encoding.GetEncoding("Shift_JIS"))
}catch{
lines = new string[0];
}

foreach (string line in lines) {

// 空行と先頭'#'のスキップ
if ((line == String.Empty) || (line[0] == '#')) {
continue;
}

//行をトークン分解
string[] toks = line.Split('=');
if ((toks.Length == 2) && (toks[0] == args[1])) {

optionValue = toks[1];
break;
}
}

Console.Write(optionValue);
701685:2009/09/11(金) 19:09:59
ごめんなさい…
あっちこっちのをペタペタ貼ってたらひどいことに…

>>696
>if(line[0]=='#')continue;
文字列からそうやって一文字抜きだせるんですね
「なんで配列?」ってよくわかってませんでした
ありがとうございます

>>697
>GetPrivateProfileString
こういうのもあるんですね
調べてみます

>>698-699
もうしわけありません…

>>700
>ReadToEnd
ReadLineにしてたつもりが、いつのまにか入れ替わってましたorz
わざわざありがとうございます
これ見てもうちょっと勉強してから出直してきます
702デフォルトの名無しさん:2009/09/11(金) 19:21:44
>>701
var setting = File.ReadAllLines("setting.txt")
.Where(s => s[0] != '#')
.Select(s => s.Split('='))
.ToDictionary(ar => ar.First(), ar => ar.Last());

でも、設定保存ならXmlSerializerのほうがいいよ。
703デフォルトの名無しさん:2009/09/11(金) 19:25:38
XmlSerializerだと人手で読み書きするのが面倒臭いじゃん
だから未だにiniの需要が一定量あるんだろう
704デフォルトの名無しさん:2009/09/11(金) 19:29:38
何にせよ自作は時間の無駄
#を値の中で使いたいときとかどうするんだ
人間にとっての読み書きのしやすさを重視するならiniでもいいし,
属性形式のXMLを使うという手もある(XmlSerializerで可能)
705デフォルトの名無しさん:2009/09/11(金) 19:33:17
キーはユーザが決めるモンじゃないから別に値の中で使っても良いんじゃないかな
706704:2009/09/11(金) 19:33:24
すまん行単位か
707デフォルトの名無しさん:2009/09/11(金) 19:38:32
作ってみたいだけかもしんないし、あんまとやかく言うのも野暮。
708685:2009/09/11(金) 19:47:42
たくさんのご意見ありがとうございます
いろいろ調べてみましたが、>>700さんのがやりたいことに一番近い(ような気がします)
他の方々の意見もとても勉強になりました

基本からもう一度やりなおすことにしますorz
709669:2009/09/11(金) 20:23:33
>>693
何回もレスして貰って申し訳ないけど、最初に言ったとおり
RetrieveVirtualItemで書き換えられたItemがe.Itemにセットされてるところまで
確認してるんですよ
e.Itemにちゃんと書き換えられたItemがセットされてるにのListViewの表示が更新されないので
嵌ってるわけですよ
710デフォルトの名無しさん:2009/09/11(金) 20:27:54
ごちゃごちゃうるせえ SetResultのコード出せよ
って言ってるんですよ
711669:2009/09/11(金) 20:57:38
public void SetResult(string s)
{
_column[3] = s;
}

少し感じ悪いレスしてしまって申し訳ないと思ってるが
↑を見てなにかわかるとは思えないっす

例えば

private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
{
if (0 <= e.ItemIndex && e.ItemIndex < ItemList.Count)
{
e.Item = new Item(ItemList.Items[e.ItemIndex]).Columns;
}
}

としてやれば、リストに表示されるアイテムが毎回動的に生成されるわけだから
表示も当たり前に更新される訳だが、VirtualModeのお作法として正しいのだろうか
VirtualModeのDocumentが少なすぎて仕様がわからん・・・
712デフォルトの名無しさん:2009/09/11(金) 21:06:11
なんでコード出てくるたびに仕様が変わってんだ
ItemクラスのColumnsプロパティって何だよそんなの前回はなかったじゃねぇか

とにかくSetResultでSubItems[3].Textにもsを設定しろ
713669:2009/09/11(金) 21:16:56
例えばって言ってるじゃん
だいたい何でstring同士で出したり入れたりしてんのに
Textプロパティなんていうめんどくさいものつくらにゃならんの?
わざわざSetResultメソッドの為だけにTextプロパティ作るの?
きちんと代入できてるって言ってるのにそこにこだわる理由はなに?
714デフォルトの名無しさん:2009/09/11(金) 21:20:41
何だこいつ
質問してる身なのに偉そうだな
715デフォルトの名無しさん:2009/09/11(金) 21:24:50
なんで例えるんだよ

ItemはListViewItemを継承している
RetrieveVirtualItemではItemのインスタンスを返している
Itemはフィールドにstring[]を保持している
ここまでは合ってるよな?

ListViewがView.Detailsのときに各カラムに表示できるのは
ListViewItemのSubItemsに格納されているListViewSubItemのTextプロパティだけ
Itemがフィールドに何持ってようが関係ない

プロパティ作れなんて誰も言ってない
716デフォルトの名無しさん:2009/09/11(金) 21:27:48
昨日から思ってたけど>>669の態度酷すぎだろ。

あとね、documentのせいではなく、自分の能力のせいだと思われ。
この程度の事も分からないとは。
717669:2009/09/11(金) 21:36:34
理解した。申し訳ありませんでした。
718デフォルトの名無しさん:2009/09/11(金) 22:52:50
なんで
自分のやり方でうまくいってないから質問したのに
しかも正しい回答されてるのに逆切れするとか
理解の範疇を超えてる。
719デフォルトの名無しさん:2009/09/12(土) 04:56:50
Visual Studio 2008 で C# を使い始めたんですが
ListboxやPanelなどをウィンドウのリサイズに合わせて適宜変更(最大化)するには
プロパティのどの項目を設定すれば良いのでしょうか?
720デフォルトの名無しさん:2009/09/12(土) 05:34:33
AchorとかDockプロパティでググレ
721デフォルトの名無しさん:2009/09/12(土) 05:48:48
>>720
ありがとうございます。できました。
722デフォルトの名無しさん:2009/09/12(土) 15:35:30
物件検索ファームを作成しました。
テキストボックスに例えば「2CH」と入力すると、
そのテキストボックスの右隣に、
「2CHハイツ」
「2CHマンション」
「メゾン2CH」
と検索に合致する物件をリスト表示させたいと思っています。

その際、
テキストチェンジイベントでパネルを表示させることができたらと思いましたが、
1.パネルを表示させたい箇所に別のパネルがあるので埋もれてしまう。
 Z順序が生きてしまい、欠けてしまう。
2.パネルではなくフォームでやろうとすると、どちらかのフォームしかアクティブにならないので、使用が困難。
という状態にあります。
どのようにすればよいのでしょうか。
723デフォルトの名無しさん:2009/09/12(土) 16:01:56
724デフォルトの名無しさん:2009/09/12(土) 16:10:06
>>722
言ってる意味がよく分からないけど、Zオーダで別のコントロールの背後に隠れるなら
問題だというのなら、最前面に持ってくれば済むことに思うんだが・・・

>>723
オートコンプリートと>>722の言ってることは違うと思う
725デフォルトの名無しさん:2009/09/12(土) 16:57:38
インクリメンタルサーチだろ
726デフォルトの名無しさん:2009/09/12(土) 17:29:45
部分一致のことを「インクリメンタルサーチ」と呼ぶのか一般的に?
727デフォルトの名無しさん:2009/09/12(土) 17:36:53
>テキストチェンジイベントでパネルを表示させることができたら

こう言ってるから多分インクリメンタルサーチで合ってんじゃね。
単なる部分一致なら検索ボタンどうのこうのとか言い出すと思う。
728デフォルトの名無しさん:2009/09/12(土) 17:40:23
(若干意味不明ではあるが)たった数行の質問なんだからちゃんと読んでやれよまったく。
そうやって下らん反論をしてる間に読めるんじゃないの?
729デフォルトの名無しさん:2009/09/12(土) 17:44:20
フヒヒwwwすみませんwww
730デフォルトの名無しさん:2009/09/12(土) 18:11:37
質問だがフォームに2枚のパネルを置く。
1枚はDockをLeft、
もう1枚はDockをFILLにする。
で、さらに1枚のパネルを、上記2枚にまたがる位置に置くとする。
こいつは、普段は見えないが、あるケースのときだけ前面に出したい。
これは可能?
通常は上記2枚のパネルのいずれかの配下に置かれるので、表示されても一部が欠けるはずだ。
731デフォルトの名無しさん:2009/09/12(土) 18:29:55
>>730
質問だがって何だよ。
>>722と同じ人物だろお前さん。
まあ別にいいけど。

君はコンテナって概念がよく分かってないんだね多分。
そんなの第三のパネルを別のパネルの子コントロールにしなきゃいいだけ。
732デフォルトの名無しさん:2009/09/12(土) 20:01:10
>>731
どの子にも属さないようにできるんだっけ。
733Indropilly:2009/09/12(土) 20:12:51
登録選手
Kameni
Cristian Alvarez
Chica
Pillud
Roncaglia
Forlin
Young
David Garcia
Moises Hurtado
Ivan de la Pena
Joan Verdu
Luis Garcia
Javi Marquez
Corominas
Ivan Alonso
Marques
Raul Tamudo
Alley
Ben Sahar
Nakamura.
734デフォルトの名無しさん:2009/09/12(土) 20:13:02
(フォーム以外の)どの「親」(コンテナ)にも、ね。

デザイナを使ってそういう状態、つまりパネルAの上にパネルBが「重なった」
(BはAにcontainされてない)状態を作りたいなら、BのZオーダーをまず最前面にしておいてから、
マウスではなくカーソルキーで移動させるか、プロパティグリッドで座標を直接指定すればいい。
735デフォルトの名無しさん:2009/09/12(土) 21:54:34
>>734
なるほどー!
736デフォルトの名無しさん:2009/09/13(日) 05:48:23
ドキュメントアウトライン使ったら一番楽だと思う。
737デフォルトの名無しさん:2009/09/13(日) 06:10:06
すみません、質問なんですが・・・

XnaGameStudioの3.1をインストールして、C#でプログラミングをしようと思ったら、
それまでの(インスト前のXnaGameStudio3.0)で開けた.csprojファイルが開けなくなってしまいました。
自分なりに調べて、VC#やXnaを再インストしたりとかしたんですけど、
Xnaで作ったプロジェクトだけを開けない状態になっているようなんです。

ちょっと一人では直せそうに無いので、対処方法を教えてもらえませんか?
738デフォルトの名無しさん:2009/09/13(日) 06:18:50
その csproj をテキストエディタで開いて ProjectTypeGuids だか
なんだかを編集すればいいだろたぶん
値は 3.1 の対象プロジェクト新規作成して調べれ
739737:2009/09/13(日) 07:35:03
>>738
プロジェクトを新規作成しようとしても、OK押した後にcsprojを開けず、
「そのプロジェクトの種類はこのインストールでサポートされていません」
と出てしまいます。
最初に書いてませんでした。すみません。
740デフォルトの名無しさん:2009/09/13(日) 07:41:36
>>739

テキストエディタで開いて

って言ってんだろ
741デフォルトの名無しさん:2009/09/13(日) 07:44:12
>>739
>「そのプロジェクトの種類はこのインストールでサポートされていません」

謎だなぁ
まっさらに戻さないといけないかもねー
742737:2009/09/13(日) 08:00:07
>>740
すみません。また言葉足らずでした。
開けない既存プロジェクトの.csprojをテキストで開くのはいいんですが、
3.1の対象プロジェクトを新規作成しても、そのプロジェクトも開けない状態なので、
開けないプロジェクトを参考にして値を変更するのはどうなのかなと思いまして・・・

>>741
やっぱ最終的にはそうしないとダメっぽいですかね・・・
なぜかXnaを通してないcsprojファイルは開けるんですが。
743737:2009/09/13(日) 08:01:48
'http://schemas.microsoft.com/developer/msbuild/2003' の 'PropertyGroup' には無効な子要素 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'XnaFrameworkVersion' が含まれています。
必要とされる要素は 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'Property' です。

'http://schemas.microsoft.com/developer/msbuild/2003' の 'PropertyGroup' には無効な子要素 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'XnaCompressContent' が含まれています。
必要とされる要素は 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'Property' です。

'http://schemas.microsoft.com/developer/msbuild/2003' の 'PropertyGroup' には無効な子要素 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'XnaCompressContent' が含まれています。
必要とされる要素は 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'Property' です。

'http://schemas.microsoft.com/developer/msbuild/2003' の 'ItemGroup' には無効な子要素 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'NestedContentProject' が含まれています。
必要とされる要素は 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'Item' です。

'http://schemas.microsoft.com/developer/msbuild/2003' の 'ItemGroup' には無効な子要素 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'BootstrapperPackage' が含まれています。
必要とされる要素は 名前空間 'http://schemas.microsoft.com/developer/msbuild/2003' の 'Item' です。

.csproj内での↑の部分が警告されていて、この部分のせいで開けないんですかね?
744デフォルトの名無しさん:2009/09/13(日) 08:02:52
これXNA認識されてなくねw?
745737:2009/09/13(日) 08:23:29
>>744
まじですか・・・
Xnaもサイト手順に沿ってインストしたつもりだったんですが・・・orz
746デフォルトの名無しさん:2009/09/13(日) 13:30:07
本スレで質問したのですが、ふらっとへ誘導されましたのでおたずねします

基本的な型を宣言したアセンブリAに
クラスa1
があります。
a1にはpublicなメソッドa1do()があります。
コントロールを継承したアセンブリBに
クラスb1
があり
クラスb1は参照設定をAに設定し、a1をインスタンスとした変数b1a1をpublicで宣言しています

コントロールを配置したアセンブリCのクラスc1でアセンブリBを参照設定し
クラスb1をmyb1として変数宣言して、インスタンスを代入しています

myb1.b1a1.a1do();

をc1から呼び出すときアセンブリAへの参照設定が必要というエラーがでます
参照を設定すれば問題なく動きます

参照を設定しない場合、アセンブリBにアセンブリAの内容を含めてしまえば問題はないと思うのですが
それをせず、参照設定もせずに上記の呼び出しを行う方法はありませんか?
アセンブリA アセンブリBは将来他プロジェクトで使う予定もあり、参照の設定をシンプルにしたいのです。
特にアプリケーションCからはクラスb1しか宣言してないのでAに参照設定が必要というのがわかりにくいのですが
そういう場合の解決方法を教えてください

よろしくお願いします
747デフォルトの名無しさん:2009/09/13(日) 13:42:22
Aの存在を一切アセンブリBの外に見せないようにする。
全ての操作がBに定義されたクラスだけで完結するようにAをラップしてしまう。
参照設定がうざいとかそういうレベルにとどまらず,
そのほうが設計的に利用者にとって分かりやすくなる。
748デフォルトの名無しさん:2009/09/13(日) 13:44:13
>>746
System.Reflection.Assembly.LoadFileで対象のアセンブリを動的にロードした後、
Assembly.CreateInstanceでインスタンスを作成する。

というか他のプロジェクトで参照の設定をさせたほうが圧倒的にメンテナンスコストが低いと思う。
749デフォルトの名無しさん:2009/09/13(日) 13:47:28
ここでリフレクションとかないわ・・・
750デフォルトの名無しさん:2009/09/13(日) 13:47:55
>>748
そういうことするんだったらBのほうを動的にロードするべきだと思うよ
Aにはインターフェイスだけ宣言しといて,Bをプラグインみたいな扱いにする
751デフォルトの名無しさん:2009/09/13(日) 14:03:09
>>747
わかります。基本的にaはprivateで宣言して変数はプロパティ、メソッドはメソッドで隠蔽すべきですよね。
ただ、bのバリエーションが非情に増えそうな予感がしたので本来なら多重継承させたい状況なのです。
そうでないなら、publicでそのまま使わせた方が楽かと・・・
ご意見ありがとうございました。

>>748
>他のプロジェクトで参照の設定をさせたほうが圧倒的にメンテナンスコストが低い
そうですか。あまりへんてこなことでもないんですね・・・・ありがとうございました。
リフレクションについてもう少し勉強してみます。

>>750
なるほど、ただ、Aに含まれるのはベーシックな数値計算などですから
インターフェイス化しても同じ計算をあちこちで書くことになりそうです。
ただ、AとBの関係をCからは同列にしてBをプラグインみたいにする考え方もありますね。
非情に参考になりました。ありがとうございました。

やはり参照設定をして、Aをそのまま使っていくのがバージョンの変更などにも対処しやすく
メンテナンスコストもよさそうなので、そうしたいと思います。
しかし、いろいろな方法をご提案いただいて非情に勉強になりました。

ありがとうございました。
752748:2009/09/13(日) 14:03:12
参照設定しないで別のアセンブリを使いたいっていうだけの話だと早とちりしてた。
>>747で十分だね。申し訳ない。
753デフォルトの名無しさん:2009/09/13(日) 14:38:35
unless を使いたい時にC# ではどう書くのが良いのでしょうか?

例えば指定したディレクトリがなければ処理をしたいときに

if (Directory.Exists(dir) == false)

このような書き方をしてるのですが、
冗長ですのでもっとすっきりした書き方はないでしょうか?
754デフォルトの名無しさん:2009/09/13(日) 14:41:14
意味が分からない
755デフォルトの名無しさん:2009/09/13(日) 14:42:04
!
が分からないってこと?
756デフォルトの名無しさん:2009/09/13(日) 14:47:19
>>755
!が使えたんですね、ありがとうございます。
757デフォルトの名無しさん:2009/09/13(日) 14:48:30
出来ました^^
if (Directory.Exists(dir) != true)

758デフォルトの名無しさん:2009/09/13(日) 14:49:36
ワロス
759デフォルトの名無しさん:2009/09/13(日) 14:55:27
>>752
とんでもありません。おかげでひとつ勉強になりました。
760デフォルトの名無しさん:2009/09/13(日) 15:21:41
チェックボックスについて教えてください。
FormにcheckBox1とbutton1を配して、button1をクリックしたときに、checkBox1にチェックしたいと思います。
イベントハンドラに
this.button1.Click += new System.EventHandler(this.checkBox1_CheckedChanged);
を登録し、
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
MessageBox.Show("changed");
}
として実行すると、ボタンを押したときにメッセージが表示されるので処理は行われます。
しかし、チェックボックスのチェックが入らないのです。
チェックボックスにチェックを入れるには、どこでなにをしたらよいんでしょう?
マウスでチェックボックスをチェックする以外の方法をお願いします。
761デフォルトの名無しさん:2009/09/13(日) 15:24:47
いや、その、CheckBoxのチェック状態を変更するコードは…?
762デフォルトの名無しさん:2009/09/13(日) 15:29:02
foo = treeview1.Nodes.Add("foo");
foo.ImageIndex = 1;
foo.SelectedImageIndex = 0;

の代わりに

treeview1.Nodes.Add("foo").[ImageIndex,SelectedImageIndex] = [1,0]

のようにしてインスタンス変数をまとめて変更することはできますか?
763デフォルトの名無しさん:2009/09/13(日) 15:30:14
なにこの「ぼくのかんがえたすごいしーしゃーぷ」
764デフォルトの名無しさん:2009/09/13(日) 15:31:58
>>761
そう、それが見つからないんです。
765デフォルトの名無しさん:2009/09/13(日) 15:35:18
お願いだからメンバ一覧くらい読めよ
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.checkbox_members.aspx

checkBox1.Checkedな
766デフォルトの名無しさん:2009/09/13(日) 15:37:13
>>763
欲しい機能があるかどうかを質問するのがそんなに悪いことでしょうか?
767デフォルトの名無しさん:2009/09/13(日) 15:37:49
>>762
treeView1.Nodes.Add(new TreeViewNode("foo", 1, 0));

ぼくのかんがえたすごいしーしゃーぷ により近い書き方もある
treeView1.Nodes.Add(
 new TreeViewNode { Text = "foo", ImageIndex = 1, SelectedImageIndex = 0 });
768767:2009/09/13(日) 15:40:36
TreeNodeの間違い
769デフォルトの名無しさん:2009/09/13(日) 15:46:06
無いって言うと何でですかって聞き返してくるからなw
気持ちは分からんでもない。
770デフォルトの名無しさん:2009/09/13(日) 15:48:14
>>765
ありがとうございました。できました。
msdnのメンバ一覧の読み方がすこしわかってきました。
感謝です。
771デフォルトの名無しさん:2009/09/13(日) 18:24:04
WindowsFormアプリケーションの質問です。
チェックボックスリストを使って、ある項目を選択できるようにしているのですが、
チェックをつける際に、マウスをダブルクリック(行を選択→チェックをクリック)しないと、チェックがつきません。

これは仕様でしょうか?
772デフォルトの名無しさん:2009/09/13(日) 18:46:10
チェックボックスリストって何?
773771:2009/09/13(日) 18:48:16
すみません。
CheckedListBoxです。
774デフォルトの名無しさん:2009/09/13(日) 18:58:02
デフォルトの動作はそうなってるな
CheckOnClickで違う動作もとれるが
775771:2009/09/13(日) 19:30:45
一発でチェックがつきました!
ありがとうございました。
776デフォルトの名無しさん:2009/09/13(日) 20:09:23
初歩的なことですみません。
for (int i = 2; i < args.Length; i++) {
allArgs = allArgs + args[i] + " ";
}
って
allArgs = string.Join(" ", args, 2, args.Length - 1);
じゃないの?

インデックスおよびカウントはバッファ内の場所を参照しなければなりません。
とかいわれて困ってます。
777デフォルトの名無しさん:2009/09/13(日) 20:14:10
最後の引数は結合する要素数
i=2から始まってるからargs.Length-2個だ
778デフォルトの名無しさん:2009/09/13(日) 20:22:51
なおforで回す方は最後に" "が一つ付くがJoinの場合付かない
779デフォルトの名無しさん:2009/09/13(日) 20:48:41
MSDN読めよ
780デフォルトの名無しさん:2009/09/13(日) 21:56:05
>>777、778
thanks.
>>779
sorry.

String.Join メソッド (String, String[], Int32, Int32)
指定した String 配列の各要素間にある指定した区切り記号 String を連結し、連結された単一の文字列を作成します。パラメータには、最初の配列要素と、使用する要素の数を指定します。

パラメータ
separator String。
value Stringの配列。
startIndex 使用する valueの最初の配列要素。
count 使用するvalueの要素の数。

読まないわけじゃないんだけど、これ、訳が悪すぎて、ぜんぜんわかんないんですよ。

たとえばですが、

String.Join メソッド (String, String[], Int32, Int32)
String.Join メソッド (separator, value, startIndex, count)
配列の区切り文字を削除して連結した文字列を作成します。Int32パラメータには、連結する最初の配列番号と使用する要素の数を指定します。

パラメータ
separator 区切り文字
value 連結するString配列
startIndex 使用する配列の最初の番号
count 使用する配列の数

とかならまだわかりやすい気がします。
msdnをすらっと読んで理解できる方が羨ましい。
なんか読むコツがあるんですか?
781デフォルトの名無しさん:2009/09/13(日) 21:58:27
日本語の勉強
782デフォルトの名無しさん:2009/09/13(日) 21:59:13
ひたすら読んで、書き方の「クセ」みたいなのを理解するしかないんじゃないかな
783デフォルトの名無しさん:2009/09/13(日) 22:03:44
だいたい配列を扱うメソッドの引数って
(配列, 最初のインデックス, 要素数)
と決まってるんだよね
784デフォルトの名無しさん:2009/09/13(日) 22:03:46
>>545
FFにあるでしょ?
アビリティーって
785デフォルトの名無しさん:2009/09/13(日) 22:05:02
配列の区切り文字を削除、って何言ってんの?
786デフォルトの名無しさん:2009/09/13(日) 22:13:51
指定した String 配列の各要素を連結し,単一の文字列を作成します。各要素間には指定した String を区切り文字として挿入します。

こんな感じ?
787デフォルトの名無しさん:2009/09/13(日) 22:22:27
>>780
パラメータの説明はもう少し詳しく書いてあってもいいとは思う。

separator 区切り記号
value 連結される String の配列
startIndex 使用する value の最初の要素インデックス
count 使用する value の要素の数

とか。まあパラメータ名で大体分かるけど。
788デフォルトの名無しさん:2009/09/13(日) 22:23:52
WindowsXP+C#2008で質問があります。
エクスプローラでjpgファイルのプロパティでコメント欄に書いた文字を読みたいのですが、どのようにしたらよいですか?

//読み込む
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(imgFile);
//Exif情報を列挙する
foreach (System.Drawing.Imaging.PropertyItem item in bmp.PropertyItems)
{
//データの型を判断
if (item.Type == 2)
{
//ASCII文字の場合は、文字列に変換する
string val = System.Text.Encoding.ASCII.GetString(item.Value);
val = val.Trim(new char[] { '\0' });
//表示する
listBox1.Items.Add("ID=" + item.Id + " type=" + item.Type + " value=" + val);
}
else
{
listBox1.Items.Add("ID=" + item.Id + " type=" + item.Type + " value=" + item.Len);
}
}
bmp.Dispose();

というのを試しているのですが、コメント欄の文字は表示されません。
789デフォルトの名無しさん:2009/09/13(日) 22:26:57
プロパティのコメントって副ストリームに書いてある奴じゃねーの
790デフォルトの名無しさん:2009/09/13(日) 22:32:32
791デフォルトの名無しさん:2009/09/13(日) 23:08:57
>>790
System32のほうは、
型 'Shell32.FolderItem' を 'Shell32.FolderItem2' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
でエラーで動かず。
DSOFile.dllのducPropertyのほうは、なにも値が表示されません。
DSOFile.OleDocumentPropertiesClass ducProperty = new
DSOFile.OleDocumentPropertiesClass();
DSOFile.SummaryProperties summary;
// 読み込みのテスト
string imgFile = @"c:\image.jpg";
ducProperty.Open(imgFile, true,
DSOFile.dsoFileOpenOptions.dsoOptionDefault);
summary = ducProperty.SummaryProperties;
listBox1.Items.Add("Title : " + summary.Title);
listBox1.Items.Add("Subject : " + summary.Subject);
listBox1.Items.Add("Author : " + summary.Author);
listBox1.Items.Add("Keywords : " + summary.Keywords);
listBox1.Items.Add("Comments : " + summary.Comments);
listBox1.Items.Add("Category : " + summary.Category);
listBox1.Items.Add("RevisionNumber : " + summary.RevisionNumber);

Title :
Subject :
Author :
Keywords :
Comments :
Category :
RevisionNumber :
という文字だけ追加されました。
792デフォルトの名無しさん:2009/09/13(日) 23:16:08
死ね
793デフォルトの名無しさん:2009/09/13(日) 23:37:09
>型 'Shell32.FolderItem' を 'Shell32.FolderItem2' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
>でエラーで動かず。

こんなエラーも対処できないなら畑でも耕してろ。
794デフォルトの名無しさん:2009/09/13(日) 23:59:39
VBで修業したらいい。
795デフォルトの名無しさん:2009/09/14(月) 00:06:43
VistaだとExifデータとして0x9C9B-0x9C9Fの辺りにUnicodeで格納されとるのぅ
796デフォルトの名無しさん:2009/09/14(月) 04:11:52
797デフォルトの名無しさん:2009/09/14(月) 11:36:53
明らかに788はそこを参考に書いてあるように見えるが駄目なのかしら
798デフォルトの名無しさん:2009/09/14(月) 13:37:19
どうやらExifじゃなくてAlternate Data Streamに格納されているらしいねそれ。
http://www.codeproject.com/KB/cs/ntfsstreams.aspx
頑張れ。
799デフォルトの名無しさん:2009/09/14(月) 14:00:07
それも789で試してんだろ
書き込む前にレス追えバカ
800デフォルトの名無しさん:2009/09/14(月) 14:10:32
どうしてたった数レスが目に入らないんだろう…
801デフォルトの名無しさん:2009/09/14(月) 14:37:37
教えたがりだから。
802デフォルトの名無しさん:2009/09/14(月) 14:37:42
>>791
>>796で行けたよ。
ただし、Typeは1で、中身はUnicodeだから
Encoding.ASCII.GetStringからEncoding.Unicode.GetStringに変更
ちなみにコメントのIdは0x9c9cらしい
803デフォルトの名無しさん:2009/09/14(月) 18:05:19
Directory.GetDirectoriesについての質問失礼します

ドライブ内のすべてディレクトリを対象にディレクトリ名で検索したいです。
そこで、Directory.GetDirectoriesの第二引数でAllDirectoriesを指定するという方法でとりあえず作成してみました。

このプログラムは一応正常に動作しているのですが、「C:」ドライブのすべてのディレクトリを検索させようとすると
「System Volume Informationのアクセス権がない」といったエラーが出て止まってしまいます。
「System Volume Information」の中身は検索対象に含めるつもりはないのでスキップしたいのですがその方法がわかりません。

AllDirectoriesを使わずに自前で再起処理などで検索していくしかないのでしょうか
どうかご指導お願いいたします。
804デフォルトの名無しさん:2009/09/14(月) 18:14:40
うんそう諦めて
805デフォルトの名無しさん:2009/09/14(月) 20:09:56
もし自分に「Program Files」とか見る権限がないばあいはエラーキャッチでスルー
806デフォルトの名無しさん:2009/09/14(月) 22:34:47
>>804
そうですか…。

>>805
それも考えたのですがキャッチ後にそのまま続行する方法がわかりません
ネットで調べたところVBにはCatch ex As Exceptionというのがあるそうなのですが
C#でもそれと同じようなことができるのですか?
807デフォルトの名無しさん:2009/09/14(月) 22:36:38
なんでヘルプ読まないの?
808デフォルトの名無しさん:2009/09/14(月) 23:41:05
これはひどい
809デフォルトの名無しさん:2009/09/14(月) 23:56:04
>>806
プログラム向いてないから畑でも耕してろボケナス
罵られてもなお続けたいなら↓読め

例外処理ステートメント (C# リファレンス)
http://msdn.microsoft.com/ja-jp/library/s7fekhdy%28VS.80%29.aspx

あとこれも全部読め
http://msdn.microsoft.com/ja-jp/library/618ayhy6%28VS.80%29.aspx
810デフォルトの名無しさん:2009/09/15(火) 00:01:26
キャッチスルーと書いたけど、そんなのかっこよくない。
だいたいc:が読めないからスルーしたら終わるw

素直に権限ない場合%userprofile%とか検索するプログラム書いて分岐。

もしくは根本的に検索するべきなのか考え直せぇ
811デフォルトの名無しさん:2009/09/15(火) 00:03:45
百姓を馬鹿にしている奴が昨日から1人いる…。
812デフォルトの名無しさん:2009/09/15(火) 09:19:31
たいがいそいつはもとはひどい百姓だったんだよ

でも>>809-810こいつらはきわめて優しいと思うぞなかなか真似できん
813デフォルトの名無しさん:2009/09/15(火) 09:34:51
まあキャッチスルーじゃそもそも出来ないんだから、
MSDN見れなんてのはあんまいい回答とも思えんしな。
814デフォルトの名無しさん:2009/09/15(火) 11:48:52
y=(2 * Math.Atan(Math.Exp(f)) - PI / 2) / (PI/180);

ある座標変換系コードを検証してんだけど、これはつまりなにやってんの?
815デフォルトの名無しさん:2009/09/15(火) 11:56:01
数学板で聞いた方が早いんじゃない?
816デフォルトの名無しさん:2009/09/15(火) 12:06:42
Directxでフォームとは別のクラスを作ってそこでDirectxの処理をして
ピクチャーボックスに表示したいんですがどうしたらいいんでしょうか。
今はDirectXのデバイスにピクチャーボックスのハンドルを入れたらいいのかなと
思ってやってるんですが間違えてますか?


public Intptr GetHandle()
{
PHandle = PictureBox1.Handle;
}

デバイスにPHandleをいれる。
private bool InitializeGraphics()
PHandle = GetHandle();
device = new Device(0, DeviceType.Hardware, PHandle,・・・・・);
817デフォルトの名無しさん:2009/09/15(火) 12:18:54
ドキュメントで引数の型を見ろよカス
818デフォルトの名無しさん:2009/09/15(火) 12:20:43
>>815
ですよねー

トン
819デフォルトの名無しさん:2009/09/15(火) 12:23:54
プログラミング板から誘導されました

y=(2 * Math.Atan(Math.Exp(f)) - PI / 2) / (PI/180);

ある座標変換系コードを検証してんだけど、これはつまりなにやってんの?
820デフォルトの名無しさん:2009/09/15(火) 12:24:36
ゴバーク orz
821デフォルトの名無しさん:2009/09/15(火) 12:26:29
カワイイなお前
822デフォルトの名無しさん:2009/09/15(火) 12:37:35
>>818
型が違うとだめなのか。どうもありがとう
823デフォルトの名無しさん:2009/09/15(火) 14:26:21
正規表現で「ASCII文字を許す。ただし例外として "<"と">"は不許可

ってどう書けばいいんでしょうか?
824デフォルトの名無しさん:2009/09/15(火) 14:38:26
[ -;=\?-~]
空白からセミコロンまで、等号、疑問符からチルダまで

※試してません
825デフォルトの名無しさん:2009/09/15(火) 16:00:42
質問させて下さい。
ここの過去スレで読み取り専用でListを公開したい時はReadOnlyCollection
で渡すと良い、という事を知りました。
同様にDictionaryを読み取り専用で公開したい場合、ReadOnlyCollection
の様な方法は用意されているのでしょうか?無い場合、どのような方法が
より安全でしょうか?
826デフォルトの名無しさん:2009/09/15(火) 16:03:58
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

requestからファイルサイズを習得しようとすると-1になるのですが、
どうしたら正しいファイルサイズが習得できますか?。

827デフォルトの名無しさん:2009/09/15(火) 16:07:46
>>826
HttpWebRequestからファイルサイズとか取れないだろ。
何をどうやって取ろうとしてるの?
828デフォルトの名無しさん:2009/09/15(火) 16:13:57
>>825
自分で作る 大した手間じゃないよ
829デフォルトの名無しさん:2009/09/15(火) 16:15:20
>>827
httpwebrequest.contentlength

あ、これはリクエストする方のサイズなのですね
ごめん
830デフォルトの名無しさん:2009/09/15(火) 22:43:26
C#でiphoneのアプリ開発やったことある人に質問なんですが
使い勝手や感想を教えて下さい
831デフォルトの名無しさん:2009/09/15(火) 22:44:56
すいません
mono touchのことです
832デフォルトの名無しさん:2009/09/15(火) 22:49:47
>>830-831
消しゴムじゃないMONOを使ってみるスレ 2個目
http://pc12.2ch.net/test/read.cgi/tech/1100616350/l50
833デフォルトの名無しさん:2009/09/15(火) 22:56:31
>>832
スレ違いでしたか
助かります
834デフォルトの名無しさん:2009/09/16(水) 00:34:00
RealProxyがよくわからないんですが、わかりやすい解説サイトないでしょうか?
835デフォルトの名無しさん:2009/09/16(水) 04:16:34
テキストボックスをマルチラインの設定で
複数行入力されたテキストにより、スクロールバーが表示されている状態から
テキストボック本来の開始位置からの座標を取りたいのですが
良い方法はないでしょうか?

Point mp = Control.MousePosition; //マウスカーソル位置の画面座標取得
Point cp = textBox1.PointToClient(mp); //textBoxの座標に変換

としているのですが、スクロールバーによる表示されていない部分が無視されます。
836デフォルトの名無しさん:2009/09/16(水) 07:25:02
長い文章を指定した文字数で
改行し行揃えする関数は標準で用意されてますか?

String.Format ではできなさそうでした。
837デフォルトの名無しさん:2009/09/16(水) 07:27:09
ありません
838デフォルトの名無しさん:2009/09/16(水) 08:05:20
ありがとうございました。
839デフォルトの名無しさん:2009/09/16(水) 10:09:15
File.Existsって、*file.txtのようにワイルドカードは使えないんですか?
01file.txt
02file.txt

などのどれかにヒットさせたいときには、
string[] files = Directory.GetFiles(dir, "*file.txt");
して、確認しないとだめなんでしょうか?
840デフォルトの名無しさん:2009/09/16(水) 10:14:13
そうよ
841デフォルトの名無しさん:2009/09/16(水) 10:26:09
ありがとうございました。
842デフォルトの名無しさん:2009/09/16(水) 11:15:26
イメージリストからイメージを取り出す方法はありませんか?
それとイメージリストにイメージを登録した時点でリサイズされてしまうのでしょうか?。
それとも表示する時にリサイズされるだけ?。

(Image)imagelist_listview.Images[listView1.SelectedItems[0].Name];

843842:2009/09/16(水) 11:26:49
>>842
事故
関係ない所で間違っていました
844デフォルトの名無しさん:2009/09/16(水) 11:33:25
ImageList.ImagesからImage取得した時点で画像のコピーが作られるから
頻繁に出し入れするならImage.Disposeを忘れないようになー
845デフォルトの名無しさん:2009/09/16(水) 11:50:11
usingばっちこい
846デフォルトの名無しさん:2009/09/16(水) 16:51:46
Stackを配列から初期化するには
forでまわして一個ずつpushするしかないのでしょうか?

もしくは

Stack.Pop() も forループ も使わずに
配列の先頭要素を除いた残りの配列を返す方法はありますか?
847デフォルトの名無しさん:2009/09/16(水) 16:53:38
Stackの用途間違えてる
リンクリストでも使えよ
848デフォルトの名無しさん:2009/09/16(水) 17:14:02
consセルでおk
849デフォルトの名無しさん:2009/09/16(水) 17:22:27
2008Expressでjitを使えるようにする方法はないものでしょうか?
850デフォルトの名無しさん:2009/09/16(水) 17:24:02
Just In Time = ちょうどそのとき

そのときになにをしたいの?
851デフォルトの名無しさん:2009/09/16(水) 17:25:39
俺用語使われるとエスパーの出番しかなくなって
852デフォルトの名無しさん:2009/09/16(水) 17:37:42
>>850
どうでもいいけど、英語圏でjitはもはや動詞として使われてるよw
JIT - JITs - JITted - JITting

意味はもちろんJITコンパイルすること。対義語はto AOT
853デフォルトの名無しさん:2009/09/16(水) 17:38:18
で?
854デフォルトの名無しさん:2009/09/16(水) 17:40:43
だからなんなんっていう。
855デフォルトの名無しさん:2009/09/16(水) 17:43:59
849にしかわかりません
856デフォルトの名無しさん:2009/09/16(水) 17:45:29
そうすると英語圏的にはトヨタ完全敗北なのか
857デフォルトの名無しさん:2009/09/16(水) 18:50:06
その通り
858デフォルトの名無しさん:2009/09/16(水) 19:28:48
JITって見てこれを思い出したけど間違ってたみたいだね。

Just-In-Time デバッグ:
http://msdn.microsoft.com/ja-jp/library/5hs4b7a6%28VS.80%29.aspx
859デフォルトの名無しさん:2009/09/16(水) 23:39:15
>>814
亀レスで、もう数学板の方でレスついちゃってるかもしれないけど、一応

双一次変換のアナログ周波数→ディジタル周波数の計算式じゃない?
860デフォルトの名無しさん:2009/09/17(木) 00:24:32
なんとなく交流理論でよく使う極座標表示関連の式のように思うけどね。
861デフォルトの名無しさん:2009/09/17(木) 00:35:24
>>860
http://ufcpp.net/study/digital_filter/bilineartrans.html
この双一次変換の周波数特性の式に、ωa = exp f を入れた式かと。
対数周波数(= オクターブ)を双一次変換でディジタル化したときの特性周波数だなぁ、多分。
862デフォルトの名無しさん:2009/09/17(木) 00:36:11
atan だから逆か・・・
863デフォルトの名無しさん:2009/09/17(木) 05:01:07
ジェネリック配列にテキストボックスのテキストを改行区切りで
= Text.Replace("\r", "").Split(new char[] { '\n' });
としたいのですが、どのように処理すればよいでしょうか?
864デフォルトの名無しさん:2009/09/17(木) 05:09:15
ジェネリック配列?
ジェネリックも何もString.Splitの左辺はstring[]しかありえないが?
865863:2009/09/17(木) 05:19:34
ありがとうございます。
string[]しか無理なのですね・・
動的に配列を追加していきたいもので・・・
866デフォルトの名無しさん:2009/09/17(木) 05:25:03
もうちょっと広い範囲で何をしたいのか書いた方がいいかも
List<string>にstring[]をAddRangeすることはできる
もちろんList<string[]>にAddすることも
867863:2009/09/17(木) 05:43:05
AddRangeで実現することができました!
ありがとうございます!!
勉強不足ですいません!
868デフォルトの名無しさん:2009/09/17(木) 10:23:27
C#で予め用意された値型構造体やString型クラスは
=演算子で構造体またはクラス変数にそのままメンバ値を代入できますよね

これってユーザ定義構造体またはクラスで実現できますか
調べてみたら、=演算子のオーバーロードはできないみたいだし、
インデクサは配列メンバにしかアクセスできないし。。。
プロパティでpublic this{ get; set; }みたいできたらいいんですが。。。
869デフォルトの名無しさん:2009/09/17(木) 10:26:02
はぁ?
870デフォルトの名無しさん:2009/09/17(木) 10:28:10
もしかしてリテラルが使いたいってこと?
string x = "str"; int x = 100; こういうの
暗黙の型変換(implicit operator)を実装すれば Hoge x = 1; とかできるようになる
871869:2009/09/17(木) 10:31:44
ああそういうことですか。煽って申し訳ない。
872デフォルトの名無しさん:2009/09/17(木) 10:35:13
>>868
勘違いしてそうだけど
string x = "str" って,xが指してるStringオブジェクトのメンバを変更してるんじゃなくて
新しいStringオブジェクトを作ってその参照をxに代入してるんだよ
873デフォルトの名無しさん:2009/09/17(木) 10:35:41
え?そうなの?
じゃあやっぱ煽ろうかな。
874デフォルトの名無しさん:2009/09/17(木) 10:40:40
文字列リテラルで新しいオブジェクトはまずい表現だがまあ初心者スレだからいいか。
875デフォルトの名無しさん:2009/09/17(木) 13:53:28
>>863
Textbox.Lines
876デフォルトの名無しさん:2009/09/17(木) 14:08:49
このようにしてイメージリストにアイコンを入れてみたんですが
これを取り出す方法が分からないので教えてください。

imageList2.Images.Add("rar", appIcon);
877デフォルトの名無しさん:2009/09/17(木) 14:12:50
imageList2.Images["rar"]
878デフォルトの名無しさん:2009/09/17(木) 14:15:21
>>877
ありがとうございます。無事出来ました。
879デフォルトの名無しさん:2009/09/17(木) 16:51:07 BE:185292342-2BP(85)
>>874
可能です。
以上。
はい次の方。
880デフォルトの名無しさん:2009/09/17(木) 17:41:44
listViewで最後の項目を選択したいです。
listBoxの場合には、
listBox.SetSelected(listBox.Items.Count -1, true);
でできるのですが、listViewの場合には、どのようにしたらよいでしょう?
881デフォルトの名無しさん:2009/09/17(木) 17:50:32
Itemsから最後の取得してSelected
882デフォルトの名無しさん:2009/09/17(木) 18:12:41
listView.Items.のあとに、選択系のそれらしきものがないんですけど…。
883デフォルトの名無しさん:2009/09/17(木) 18:15:21
ListViewItemのプロパティ
884デフォルトの名無しさん:2009/09/17(木) 18:27:45
なんか江戸っ子みたいな一言居士な方ですね。
そうぶっきらぼうにいわず、プロパティのどの項目か、
もうすこし手順まで教えていただけないでしょうか。
listViewのItemsのプロパティを見ると、
(コレクション)とか書いてあって、
ここではなさげだし、セレクト系の項目も見当たらないし。
885デフォルトの名無しさん:2009/09/17(木) 18:33:48
何甘えてんの
886デフォルトの名無しさん:2009/09/17(木) 18:41:00
>>884
横からだが、>>881で答え出てるじゃん
それで分からないって言うから>>883でListViewItemのプロパティってとこまで教えてもらってるのに、何故理解できないのか。

とりあえずMSDNのListViewItemの項目読んで来い。
887デフォルトの名無しさん:2009/09/17(木) 19:07:50
みんな優しいのな。 こういう人には、さっさと教えて勉強する機会を奪いたくなる。
listView1.Items[listView1.Items.Count - 1].Selected = true;
listView1.Select();
888デフォルトの名無しさん:2009/09/17(木) 22:56:13
MSDN読めと一言いえば済むよ
889デフォルトの名無しさん:2009/09/17(木) 23:49:53
MSDNは俺の読め
890デフォルトの名無しさん:2009/09/18(金) 01:33:13
>>887
ありがとうございます。無事出来ました。
891デフォルトの名無しさん:2009/09/18(金) 03:40:59
どういたしまして。
892デフォルトの名無しさん:2009/09/18(金) 04:11:06
C#のメソッドをネイティブDLLにコールバック関数として渡したいので
そのメソッドのデリゲートを渡したところ一旦は動くのですが、
しばらくするとGCで移動させられて呼び出し時にエラーが発生するようになります。
そこでデリゲートをGCHandle.AllocでPinnedにしようと思ったんですが、
デリゲートはblittableでないからとArgumentExceptionが発生します。
どうすればDLLに固定されたアドレスを渡せるんでしょうか。
893デフォルトの名無しさん:2009/09/18(金) 07:45:04
デリゲートインスタンスをローカル変数じゃなくてフィールドに置くようにしとけばいいよ
894デフォルトの名無しさん:2009/09/18(金) 07:50:24
言っとくがエラーになるのは固定されてないからとかそういう問題じゃないよ
デリゲートが解放されないように参照をちゃんと保持しとけばいいだけ
895デフォルトの名無しさん:2009/09/18(金) 12:09:00
一枚の大きな画像が複数のタイルファイルに別れている場合、
タイルファイルを呼び出して大きな画像を作る前処理が必要です。

そして表示領域が移動したとき、領域からはずれたタイルを破毀し、必要なタイルだけを補完する必要があります。

こういう場合とっておきのスマートな処理方法ってありますか?

定石のようなものやクラス構成のヒントだけでも教えてもらえるとありがたいです。
896デフォルトの名無しさん:2009/09/18(金) 12:17:56
バカじゃねーの
897デフォルトの名無しさん:2009/09/18(金) 12:21:47
自分の歩いた道は既に誰かが通っていて、
常に舗装されている(スマートな解法が存在する)と思ってる奴がいるよね。
898デフォルトの名無しさん:2009/09/18(金) 12:24:03
煽りはうざいから消えてくれ
ちゃんとしたレスする気がないならスルーしろ
899デフォルトの名無しさん:2009/09/18(金) 12:25:50
嫌だね
900デフォルトの名無しさん:2009/09/18(金) 12:26:45
スレタイ読めよクズが
901デフォルトの名無しさん:2009/09/18(金) 12:27:07
┐('〜`;)┌
902デフォルトの名無しさん:2009/09/18(金) 12:28:00
こういうの定期的に湧くね。
バイオリズムか何かで虫の居所が悪い周期でもあんのかしら。
903デフォルトの名無しさん:2009/09/18(金) 12:28:15
テンプレ読めクズ
904デフォルトの名無しさん:2009/09/18(金) 12:30:14
くずがくずとののしるのですか
905デフォルトの名無しさん:2009/09/18(金) 12:32:11
黙れクズ
906デフォルトの名無しさん:2009/09/18(金) 12:33:32
http://hinagis.blog33.fc2.com/blog-entry-31.html
俺ど素人だから分からんがここに書いてあるんじゃない?
907デフォルトの名無しさん:2009/09/18(金) 12:37:34
平和だな
908デフォルトの名無しさん:2009/09/18(金) 15:29:24
>>893-894
ありがとうございます。
できました。
でもこれって移動しない保証はあるんですか。
それとも保証は無いけど実質移動はしないということですか。
909デフォルトの名無しさん:2009/09/18(金) 15:48:53
>>908
今どういうコード書いてあるか見せてみろよ。
移動がどうこう言ってるようじゃ何か間違ってるわ
910デフォルトの名無しさん:2009/09/18(金) 16:05:24
間違ってねーよ
できたつってんだろ
911デフォルトの名無しさん:2009/09/18(金) 16:08:13
正直よく分からんが、取り敢えずこの辺の議論でも読んでみたら?>デリゲートの固定
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36275&forum=7
912デフォルトの名無しさん:2009/09/18(金) 16:19:34
懐かしいな…

そこでも結論出てたと思うが、デリゲートをアンマネージに渡すと、
マーシャリングのためのサンクが作られる。
このサンクが生きてる限り、アンマネージからの呼び戻しは正しく動作する。
サンクはデリゲートがGCで解放されると死ぬ。

以上、デリゲートの固定とか関係ない。
913デフォルトの名無しさん:2009/09/18(金) 16:20:44
Marshal.GetFunctionPointerForDelegateにはGCが回収しないようにしておけばいいと書いてあるから
固定とか不要だと思うけど
914913:2009/09/18(金) 16:21:24
すまん、リロードしてなかった
915デフォルトの名無しさん:2009/09/18(金) 16:38:53
>>911-914
ありがとうございます。
参考になりました。
916デフォルトの名無しさん:2009/09/18(金) 16:42:24
サンクが作られるのか
サンクス
917デフォルトの名無しさん:2009/09/18(金) 17:21:51
C++/CLIからC#に来るとC++のpin_ptr<T>とかのせいで誤解するよね
918デフォルトの名無しさん:2009/09/18(金) 17:34:34
しないです
919デフォルトの名無しさん:2009/09/18(金) 17:49:51
するです
920デフォルトの名無しさん:2009/09/18(金) 17:52:20
VBからくるとC#の{ ... }ブロックはべんりねん
921デフォルトの名無しさん:2009/09/18(金) 17:56:01
VBが不便なだけ
922デフォルトの名無しさん:2009/09/18(金) 18:36:23
>>895
ゲームのマップ?
C#にこだわらなければサンプルはそこらへんに腐るほど落ちてるぞ
一回書けば二度と触らない部分だろうからスマートとかどうでもいい
923デフォルトの名無しさん:2009/09/18(金) 18:51:23
>>917 C++にはpin_ptrなんか無いぞ
C++のせいにするなー!
924デフォルトの名無しさん:2009/09/18(金) 19:10:51
>>922
あざーす
一枚のタイルがどこまで動いたか調べて一斉にタイルを書き換える方法が見つかりました
まー結局ループしてコピーなんですね

OOPっぽくタイルクラスに移動値(x、y)を与えてやってみます
925デフォルトの名無しさん:2009/09/18(金) 19:20:35
タイルをクラスにするなら,表示領域外のタイルオブジェクトも保持するようにした方がスマートだよ
表示領域外に出たタイルオブジェクトは描画リソースだけ破棄するようにする
大きな画像全体を仮想的に保持しといて,必要な範囲だけ描画を有効にするイメージ
926デフォルトの名無しさん:2009/09/18(金) 21:41:47
>>925
ありがとうございます
ライフゲームのセルみたいな感じですね?
わかります

C++で最初に書いたのを思い出しました
927デフォルトの名無しさん:2009/09/19(土) 08:38:42
商品注文画面を作成しています。
a.
検索ボックスに検索したい商品の名前を入力しはじめると、
返還前であっても該当する商品が右側の窓に表示されるようにしたいのですが、
返還前の文字列を取得し、検索結果を表示するにはどうすればいいでしょうか。
b.
発注者の氏名を入力したら、自動で発注者のフリガナを下のボックスに入れたいと思っています。
これもaと同じ要領で返還前文字を拾うことができるでしょうか。

よろしくお願いします。
928デフォルトの名無しさん:2009/09/19(土) 08:45:32
いやです
929デフォルトの名無しさん:2009/09/19(土) 09:05:11
>>924
>>925
この2レスだけ読むと滅茶苦茶重くなりそうに見える。
930デフォルトの名無しさん:2009/09/19(土) 09:30:51
それほどでもない
931デフォルトの名無しさん:2009/09/19(土) 10:11:13
>>927
IMEで入力中の文字列を取得すればいいだけじゃん
932デフォルトの名無しさん:2009/09/19(土) 10:12:45
>>929
タイル(x1,y1)が(x3,y5)へ移動した場合
タイルのインデックスを書き換えるようにした方がいいですかね?
タイルの座標が表示領域(およびバッファ領域)を超えた時点でインデックスが削除され
インデックス(0,0)から順に描画、タイルがインデックス上に存在しない場合、インデックスを消したタイルを再利用

クラス タイル
{
   string タイル座標;
   bitmap タイル画像;
}

クラス タイルコンテナ
{

}
933デフォルトの名無しさん:2009/09/19(土) 10:13:58
>>932
途中で投稿してしまいました orz
タイルコンテナでタイルを配列かリストで管理する感じです
934デフォルトの名無しさん:2009/09/19(土) 10:16:34
このとき、タイルはタイル領域のサイズを知っていれば
移動量を与えるだけで自分が領域を外れたかどうか判断できると思うのですが
タイルコンテナクラスのプロパティをタイルクラスから参照する方法ってありましたか?

引数で与えてやればいいだけですが
935デフォルトの名無しさん:2009/09/19(土) 10:40:22
>>932
タイルということは敷き詰めるんだよな?
> タイル(x1,y1)が(x3,y5)へ移動した場合
この時点で無駄でしょ。
タイルが移動するオブジェクトである必要は無い。
2次元配列(パフォーマンス的には配列の配列か)、視点(カメラ)、リソースのコンテナ、あと表示領域分の別バッファ…このあたりか
動くのは自分或いは世界ね。
怠惰なオラは>>924以前の流れは読んでないので的はずれだったらすまぬ。
ノシ
936デフォルトの名無しさん:2009/09/19(土) 11:32:09
>>935
なるほど スピード重視だとそうなるんですね
タイル空間の座標を全タイル分用意
配列の配列には画像へのポインタ
こんな感じすか?

見える範囲をキャタピラみたいなもんに描画するのと
たぶん画像のポインタの切り替えや読み込みは同じなんで
ループするタイルの枚数が少ない方が早い気がしますが

タイルの総数が少ないと配列の方が早いんですね?

参考になりました
937デフォルトの名無しさん:2009/09/19(土) 11:48:58
> 配列の配列には画像へのポインタ
もっと単純にintでもいい
もしxna+xboxなら値型のほうがいいから、この場合複雑なものが入るときはstructのほうがいい
> タイルの総数が少ないと配列の方が早いんですね?
そうじゃないです。常に描画するのは差分だけなので描画回数等から差が出る。
別個のオブジェクトとして扱うとその最適化に悩むことになると思われる。
938デフォルトの名無しさん:2009/09/19(土) 12:25:06
なーんか>>936の考えがよくわかんないね。
タイルが移動とか、どうしてそういう風に考えるんだろう。

普通に考えれば、例えば表示領域のサイズがタイルを1としたときn×mだとしたら、
(n+2)×(m+2)のサイズのバックバッファを用意して、あとは球面スクロールを
実現するために(1)バックバッファの更新方法と(2)バックバッファからのBitBltの方法
を考えるだけじゃないの?
939デフォルトの名無しさん:2009/09/19(土) 14:17:49
>>937
ありがとうございます。
>単純にintでもいい
なるほど画像番号みたいなものですね

>別個のオブジェクトとして扱うとその最適化に悩むことになると思われる。
もうすでに悩んでいるようです
言われてみて実際のサイズを考えて見たら、理論上はタイルを1として
35万×35万くらいのマップサイズになる可能性がわかりまして・・・

>>938
ありがとうございます。
こういう話に慣れてないのですみません。

単なる描画と割り切ってしまえば簡単ですね。
タイルファイルをオブジェクトとして扱わない方向で考えて見ます。
940デフォルトの名無しさん:2009/09/19(土) 16:40:40
MDI フォームを作り、子ウインドウを最大化して使用しています。
ボタンをつけて、アクティブなウィンドウを変更できるようにしたのですが、
変更する際に、一瞬だけ最大化されていないウィンドウが表示されてしまいます。

スムースに切り替える方法はないでしょうか?
941デフォルトの名無しさん:2009/09/19(土) 17:02:21
またそういう「ナイアル厨ホイホイ」な質問を・・・

まあ何か方法はあったはず。
MDIは他にもしょうもないバグが満載だから困っちゃうね。
942デフォルトの名無しさん:2009/09/19(土) 18:02:03
子ウインドウが常に最大化されてるんだったらMDIでなくてよくね
Panel貼っといて中身を差し替えたら
943デフォルトの名無しさん:2009/09/19(土) 21:19:52
C#のお勧め書籍を教えてください。
オライリーの初めてのC#は読みましたがいまいち内容が足りない感じです。
もう少しオブジェクト指向など高度なことが学びたいのです。
944デフォルトの名無しさん:2009/09/19(土) 21:54:05
おまえ、オブジェクト指向いいたいだけ違うんかと。
945デフォルトの名無しさん:2009/09/19(土) 22:13:49
デザパタ本でも読めば?
946デフォルトの名無しさん:2009/09/20(日) 02:58:43
>>931
そのやり方が何を見ても分からないんです。
どのようにすれば、IMEから確定前の入力を拾うことができるのでしょうか?
947デフォルトの名無しさん:2009/09/20(日) 06:28:31
>>946
.NETのクラスライブラリ(BCL)にはない。BCLにあるのはIMEのOn/Offくらい。
Win32APIを使うことになるが結構面倒で説明しきれない。
imm.h / imm32.lib でぐぐればいくつか出てくると思うよ。
948デフォルトの名無しさん:2009/09/20(日) 10:56:44
極東向けのおまけパッケージに、ふりがな取得する奴はあった気がする。
949デフォルトの名無しさん:2009/09/20(日) 14:01:20
「性別」グループボックス内に、
ラジオボタン「男」「女」を並べています。
「男」ラジオボタンのタブストップをTrueにし、
「男」ラジオボタンにフォーカスが当たったときに、男と女を選択するようにしたいと思っていますが、
「男」ラジオボタンにフォーカスが当たった時に、
「男」が自動でチェックされてしまいます。
フォーカスは当たるけどチェックは手動で行ってもらうようにするにはどうすればいいでしょうか。
教えてください。
950デフォルトの名無しさん:2009/09/20(日) 14:13:29
そういうもんだろ。
951デフォルトの名無しさん:2009/09/20(日) 14:16:47
>>949
ラジオボタンはそういうもんだという気がするが、
どうしてもやりたいなら、チェックボックス使って、
排他は自分で制御とか。
952デフォルトの名無しさん:2009/09/20(日) 14:18:36
そういう微妙なとこ変えられるとかえって戸惑うだろうな
そういうのって意識してなくても慣れてるもんだから
953デフォルトの名無しさん:2009/09/20(日) 14:30:33
ほっとけば、選択中の項目にフォーカスするようになっているのに何がしたいのか
954デフォルトの名無しさん:2009/09/20(日) 14:36:37
フォームデザイナでサイズを指定するとウィンドウの外側にあわせてサイズが指定されるんですが
枠の内側(タイトルバーなどを除いた、実際の表示領域)のサイズを指定することはできないのでしょうか?
955デフォルトの名無しさん:2009/09/20(日) 14:39:07
>>950-552
そもそも>>949のいってるようなことは実際には起こらんよ。
フォーカスが当たっただけでチェックされる、なんてことはない。
そんなアホなコントロールがあるわけないだろ常識で考えても。
956デフォルトの名無しさん:2009/09/20(日) 15:00:40
>>955
フォーカスが当たってもチェックされないみたいだけど、
見た目はチェックされているからね。
フォーカスを当てつつ、チェックもさせないようにできないのかな。
カーソルキーやスペースを押して初めてチェックがつくように。
957954:2009/09/20(日) 15:02:04
クライアントっていうんですね・・・
this.ClientSize = new Size(640, 480);
↑でできました

ただ、これで対応した場合はフォームデザイナのほうはそのままにしておくのでしょうか?
これを入力して戻っても、サイズがかわってくれません
(ビルドしたらきちんとサイズは変更されています)
958デフォルトの名無しさん:2009/09/20(日) 15:08:08
>>956
ごめん、言ってる意味が理解できない。

君はフォーカスが当たると「チェックされる」と言ってるか、「チェックされない」
と言ってるのか、どっちなんだ。

現実はどうかと言えば、もちろんフォーカスがあたっただけでチェックなどされない。
959デフォルトの名無しさん:2009/09/20(日) 16:21:25
>>958
フォーカスが当たった時に
実際はチェックされていないのかもしれないけど、
見た目は点が付いてしまっているのを、
点が付かないようにできないのかな。
960デフォルトの名無しさん:2009/09/20(日) 16:26:28
それぞれが独自の意味でフォーカスという単語使ってるせいで
意思の疎通ができてませんよお前ら
961デフォルトの名無しさん:2009/09/20(日) 16:50:04
タブオーダーが最初だとチェックされるね。
まあAutoCheckはずしてclickイベントで自力でやるとか
962デフォルトの名無しさん:2009/09/20(日) 18:46:56
タブが当たったときに、○に・がつかないようにしたいんだろ?
javaではできるみたいだけどね。
963デフォルトの名無しさん:2009/09/20(日) 19:37:09
ListView1にあるアイテムをListViewItemの配列にまとめて入れたいんですが
foreachを使わないで簡単にできる方法ってありますか?
964デフォルトの名無しさん:2009/09/20(日) 19:40:38
Items.Cast<ListViewItem>().ToArray()
965964:2009/09/20(日) 19:41:23
これだと新しい配列になるから駄目か
966デフォルトの名無しさん:2009/09/20(日) 19:43:16
即レスどうもありがとうございました。
967デフォルトの名無しさん:2009/09/20(日) 19:45:48
>>965
入れることができるなら新しくても何でも大丈夫です。
968デフォルトの名無しさん:2009/09/20(日) 22:06:26
リムーバブルディスクなどを挿した時に走る自動実行を制御したいです。
ダイアログを出さないためにはレジストリをいじるしかないでしょうか。
作りたい機能としては、
shiftを押しながらリムーバブルディスクを挿すと自動実行のダイアログが
出てこないですが、それと同じように一時的に自動実行を無効にする
方法はないでしょうか。
969デフォルトの名無しさん:2009/09/20(日) 22:51:44
>>968
有限数のマシン(XP,2k)に限り完全に機能を殺したい
ってだけだったら、こっちをオススメする(C#は一切関係ない
ttp://gigazine.net/index.php?/news/comments/20070131_autorun_off/


もっと便利なユーティリティを作りたいっていうんだったら全然分かりません。
970デフォルトの名無しさん:2009/09/20(日) 23:00:17
>>969さん
ありがとうございます。
自作のプログラムが常駐している間は自動実行を
無効にして、挿さったリムーバブルディスクに対して
やりたい操作をしたいので、今回お教えいただいた
方法は欲しい方法ではありませんでした。
971デフォルトの名無しさん:2009/09/20(日) 23:27:48
ttp://www.mnet.ne.jp/~angie/kbase/xp-autorun.html
LKCUだから特に昇格とかはいらんが 再起動はどうだろ
972デフォルトの名無しさん:2009/09/20(日) 23:29:03
LKCUじゃないや、HKCU
973デフォルトの名無しさん:2009/09/20(日) 23:36:22
むしろTweakUIで十分じゃないかと思うなあ
再起動しなくて済む分だけ楽だし。

UI起動すらめんどいってほどの頻度で設定変更したいなら
特定アプリの特定項目を自動実行するようなユーティリティアプリを作った方が早い気がする。
//特定アプリのUI表示位置とかが変更不可能な場合に限るだろうけど
974デフォルトの名無しさん:2009/09/20(日) 23:37:47
968です。
>971さん
やはりレジストリをいじる必要がありそうですね・・
調べた感じ再起動も必要みたいです。
簡単にはいかないですね。
975デフォルトの名無しさん:2009/09/20(日) 23:45:17
968です。
>973さん
常駐プログラムがリムーバブルディスク挿しの監視
をして挿さった時にファイルコピーなどの処理をしたいので、
ユーザーが設定変更を意識しない方法をとりたいです。
自動実行を重宝しているユーザーも、もしかしたらいる
かもしれないですし、この常駐プログラムが実行されている時
だけの設定変更としたいです。
976デフォルトの名無しさん:2009/09/20(日) 23:53:06
>>975
そのリムーバブルディスクに何もしないautorun.infを作って入れておいたらどう?
977デフォルトの名無しさん:2009/09/21(月) 00:06:02
上の方で、ラジオボタンとフォーカスの話があったけど
マウスとキーボードの差に見えて仕方がない。
978968:2009/09/21(月) 00:07:22
>976さん
リムーバブルディスクはユーザーが持っているものなので
autorun.infなどは入れられません。

考えている仕様ですが
・常駐プログラムである
・ユーザーの持っている任意のリムーバブルディスクである
・ユーザーがリムーバブルディスクを挿したタイミングで走る
・挿した後自動でファイルコピー等の処理をする

以上のような仕様の場合、自動実行のダイアログが邪魔になります。
979デフォルトの名無しさん:2009/09/21(月) 00:24:54
なんつーか、C#関係ないよね
980968:2009/09/21(月) 00:56:40
確かにそうですね・・・
C#を使っているので質問しました。
みなさんありがとうございます。
981デフォルトの名無しさん:2009/09/21(月) 01:54:12
>>977
最初にTabStopの話しが出ているんだから、マウスとかカーソルキーとかは論外だろう
982デフォルトの名無しさん:2009/09/21(月) 10:20:22
#if DEBUG
#endif
みたいなかんじで
#if 発行  とやるにはどうやるんでしょうか?
983デフォルトの名無しさん:2009/09/21(月) 11:10:31
# 日本語でOK
984デフォルトの名無しさん:2009/09/21(月) 12:14:13
Dictionary<Key,Value>で特定のKeyがセットされてるかどうか調べるにはどうすればいいですか?

if (Dictionary[key] == "") とするとセットされていないときエラーになります。
catchするしかないでしょうか?
985デフォルトの名無しさん:2009/09/21(月) 12:19:03
ContainsKey
986デフォルトの名無しさん:2009/09/21(月) 12:22:52
TryGetValueとかも。
というか、分からなかったら質問する前に、まずオンラインドキュメント読もうよ。
987デフォルトの名無しさん:2009/09/21(月) 12:32:32
最近少し分かるようになってきたけど
初心者にはドキュメント自体が理解できないんだよな
988デフォルトの名無しさん:2009/09/21(月) 12:35:19
確かに。しかし不思議なことにじきに理解できるようになる
989デフォルトの名無しさん:2009/09/21(月) 16:34:00
Framework 2.0 compacktで

非同期要求のHttpWebRequest.BeginGetResponse
でコールバックメソッドに処理が戻る前に
System.UriFormatExceptionが出ます

リクエストは通ってるようで、データは取れてるのですが、
HttpWebResponseになにかメッセージが入ってるのでしょうか?

ヒントをお願いします
990デフォルトの名無しさん:2009/09/21(月) 16:52:16
RFC 2396
991デフォルトの名無しさん:2009/09/21(月) 17:00:28
エンコードチェックしてみます

ありがとうございました
992デフォルトの名無しさん:2009/09/21(月) 17:01:19
WebRequest.Createの段階でUriFormatExceptionが出ないのがやや不可解
AllowAutoRedirect=true、3xxで無効アドレスでも返されてるんだろうか
993デフォルトの名無しさん:2009/09/21(月) 17:25:54
いえ、レスポンス見ると要求したURLから正常なデータが取れてます
ステータスOKです

具体的には今は画像のダウンロードでやってますが、画像はちゃんと表示できます

HttpWebRequestが勝手に再送信を要求して通ってる・・・わけはないですよね?
なんだろうな
994デフォルトの名無しさん:2009/09/21(月) 17:31:04
その例外ってcatchしないとアプリが止まっちゃう?
それとも内部で出てるのがデバッグ出力に吐かれてるだけ?
995デフォルトの名無しさん:2009/09/21(月) 17:31:22
パケット見てみれば?
996デフォルトの名無しさん:2009/09/21(月) 17:40:01
>>994
後者です
catchでは掴まらずBeginGetResponseが処理を終わってコールバックメソッドに処理が戻る前に
デバッグ出力に出ます

>>995
パケット・・・
997989:2009/09/21(月) 17:42:41
998デフォルトの名無しさん:2009/09/21(月) 18:00:42
ume
999デフォルトの名無しさん:2009/09/21(月) 18:01:24
999
1000デフォルトの名無しさん:2009/09/21(月) 18:02:12
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。