ふらっとC#,C♯,C#(初心者用) Part44
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980 を踏んだ人は新スレを建てて下さい。
>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part43
http://pc12.2ch.net/test/read.cgi/tech/1248573707/
4 :
デフォルトの名無しさん :2009/08/28(金) 15:51:24
tryとcatch、 どういう背景でこのような呼び方をするのですか? エラー、ノットエラーみたいな呼び方でいいのに…。
5 :
デフォルトの名無しさん :2009/08/28(金) 15:55:41
データセットに溜め込まれたの内容を、CSVテキストに書き出すにはどうすればよいでしょうか。 リストボックスの内容を書き出す方法は、本に書いていましたが…。
>>4 おれも日本語で
監視
{
}
確保
{
{
ーがいいと思う
8 :
デフォルトの名無しさん :2009/08/28(金) 17:17:07
>>7 うちの、
秀和かソシム?の逆引き向けの本です。
今、歯医者にいますので、うちに着いたら正式なタイトルを書きます。
9 :
デフォルトの名無しさん :2009/08/28(金) 18:11:16
今から覚えるなら、C♯のWindowsフォーム、C♯のWPFアプリケーション、java、パワービルダーのどれがいいですか?
初心者向けの日本語情報が沢山あるWinFormsにしとけ WPFは必要性を感じるまでやんなくていい
11 :
デフォルトの名無しさん :2009/08/28(金) 18:55:55
デリゲートって、一体、どういう必要性があるときに使用するの? 本屋のC♯の本を全て見たけど、どれも内容だけ書いていて、メリットや用途について書いていなかったです。 教えてください(>_<)。
普通知らないうちに使ってるよ。
デリゲートを使うと「関数を引数に取る関数」を作ることができます。 慣れないうちは意識して明示的に使うことは無いかもしれませんが, イベントやLINQの裏方として多用されています。
14 :
デフォルトの名無しさん :2009/08/28(金) 19:20:50
>>13 自分でコーディングしたことないけど使ってるの?
もしかして別のクラスにコード記述がなされてるの?
たとえば,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
あーみんな死んじゃえ
>>16 イベントハンドラを手で登録することはよくある。
明示的な「関数を引数に取る関数」の例は,list.RemoveAll(x => x.IsHoge) みたいなのがある。
x => x.IsHoge という関数をRemoveAllの引数に渡してるわけ。これにもデリゲートが使われてる。
>>17 Windows限定なら断然C#
20 :
デフォルトの名無しさん :2009/08/28(金) 20:27:56
>>19 …どういうときに…意識的にデリゲートを使うのだろうか…。
おいおい分かってくるのだろうか…。
処理を差し替えたいときに使うんだよ void Hoge(Action<Foo> 差し替え可能な処理) { var foo = 共通の前処理(); 差し替え可能な処理(foo); 共通の後処理(foo); } みたいな
初心者にラムダ式見せて無用に混乱させるラムダ厨
たとえば、客に料理を出してもてなすクラスを考える 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 (.がスラッシュのときも同様に認識) このとき、一般的にどのような仕組みが作られているのでしょうか?
カレンダー系のコントロールで入力させる
あんまりいい例じゃないと思うけどねw
少なくとも俺が
>>23 的なデリゲートの使い方があまり好きになれない理由の一つは、
>23の例で言えば、例えば「今どの料理を出すモードか?」を表すプロパティが
必要になったときスマートにいかないからだね。
恐らくほとんどのプログラマは認めないと思うが、
こんな場合は泥臭くてもswitchで分岐した方が結局分かりやすいように思える。
そういう必要がない純粋なディスパッチャーを記述する場合にはデリゲートで
いいと思うんだけど。
いや、わかりやすさ、うんぬんの話ではなくて、 Hostクラスに料理に関してどれほどの自由度を与えるか、の問題だね。 イタリア料理、日本料理、フランス料理の調理能力をHostに与えたとして、 いざ、中華をださなきゃならんというときに、Hostクラスをいじくらなきゃならなくなる。 それならいっそのこと最初からdelegeteの形で外部から料理人を雇ってしまおう、 という発想だね。
>>29 言いたいことは分かるけど、
それならComparison<T>の使われ方みたいな例を挙げた方がよかったんじゃないのかな。
現実問題、
>>23 みたいな話でそれほどの柔軟性が必要性な例はあまりないと思う。
どっからかBuilderパターンの説明文をコピペしてきて デリゲートに書き換えただけのような感じがする
32 :
デフォルトの名無しさん :2009/08/28(金) 22:43:10
33 :
デフォルトの名無しさん :2009/08/28(金) 22:53:57
正規表現…これは日付取得の方法として常識なんだろうか。
パターン化可能な文字列に対するマッチングが正規表現であって別に日付に限らないよ
いずれにせよ面倒くさいコーディングになるな
そんな所で頭使う前に、決め打ちで完成させてから考えることだな。
君はもう少し頭を使って日本語を書くべきじゃないかと思うんだ
38 :
デフォルトの名無しさん :2009/08/29(土) 00:16:32
TreeView tv = (TreeView) sender; というコーディングの、(TreeView)は何を意味しているのですか?
型だよ!クラスだよ!
イベントだったらルートクラスにキャストされた参照を元のクラスにキャストしなおしているのでは?
ラムダ式って何のメリットあるん?
書きやすい、まぁまぁ見やすい expression tree にできる
LINQ使わないならそこまで恩恵ないような
書くのがdelegateよりも楽。 慣れるとdelegateよりも見るのが楽。
45 :
デフォルトの名無しさん :2009/08/29(土) 01:07:59
private Color _BorderColor; [Category("表示")] [DefaultValue(typeof(Color), "Black")] [Description("あああ")] public Color BorderColor { … というコードの中の、 [・・・] は何を意味しているのですか?
属性(メタデータ)
47 :
デフォルトの名無しさん :2009/08/29(土) 01:17:43
>>46 属性…どういうときに使うの?
本に書いていないんです(+_+)。
例えば45の場合はそれらのメタデータ読み取ってVSがフォームデザインする時に使っている
49 :
デフォルトの名無しさん :2009/08/29(土) 01:21:05
10進数を36進数に変換し、 0〜Zまでの表示にしたいと思っています。 このような場合、どのようなコーディングが適しているでしょうか。 よろしくお願いします。
宿題か何かか?
動いてるコードが適してるコーディングなんだよ馬鹿野郎。 書いてから寝言言えボケカスゴミクズ
落ち着けって
宿題は自分でやろうな どうしても分からない所だけ聞いたらいいよ
宿題スレなら親切な人が1から10まで教えてくれるよ たまに罠仕込む奴がいるが
55 :
デフォルトの名無しさん :2009/08/29(土) 01:48:54
>>51 ところで、あなたは開発経験どれくらいですか?
親クラスの親クラスがよべない糞言語はここですね
privateじゃない限り、ダウンキャストすれば呼べるでしょ。 頭悪いのかな
教科書通りに10進数を36で割って商と余りを云々ってのをやってけばいいんでない?
59 :
デフォルトの名無しさん :2009/08/29(土) 02:14:39
データセットのデータをテキストに書き出すことはできますか? データグリッドビューのデータを書き出すのは本に書いていました。
ぐぐれ
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進数でも応用が効くね。
先が思いやられるな
64 :
デフォルトの名無しさん :2009/08/29(土) 02:47:22
わけねーだろ
66 :
デフォルトの名無しさん :2009/08/29(土) 03:01:59
67 :
デフォルトの名無しさん :2009/08/29(土) 03:08:33
皆さんはVS歴どれくらいなんですかね。 私は1ヶ月ですが。
こいつVSスレにいた荒らしだろ
69 :
デフォルトの名無しさん :2009/08/29(土) 04:44:08
>>68 つやつやリキッドファンデーションでも塗っとけ。
Accessのファイルに複数のクライアントアプリから同時に接続できるんですか?
出来るけど接続多過ぎるとmdb破壊 破壊の目安はぐぐれ
>>49 >>58 で剰余をyield returnしてLSDから順に取りだす。
得られたシーケンスをReverse, Select, ToArrayして、String.Concat
宿題はC風に書け でないと先生が読めない
74 :
デフォルトの名無しさん :2009/08/29(土) 12:16:22
PL1とCOBOLのみの経験者です。 「オブジェクト指向」の意味を本で調べましたが、 何を読んでも、 COBOLなどの「サブルーチン」や「共通ルーチン」に、デザイン上の汎用コントロールを付け加えたもの という意味を言っているように見えて仕方がないんです。 けどCOBOLはオブジェクト指向ではありませんし…。 オブジェクト指向言語とCOBOLとの決定的なちがいは何でしょうか?
何を読んだら > 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もオブジェクト指向になってしまいますもんね
(-_-;)。
オブジェクト指向はゴールじゃなくて「手法」。君が言ってるのは目的の一つ。
オブジェクト指向というか、クラスの概念は「データとそれを触る処理をパッケージ化する」です。 なのであるデータがどう弄られているかを知りたい時、そのデータが所属するクラス内を見るだけで済みます。 オブジェクト指向言語で無い場合、スコープの範囲で調べる必要がでます。
>>77 まず「クラスとは何者か?」を理解する。
「オブジェクト指向とは何か」を考えるのはそれからでいい、というより、
君がノイマンみたいな天才でもない限り、いきなり抽象論から理解しようとするのは
無理がある。
オブジェクト指向は経験的な手法を整理したものだから触ってりゃそのうちわかる
>>76 それ実行したら画像は表示されるの?
82 :
デフォルトの名無しさん :2009/08/29(土) 13:31:10
>>81 もらった状態でデバッグすると画像は表示されますが、一度、画像「なし」にしたり、他の画像に変えてしまうと、元にもどらなくなってしまうんです。
VS のバージョンにもよるかも知れないが…resx ファイルの 中にバイナリが Base64 あたりで入ってるかと。
COBOLみたいにデータを処理する手続きの集まりでプログラムを作るんじゃなくて、 クラスというかオブジェクトが何かをするという、そのオブジェクトの組み合わせでプログラムが動くイメージ。 でもこんな書き方で誤解なく意図が伝わるのは元々ちゃんと理解出来てるやつだけなので意味なし。
85 :
デフォルトの名無しさん :2009/08/29(土) 13:59:59
>>83 ありがとうございます。
resxファイルの中に、3つのGIFファイルがありました。
これら全てをリソースにインポートしてみましたが、
どのファイルを指定しても、元には戻りません…。
>>85 何がしたくて何を困ってるのかいまいちよく理解できないが、
とありあえず(手を入れる前の)元のコードのInitializeComponent()の
中のコードはちゃんと見た上で言ってるの?
87 :
デフォルトの名無しさん :2009/08/29(土) 14:26:26
>>86 元のコードのInitializeComponent()を見ても、
どの画像を引用しているかが記述されていません。
リソースファイルではなく、画像が埋め込まれている…のかもしれませんが、
その埋め込まれている画像をリソースファイルに格納し、他のコントロールでも活用したいんです。
コードで指示されてない画像が本当に表示されているのなら、 質問はプログラム板じゃなくてオカルト板ですべき。
89 :
デフォルトの名無しさん :2009/08/29(土) 15:05:00
>>88 うむ。
存在しない画像を読み込むわけがない。
組み込み画像とリソースファイルの区別は俺も全く理解できていないが。
というか難しい。
複数のユーザーコントロールを作ったんですが、お互いのコントロールクラスの中で使っているインスタンスを使用してそのクラスの関数までを他のユーザーコントロールから実行するにはどうすればいいんですか? GetMainForm().funk(); のようなことがしたいんです どうやって親のメインフォームでインスタンスを作ってある複数のユーザーコントロールにアクセスすればいいんですか?
class UC1{ funk(){ GetMainForm().UC2.funk(); } } 間違えましたやりたいのはこれです。
それやっちゃうとユーザーコントロールに分けた意味が無くなるんだよね ユーザーコントロールのコンストラクタに親のインスタンスを渡したりすればできるけど, 基本的にはそういうことをしなくていいように作るべき
>>91 どうして、「しなくていいように作るべき」なのかを説明しといたほうがいい。
>>90 ユーザコントロールから他のコントロールの処理を呼び出すというのは、その
コントロールが「閉じていない」という証拠。他のコントロールの仕様を変えた
ときにこっちのコントロールまで影響が出る。
くわしくは「オープンクローズドの原則」という用語をググってくれ。
んで、ダメダメな設計の見本のようなものだから、そもそも設計から見直せ
と言われているわけだ。俺も見直せと、そう思う。
基本的には、じゃなくて絶対にそうだよw
>>90 はプログラミングのセンスなさ過ぎる。
なんかオープンクローズドの原則ともちょっと違うか。 まあ、設計の見直しが必要ということには変わりない。
皆、最初は通る道じゃないか。 どこが悪いかだけ書けばいいのであって人格攻撃は問題だと思う。
>>96 それはない。
もちろん最初からダメな理由に言葉を与えることまではできないと思うが、
それなりに適性がある人間なら、グラフでいう枝がなるべく少なくなるような
コードを書いた方が理解しやすいことは最初から直感的にわかる。
最初からは分からないだろ普通。 例えばボタンコントロール。 押された時他のクラスのメソッドを呼び出したい と思っても何の不思議もない。 もちろん直接参照はできないからイベントを使うというように 閉じたままで実現する手法があるわけだが、 ボタンを押したときに他のクラスの処理が呼ばれるという 事実そのものに問題があるわけではない。 そりゃ元質問者がそういったところを理解できるようになるかは分からんが、 今の段階じゃ単に望ましい実現手法や考え方を知らないだけかもしれない。 .NETでのプログラミング歴がそれなりにあったうえでこの質問だと ちょっと怪しいけどな。
まあVBだと Form1.textBox1.Text = "ABC" みたいなとんでもないコードの方が普通なわけだが
100 :
デフォルトの名無しさん :2009/08/29(土) 18:19:46
パネルを9枚、ドックで敷き詰めているんだ。 けど、ある一つを最背面にしたら、めちゃくちゃになった。 これってzオーダーって言うんだよね。 皆さんはどうやって直してますか?
101 :
デフォルトの名無しさん :2009/08/29(土) 18:40:14
>>99 このコーディングのどこがだめなのですか?
短大卒の1年目です。
名前の 〜1 のとこじゃね? 意味ある名前つけるのがお作法だけど、 IDE の生成した名前のまま変えてないっていう。
なんだ、てっきりVBってインスタンス無しで記述できるのかと思ってたわw
YouTubeから指定した動画を avi or mpg 形式でダウンロードするにはどうすればよいですか?
VBにはデフォルトインスタンスという機能があって,どこでもForm1のインスタンスにアクセスできる。 テキストボックスを直接外から触ってるのも問題。カプセル化が全くできていない。
106 :
デフォルトの名無しさん :2009/08/29(土) 19:37:34
>>105 もっと分かりやすく説明してちょうだい!!
107 :
デフォルトの名無しさん :2009/08/29(土) 19:38:58
前に、デリケートに関する質問があったが、 結局デリケートは、サブルーチンを呼ぶサブルーチンを呼ぶサブルーチンを1オブジェクトのように見立てるようなもの?
デリケートに好きして
>結局デリケートは、サブルーチンを呼ぶサブルーチンを呼ぶサブルーチンを1オブジェクトのように見立てるようなもの? バグってる
110 :
デフォルトの名無しさん :2009/08/29(土) 20:05:35
俺は後輩に毎日、栄養ドリンクを買いに行かせている。 ・下痢気味のとき…ドラッグストアでアセロラエキス入りドリンク ・睡眠不足のとき…ローソンでユンケル1,000円クラス ・セサミンを飲んだあとのとき…ローソンでチオビタ こういう場合に、 「栄養ドリンクをどこかに買いに行かせる」 というデリゲートを組めば、有益ということか? で、パラメータとして、 睡眠不足とか下痢気味とかセサミンとかを与えるという感じ?
罹患してる
112 :
デフォルトの名無しさん :2009/08/29(土) 20:14:20
俺って病気持ち????????
セサミンを飲んだあとのとき…ローソンでチオビタ
これってどういうこと?
セサミンって危険なの??
>>92 自分で渡さないとたどれないんですね。メインフォームでUC1とUC2のインスタンスが作ってあるんで
メインフォームさえ取得できればと思ったんですが、それでもだめですか?そういう命令はありませんか?
この場合ユーザーコントロールの中の使いたいインスタンスはメインフォームに持って行ったとしても分離できてないのは変わらないと思うんですが、
もう一歩どうすればいいんですか
ただ単にコードを重複させたくないので他のUCのコードを使いまわしたいがために呼ぶんですが
UCGO
わかりません Class MainForm{ UC UCinst; MainForm(){ UCinst = this; } } Class UC{ MainForm mfinst; UC(){ mfinst = new MainForm(); } } 全然インテリセンスが通りません。連絡し合いたいですお願いします。
連絡し合いたいw おのろけでしょうか
俺はノンケだって構わないで食っちまう人間なんだぜ。
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; } }
UCinst = this; ってエラーになるだろ?
ありがとうございます! インテリセンスが通りました。後少しなんです。 UCに張り付けてあるテキストボックスをpublicにしてもUC.textbox が通りません最後にこれだけお願いします UC.Controls.でもテキストボックスがインテリに出てきません
122 :
デフォルトの名無しさん :2009/08/29(土) 21:36:16
あかん、デリゲートの意味がさっぱりわからへん。 c#をやりはじめてもう1か月経つのに。
あきらメロン
関数ポインタちゃうんけ?
>>121 インテリセンスが通らないじゃなくって、
ちゃんと実現方法を考え、理解した上でやった方が良いと思う。
じゃないと、会社入ってからロクな仕事まわって来ないぞ。
127 :
デフォルトの名無しさん :2009/08/29(土) 22:13:58
WROXを買ったけど、読むのが大変だわこりゃ。
>>125 ちらりと見た感じmyHttpWebResponseと同じ参照を返してるだけなんじゃないのかな。
HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
それならCloseはmyHttpWebResponseに対してすれば足りる。
例外処理だからGCに任せてるのだと思うけど、例外時の後片付けもしたいなら
finallyでmyHttpWebResponse.Close();を実行すべきなのだろう。
>>128 GetResponseで例外が出たらmyHttpWebResponseに値格納できないぜ
それはtrycatchの外に出してnullでも入れとけばいいだろ
131 :
デフォルトの名無しさん :2009/08/30(日) 00:30:49
プロジェクトA(継承元のコントロールを収納)に、ユーザーコントロールを作成し、 プロジェクトB(メインフォームを収納)でプロジェクトAのフォームを継承したフォームを作成しました。 プロジェクトA内に作成したユーザーコントロールは、 今まではプロジェクトを追加したただけで、デザイン画面の左側にユーザーコントロールのアイコンが表示されていたのですが、 新しいプロジェクトを追加しても表示されなくなりました。 参照設定は常にプロジェクトAを参照するようにしています。 なぜ、ユーザーコントロールが他プロジェクトでも使用できるようにならなくなったのでしょうか。 すみませんがよろしくお願いします。
ツールボックスのバグじゃなかった? リセットすれば直ったような気がしたけど。 若しくは手動で追加してやるか
DataTable と入出力先の XML ファイルについておしえてください。 通常、DataSet と併用して XML ファイルに複数レコードのデータを出力すると以下のようになります。 <NewDataSet> <Table01> <Item01>...</Item01> </Table01> <Table01> <Item01>...</Item01> </Table01> </NewDataSet> これをたとえば以下のようなファイルから、上記のようなファイルから読み取ったときと同様に DataTable に入力させることは可能でしょうか。 <NewDataSet> <Item01>...</Item01> <Item01>...</Item01> </NewDataSet> もともと下のようなファイルを一部に使用していたらしいのですが、プログラムを修正する際に 他のファイル(上の例)と同じように扱えるようにしたいと考えています。 すでに上のような書式に書き換えることは了解させたのですが、あまり変更を入れたくないようなので 可能なら下のようなファイルをそのまま上のような場合と同様に扱えないかと思っています。 ご教示いただけないでしょうか。よろしくお願いします。
134 :
133 :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をデザイナで開いたときにのみ
ユーザーコントロールがツールボックスに表示されるものの、
新規でプロジェクトを追加した直後のデザイナには
ユーザーコントロールが表示されません。
自分が関わっていながらこの差異に気付きませんでした。
どこの設定によって、ユーザーコントロールの自動表示がなされるのでしょうか。
だから(表示されなかったりすることがあるのは)バグじゃなかったのかな、 と言ってるんだけど・・・
137 :
デフォルトの名無しさん :2009/08/30(日) 02:39:45
>>136 できたりできなかったりするわけですね…。
会社で作ったときはできて、自宅でやったらできませんでした。
2008を買ったばかりだったのに…
(>_<)。
ありがとうございます。
テキストボックスにキーボードからではなくコードでエンターキーを入力するにはどうかけばいいですか?
SendKey
>>133-134 なんかの間違いとしか思えない。
<NewDataSet>
<Table01>
<Item01>...</Item01>
</Table01>
<Table01>
<Item01>...</Item01>
</Table01>
</NewDataSet>
だったはずだと思う・・・その<Item01>項目がどのDataRowに含まれているのか
特定できないから。それとも自力で順に読み込んでRowにまとめていたのか?
そして今回、どうやってTable01テーブルのDataRowにマッピングするつもりなのか?
全くTable01というノードが無くなっちゃってるよな。
こんなトコに聞きにくるということは、そこも分からないで省略したいとか言っている
としか見えない。分かってるなら、そのように読み込み処理を書くから。
>すでに上のような書式に書き換えることは了解させたのですが
無茶苦茶に嫌な予感が・・・がんばってな。南無南無
悪いことは言わないから、吐いた唾飲んで元通りにしとくほうがいいと思う。
あ、読み間違えていた。すまん、はやとちった。 自力で順に読み込んでRowにまとめるしか無いだろうね。XSLTでも無理くさい。 元のコードから、そのノード解析処理をコピってくるとか?
ただ、カラムが 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()));
>>142 ありがとうございます。(上ふたつも同じ人だよね?)
いまのコードは
>>141 に書かれているように自分で解析しているようです。
正直、いまはちゃんとは理解できていないですけど、参考にしてお勉強させていただきます。
>>138 ついで。
TextBox1.Text = "123\r\n456";
詳しくは C# テキストボックス 改行 でぐぐれ。
DataTableをソースにしたグリッドビューの中で文字列検索した後ヒットしたレコードの他のフィールドの値を取り出すにはどう書けばいいですか? クエリを調べても出来そうにないんですが、エクセルシートみないな操作はできないんですか?
ずいぶん口調変わるんだなw
素直にエクセル使ってろと
おねがいします。レコードが800万件あるんです。助けてください。
プログラムからブラウザ上のボタンとかを操作するプログラムを作っているのですが、 そのページ上に、通常のHTMLで作成されたtype=button では無く、 Flashで作成されたボタンがあった場合、 プログラムからそれをクリックする事は出来ますか?
業務なら然るべき所に有償で依頼してくれたまえ
ヒットしたなら、行番号は取れてるんだろ? 行と列を指定すれば、フィールドの値は取れる。 つーか、グリッド上でやるのはパフォーマンス悪すぎだろ。
DataGridViewはリフレクション使いまくりでクソ遅いからなあ
>>145 ん?
>>143 宛なら、そりゃ、教えていただいたときとその反対の時の口調が同じなわけないだろ。w
>>144 まで含めているなら、それは別人だ。
>>153 自分で試しもみないでなんだけど、DataGridView で実用になるのってレコード数何件くらいまでかな?
検索するたびにデータベースにアクセルするのはパフォーマンスが悪いと思ってDataTableに取り込んだ状態でその中で検索をかけたいんですがこれって
グリッドビュー通してることになるんですよね。
>>151 ヒットしてません。アダプターでクエリするとカレントレコードの位置をグリッドビューからみて行番号はとれるんですがこれはDataTable内でのカレント操作はできないんですか?
DataGridViewって件数が増えると極端にパフォーマンスが落ちね? 一度二次元配列に代入してから素直に検索掛けた方がいいよ
>>156 > DataTableに取り込んだ状態でその中で検索をかけたいんですがこれってグリッドビュー通してることに
ならない。
データとUIは別物。
つかグリッドビューってことはASP.NETでいいんだな?
> アダプターでクエリすると
アダプタってTableAdapterとかDataAdapterか?
なら凄い勢いでDBにクエリを投げてるじゃないか
>>152 マジっすか。。。残念。Flashウザイ
いちいち口調を変えるなんて、頭悪そうだなぁ、って思っただけだよ。
データグリッドはあくまで表示用なんだから、800万件も入れるのは正気の沙汰じゃない。
162 :
159 :2009/08/30(日) 14:28:04
Windowsアプリからブラウザ上のファイル選択(参照)ボタンをクリックし、 クリックをしてファイル選択ダイアログが立ち上がった後に スグに別の処理を行いたいんですけど、その起動したダイアログを 閉じない限り次の処理を行う事が出来ず困っています。 何か良い方法はありませんか?
マルチスレッドにしないと無理じゃない?
>>162 なんとなくだけど、HTML を操作するんじゃなくて、HTTP 通信に手を出した
方がいい気がしないでもない。
>>162 基本的には別スレッド起動だけど、
単に「立ち上がったその瞬間」軽い処理ができればよいのなら
Application.EnterThreadModalイベントが使える。
あと、モーダルダイアログ表示中でもタイマーのtickイベントは発生する。
>>162 同じ質問をあちこちに書くと嫌われるよ。
どーせ見てる人は被ってるんだし。
関係ないけど、dobonさんのところの掲示板のところの マルチポスト監視員はちょっと気持ちが悪いなw マルチポストする奴もたいがいロクな奴じゃないとは俺も思うが、 あれはマリチポストしてる奴よりよほど精神的に異常な奴に思える。
>>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#スレだった・・・ごめんなさい。マルチスレッドが解決したら落ちます。)
>>164 それはちょっと難易度があがりそうなので見送ります。
>>165 そんなイベントもあったのですね。知りませんでした。
とりあえずマルチスレッドにすればやりたい事が実現できそうなので今回は
こちらの方法で対処しようと思います。
それにしても今更だけど、プログラムって本当に面白いね^^;
面倒な作業を何でも自動化で来ちゃうところがナイスです。
>>166 ですね。気をつけます。
>>167 多分暇してる人だと思います。
>>168 ParameterizedThreadStart
171 :
163 :2009/08/30(日) 15:15:14
172 :
名無しさん@そうだ選挙に行こう :2009/08/30(日) 16:40:56
PanelとPanelとの間に境界線を引きたいと思っています。 BorderLineだと四辺全てに引かれてしまうので、 .NET3.5より新しく加わった、lineshapeを使おうと思いました。 けど、接戦を引いたパネル上に別のパネルを置いてしまうと、見えなくなってしまいます。 何かいい方法はないでしょうか。
173 :
名無しさん@そうだ選挙に行こう :2009/08/30(日) 16:54:59
>>172 あのコントロール、メニューストリップなどの上に描けないんだよね。
まだまだ不便だよ。
SplitContainerじゃだめなん? TableLayoutでもいけそうだけど
175 :
名無しさん@そうだ選挙に行こう :2009/08/30(日) 18:38:51
2つのpanelが接する辺だけに境界線を引きたいんです。 他の3辺はNONEでいきたいのですが、継承するしかないでしょうか。 Lineshapeが登場して喜んでいたのですが(+_+)。
OnPaint で直接描いちゃえば?
手っ取り早く見た目をなんとかするだけなら、細長いボタンを重ねるという手もある ドラッグイベントを自前で実装するのもそれほど大変じゃないはず
>>175 >>175 で言ってることと
>>172 は矛盾してない?
175の通りならLineShapeで何も問題ないように思えるが・・・
まあ、事ほど左様に言ってることがいまいち理解できないところがあるんで
トンチンカンなアドバイスかもしれんが、
■ A案
パネルCの中に、それを左右に(あるいは上下に)分割するような形で
パネルAとBを入れる。AとBの間には1〜2ドット分隙間をあけ、パネルCのBackColorを
境界線として利用する。
■ B案
2つのパネルのうちの片方パネルの、相手と接している辺にラベルをDockさせる。
LineShapeはあくまでVB向けのおまけだから…
>>178 俺も
>>172 の意味が分からん
自分でLineShapeの上に別のコントロールを置いて隠しているだけじゃないのか
こういう構成で
- Form1
- panel1
- panel2
- panel3
- lineShape1
panel2とpanel3のサイズが同じとかアホなことしているのではと疑いたくなる
エスパー多いなw
>>172 ,175意味不明すぎるw
馬鹿は黙ってろ
くやしそうwww
<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>.*?)\)"; と書いてみたんだけど、なんか違ってるっぽい。 教えてください。
不覚にもワロタ
VBで書こうがC#で書こうが.基本的に実行速度って変わらないんですか?
190 :
デフォルトの名無しさん :2009/08/31(月) 19:50:15
>>186 どんだけ妄想を働かしてるんだよ。1回マニュアルを読んだほうが良い。
string title = "(?<artist>.*?)/(?<title>.*?).*?(?\(<albumname>.*?\))"; ならOK?
一番ポピュラーで使いやすくて軽いHTMLパーサーを教えてください
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 は在りませんが 統計上では 詠み込み行が多く為り 速度も変わる様です
>>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行 でした…
>>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行
荒らしか。
>>199 全角でやれ、そして専ブラのリンク先で見る分には大丈夫だw
最後に、意味ないからこれ以上張るな。
150行が何意味するのかわからんし。 処理データ数ならせめて100行、10000行、1000000行の性能比較くらいしない と、ただのゴミ。データ量によって性能の特性が変わることはよくあるから。
ソースコードの行数じゃないの? 「読み込み行」とか言ってるのはワケワカだけど。
>>191 まずはその変数をtitleじゃなくてpatternにしないか
気持ち悪い
俺も
>>199 のデータがどう
>>189 に関係有るのか分からないけど、
>>189 は「基本的に」って書いてあるから答えとしては、「ほぼ変わらない」でFAでしょ。
ほぼ同じ中間コードが同一のCLRで走るんだし。
細かく見れば言語固有の実装があったりとかで、違ったりするかもしれないけどそこまでは知らにゃい。
というか、どちらにしようか迷ってる段階であの質問なんだとしたら、処理速度で選ぶのは間違ってると思います。
あ・・・でもVB.netってunsafeコード書けないんでしたっけ。
205 :
デフォルトの名無しさん :2009/08/31(月) 21:43:50
最近、スレで見たけどさ。 ラインシェイプは、パネルの境界線としては大して役に立たないのかよ。 Sp1は大した機能がないのか世。
馬鹿が自分じゃなくてハサミの方を馬鹿だと思い込むの巻、か
WinFormsはもう放置モードに入りましたから
1.0 の頃は、なんと VB の方が速かったという話。 コンパイラの出来がよかったんだって。 今となってはそんなこともないんだろうけどね。
VBは結構ヘルパー関数呼び出しが入るから普通に書いても若干遅くなることはある 想定されてるVBの用途を考えればほとんど無意味なコストなんだろうけど
this.FormBorderStyle = FormBorderStyle.None ; でウィンドウを枠を表示しないようにすると、ウィンドウ内をダブルクリックしてウィンドウが最大化します。 これを抑止するにはどうしたらよいですか?
string title = "(?<artist>.*?)/*(?<albumtitle>.*?).*?(?\(<albumcategory>.*?\))"; ならOK?
>>210 それだけなら最大化なんかしないはずだが
WndProcオーバーライドしてなんかやってないか
>>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と正規表現混ざってるんじゃね?
本気で解答得たいという姿勢を感じられん。
>>214 そういうのはOnMouseDownとOnMouseMoveでやるんじゃないの普通・・・
…。←うざい
・・・←もっとうざい
>>214 他でもいろいろやってそうだね。
問題の切り分けを自分で出来るようにならないと、
情報を小出しするとかいろいろ文句をつけられるぞっと。
>>214 WM_NCHITTESTでHTCAPTION返すようにするなら、
WM_SYSCOMMANDでWParamにSC_MAXIMIZEが含まれるときにIntPtr.Zeroを返すようにする処理を追加しないと
なんか落ちた犬を叩くようだが、
>>214 って典型的な「何でもMSのバグのせいにするタイプ」だね。
こんなの普通の神経してれば、人に質問する前にコード何も書かない素のフォームで
試して自分の仮説が本当に正しいのか実証するだろう。
俺には理解できん。真面目に精神病の一種か何かじゃないのこういう人。
↑いつもの人乙
>>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));
}
>>223 これって、イベントハンドラはどう割り当てるのですか?
お前には無理だから忘れろ。
イベントっていうのは勝手に起こるんじゃなくて イベントを定義しているクラスがイベントハンドラを実行するんだよ。 そのイベントハンドラを実行するメソッドを普通On[イベント名]メソッドで定義するのが作法。 public event EventHandler SomeEvent; //イベント定義 呼び出し側からハンドラを追加する。 protected void OnSomeEvent(EventArgs e) { if(SomeEvent != null) //ハンドラが追加されているかをチェック }
途中で勝手に書き込まれてしまった・・・ public event EventHandler SomeEvent; //イベント定義 呼び出し側からハンドラを追加する。 protected virtual void OnSomeEvent(EventArgs e) { if(SomeEvent != null) //ハンドラが追加されているかをチェック SomeEvent(this, e); } なので 同一クラスおよび、サブクラスでは イベントハンドラを追加しなくても Onメソッドをオーバーライドすればイベントハンドラを追加したのと同じことができる。 ただしスレッドは同一になるのでマルチスレッドデリゲートしたければ イベントハンドラ追加するかな。
228 :
227 :2009/09/01(火) 06:14:05
訂正:同一クラスではオーバーライドできないので Onメソッド内部に処理をかけばいいのだが、 そんなのは邪道なので Onメソッドを実行せずに直接やりたい処理をやらせる。 イベントを起こしたいのならOnメソッドも実行する。
internalインターフェイスにinternalメンバを定義したいんだけどコンパイルエラーになる publicにしたくないメンバだけ明示的実装するしかないの?
インターフェイスがインターナルならメンバをインターナルにする必要ないと思うんだが。 いずれにせよインターフェイスにはパブリックなメンバしか定義できないよ。
231 :
229 :2009/09/01(火) 11:24:23
そのinternalインターフェイスを実装するときに, internalとしてそのメンバを実装するとコンパイルエラーになってしまう publicメンバとして実装したら通るけどアセンブリ外から見えてしまう 明示的実装すれば実質internalになるけど,呼び出すときにいちいちインターフェイスにキャストするのが面倒
明示的実装はいまいち融通が利かんからねぇ まあこれぐらいで 多分どっかで最適化されて実行コストのロスはなくなるだろ internal interface ITest { void Test(); } public class Test : ITest { void ITest.Test() { } internal void Test() { ((ITest)this).Test(); } }
逆の方が良くない? これなら実装をvirtualやabstractにもできるし。 internal interface ITest { void Test(); } public class Test : ITest { void ITest.Test() { Test(); } internal void Test() { } }
string s; double d; s="this is "; s= s + d.ToString; これだと 演算子 '+' を 'string' と 'メソッド グループ' 型のオペランドに適用することはできません。 って怒られるんだけど、こういうときはどうしたらいいですか? StringBuilder使うのがいいですか?
あ、 d="1234"; が抜けてました
メソッド呼び出しには括弧つけろ
>d.ToString ToStringなんてプロパティねーよ メソッドならあるよ
は!そういうことですか!ありがとう
実は.ToStringは不要
定数に関する質問なんですが。 よくコレクション定数をプロパティで作ることがあるですが、 その定数が配列などのときにいちいちGet{for{list.Add(***):}}でループしながら定数を組んでいるためその変数を呼ぶごとにほんの少し時間をとります。 タイムカウントをとるとほんと微々たるものですが、私にとってはあまり気分のいいものではありません。 Getで指定する理由は、その定数には数十個とそれなりに大きなもので バージョンを上げるごとに変わることが予想されるためで、変更し易いようにということでこのようにしています。 一度アプリケーションが起動するときに一気にロードしてreadonlyにしていたこともあるのですが、個人的に気持ちいいものではありませんでした。 皆さんはこのような状況のとき、どのような対策を行っているのでしょうか?
気にしないように日々訓練しています
お前の気分なんてどうでもいいんだよ
int? myProperty; int MyProperty { get { if (myProperty == null) { /*値を計算してmyPropertyに代入*/ } return myProperty; } } こうやって最初に呼び出された時だけ計算するとか
クラスにアクセスするまで静的コンストラクタは起動されないので staticフィールドで済ませる事が多いな。 メモリを圧迫するような大きなデータだと、 プロパティアクセス時に生成してキャッシュしておくけど。
ところでコレクションや配列にreadonlyは無意味だぞ
>>243 ,244
やっぱり一発で書ける方法はないんですね・・・
変数生成やプロパティ呼び出しのときにconstが使えて、呼び出し後は変数として使えるなんて出来れば幸せになれるのですが、orz
人の意見を聞けてよかったです。
ありがとうございました。m(_ _)m
>>245 コンストラクタでの変更は故意にやらない限り弄られることはないかなっという
軽い気持ちで行っていますw
static readonly ReadOnlyCollection<Hoge> とか書くかな
キャッシュせずにgetで毎回コレクションや配列を作るのは禁止(MSDNにも明記されている) for (int i = 0; i < hoge.ConstValues.Length; i++) { x = hoge.ConstValues[i]; } とかされると死ぬから
datatableの内容を印刷するにはどうやったらできますか? 意外と難しい一般的なやりかたじゃないんですかねー?
DataTableの質問してるやつ死ねよ
やはり難しいのでしょうか?
お前には難しすぎる 諦めろ
標準では簡単なやり方はないな 自前で頑張って描画して印刷するしかない
サードパーティのライブラリ買うか,データだけCSVかなんかで吐いてExcelで印刷したら
仕事だか何だか知らんが毎回聞きに来るなよ ボランティアでも飽きるわ
な なるほど難しいですか
皆さんどうしたんですか
カルシュウム足りてませんよ
>>253 あい
>>254-255 そうですよねググッテQ&A読んでたら最終的にそういった結論でした
>>256 このスレの意義がなくなるでわないか!国民よ!!
WPF使えばわりと簡単に印刷できるよ 君には簡単じゃないだろうけど
ごめんごめんもう少し調べてみる
ちょっと安易すぎた
>>258 ありがとう
興味あるけどWPFはもっと腕をあげてからだな
ありがとうね
260 :
デフォルトの名無しさん :2009/09/01(火) 23:29:28
treeViewで指定したnodeを選択できますか? aspだと TreeNode.Selected = True TreeNode.Select() ようなのですが・・・・
ソースかけ
TreeViewの方にプロパティがある
263 :
デフォルトの名無しさん :2009/09/01(火) 23:55:38
TreeViewの方にありました!ありがとうございます。
264 :
259 :2009/09/02(水) 00:10:03
意外と簡単に出来ました datatbsuu.Rows[r]["hoe01"].ToString().PadRight(10) すいません マジググって分からなかったんで安易に聞いてしまいました すまぬ
それが印刷・・・? まあ解決したなら別にいいけど。
例えばピクチャーボックスに機能を追加したいだけの時、ユーザーコントロールだとピクチャーボックスの機能を すべて受け渡してやらないといけないんですが、単にピクチャーボックスの派生型から必要な機能だけを追加しても いいでしょうか? なにか不具合はありませんか? できればオリジナルのピクチャーボックス同様デザイナでも利用したいのですがツールボックスに登録して デザイナでレイアウトできますか?
別に問題はない
機能を追加するならユーザーコントロールにした方が分かりやすそう
そんなわけないでしょ。 ツラが変らないならカスタムコントロール(既存のコントロールからの派生)でいいし、 その方がずっとわかりやすい。 ユーザーコントロールってのは、当たり前だが複合コントロールを作るためのものだよ。
ピクチャボックスくらいならユーザーコントロールから派生してプロパティを橋渡ししてる暇があったら Controlから直接派生して自作できそうだ
機能を追加するコンポーネント作るってのもあり
272 :
デフォルトの名無しさん :2009/09/02(水) 21:30:17
起動が遅すぎます 何とかして下さい
新しいマシン買えよ。
アドビのソフトみたいにスタートアップにこっそり仕込んでおけばいいんだよ。 やりすぎるとOSそのものの起動が激遅になるけどねw
ジュネリックコレクション型の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("値が一致しました"); } }
>>275 すいません 現象は Containsが一致しないことです
>>276 pos1 == pos2が成立するようにする
具体的にはEqualsのオーバーライド
EqualsやGetHashCodeを実装するのはもちろんだけど, そういうデータは変更可能なクラスであってはいけない。 あとからメンバの値を変更できないような設計にするか, クラスではなく構造体にしないと整合性が保たれない。
>>276 文字通り Equalsのオーバーライドで求めているものができました
ありがとうございます。
>>278 アドバイスありがとうございます
List<T>.Containsの解説にEqualityComparer.Default使うって書いてあるんだから読めよな しかしこれもダックタイピングなのか
EqualityComparer<T>.Defaultは通常はObject.Equalsの結果を返すだけ。 だからオーバーライドしてあればそっちが呼ばれる。ダックタイピングではない。 EqualityComparer<T>.Defaultは面白いプロパティで,TがIEqualityComparer<T>を実装してたら Object.EqualsじゃなくてIEqualityComparer<T>.Equalsを使う実装に代わったりする。
面白いというよりトリッキーだな IEquatable<T>なら理解できるが
ContainsじゃなくてExistsを使うというのも一案
284 :
281 :2009/09/03(木) 13:14:35
>>282 間違えた
IEquatable<T>で正解
そういえばMSDNでコレクションクラスにIがつくものはプロパティとなっていて つかないものはクラスとなるけど、サンプルはその記述だけで他が一緒。 これはどういう使い分けをしたらいいの?
先頭にIが付くのはインターフェイスといいます。 わからないうちはクラスだけ使ってれば問題ありません。 非常に重要な概念ですがとてもこんなところで説明しきれるようなものではないので ちゃんと基礎から自分で勉強した方がいいです。
フェルマーおつ
インターフェイスという言葉も知らない奴に何を教えるんだよ オブジェクト指向や多態性について10レスくらい使って書けばいいの?
289 :
デフォルトの名無しさん :2009/09/03(木) 15:06:48
下記のようにlistという配列に追加してDataRowを追加しています。 list.Add(DataRow.ItemArray); それで、テンプレート側でlistの表示を行いたいのですが、 やり方がいまいちわかりません。 foreach等でまわすのはわかるのですが、どうやってまわすのですか?
以下をオブジェクト指向に則って書き換えるとするとどのようなコードになるますか? 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; } }
クラス分ける意味ないと思う
そんなんにオブジェクト指向もなにもない
インタフェースを使って、 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);
>>292 そうですよね。
昨日行った面接でホワイトボードにこれ出されて、
オブジェクト指向で書き換えるように言われたのですが。。。
上手く回答する事ができず、取りあえずinterfaceをくっ付けてみたのですが、
後学の為に、どうか書けば良かったのか知りたかったのです。
分かる方居ればご教授頂けると嬉しいです。
酷い面接だなw OOP脳っぽいw
296 :
293 :2009/09/03(木) 15:33:44
>>294 オブジェクト指向は関係なくて、Strategyパターンを知っているかが求められていたのでは?
>>293 ありがとうございます。ストラテジーパターンですね。
やはり、デザインパターンで回答するのがスマートでしたか。
イメージはありましたが、名前が出てきませんでした。
>>294 その可能性はありますね。ストラテジーパターンは知ってはいたのですが、
面接官の前でテンパってしまってInterfaceくっ付けるだけで、
その後の説明ではアワアワなってしまいました。
面接頑張ったね☆
質問です。 TabPageとそれに格納されているコントロールを複製して、 同じ挙動・レイアウトのTabPageを作成したいのですが、 どのような方法がありますか?
302 :
デフォルトの名無しさん :2009/09/03(木) 18:37:47
山田 優 A 山本 一太 B 山田 太郎 C テキストボックスで名前とアルファベットの間にタブを入れると 上のようになるんですが、メモ帳やテキストエディタにコピペすると きちんと等長になります テキストボックスコントロールでタブを等長にするにはどうすればいいですか?
303 :
302 :2009/09/03(木) 18:42:29
自己解。 フォントが非等長でした。 すんまそん。
等幅と言ってくれ寒気がする
プロポーショナル・非プロポーショナルという方が実際的な気がする
ああ、そうでしたね・・・ 細かいこと気にするなよ兄弟
>>301 やりたいことがよくわかんないんだけど。
ユーザコントロールにその「タブに格納されているコントロール」群を貼り付けて、
そのユーザコントロールをあちこちのタブページに貼り付けるんじゃダメなの?
308 :
デフォルトの名無しさん :2009/09/03(木) 22:45:25
質問です。 サブスレッドにてメインスレッドのListvViewコントロールから取得したListViewItem似たいし 処理を施してからメインスレッドのListViewに返したいと思っています。 Invokeする際にIndexを取得しておく方法を考えていますが、Itemを返すときに取得した位置に 間違いなく返す方法があれば教えてください。
仮想リストビュー便利よね
C#からネットの切断を行うことはできますか? コントロールパネルのネットワーク接続から「無効にする」を選択した状態を再現したいです。 アンセーフなものでも構わないのでご教授いただけませんか
313 :
301 :2009/09/03(木) 23:35:03
>>307 それでやりたいことはできそうです。
ありがとうございました。
マザーボードの種類がLGA1366よりLGA1156が圧倒的な速さで出回っているのは これからのCPUの割合がそうなっちゃうからなのか? メモコンとかで劣るのに。 まじで?
315 :
314 :2009/09/03(木) 23:43:48
Janeのタブが悪戯しました。 代わりに誤爆したことを謝ります。 m(´。。)mペコリー
おちゃめさんなJaneだなぁ
俺もJaneちゃんにいたずらされたいです。 誰かコーディングしてください!
318 :
308 :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){〜処理〜}
ListView.Itemsに含まれてるListViewItemは別スレッドで操作できないから 一旦ListView.Itemsから削除することになるけど 適当にListViewItemと元のIndexを持ったクラスでもやりとりすれば良いんじゃね 仮想リストビュー使った方が良いと思うけどね つか元の位置に戻したいとかよく分からん GetItemの返値捨ててるし
やはり
>>318 の言いたいことはさっぱり理解できんね。
恐らく本人も自分が何をしたのか、よく理解できてないんだろう。
いずれにせよ、自分を考えを整理できない人間が、かつ説明能力も欠如してると
最強の「日本語でおk」なフィーリング溢れる文章が出来上がる、と。
>>312 ありがとうございます。
devconというものを使えばできそうなのはわかったのですが
再配布禁止なようなので、できればAPIなどで実現したいです。
ドライバの無効化はどのように実現するものなのですか?
322 :
318 :2009/09/04(金) 01:04:09
>>319 なんも見ないでおおざっぱに書いただけなので細かい部分は勘弁してください
仮想モード調べてみたけどソートとかめんどくさそうで・・・
別スレッドで処理せにゃならんほど大量のListViewItemねぇ
324 :
312 :2009/09/04(金) 01:08:13
325 :
318 :2009/09/04(金) 01:25:10
>>319 今ListViewに実装してるソータークラスを改良したらなんとか行けそうな気がしてきたんで
仮想モードを使う方法とインデックス保持専用クラスをやりとりする方法を両方検討してみます
ありがとうございました。
326 :
314 :2009/09/04(金) 01:37:44
>>326 Janeのコテハン記憶にやられた。
かまって欲しいのか、そうなのか。
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(); } } } インデントは全角スペースです
よく読んでないけどとりあえずstaticは論外
334 :
デフォルトの名無しさん :2009/09/04(金) 10:31:50
ありがとうございます staticを外すと 静的でないフィールド、メソッド、またはプロパティ 'ResponseCallback(System.IAsyncResult)' で、オブジェクト参照が必要です。 と言われますた。
そう良かったね。
ざまぁね〜な
まだstatic残してるだろ
解答する気もないのに煽る糞がまた増えてきたな
自己紹介お疲れ様です。
340 :
デフォルトの名無しさん :2009/09/04(金) 11:55:46
>>337 天才!
無事コンパイルは通りました。ありがとうございました。
ただ、これをこまま実装した場合、メソッド呼び出しが連続したときなどの対処を考える必要があると思うのですが
連続した場合は動いているスレッドを破毀したい場合どのように改良していくべきでしょうか?
ロードマップだけでもお示しください。何とぞ。
ReadCallbackは非同期で呼び出されるんじゃないの? その中でコントロールを触るにはControl.Invokeが必要
342 :
310 :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 とりあえず動作確認まで完了できました
ありがとうございました
346 :
デフォルトの名無しさん :2009/09/04(金) 22:35:46
>>329 でございます。
動作確認が取れたところでちょっとハードに重複してスレッドを呼び出してみました。
そうすると、閉じたストリームに書き込もうとしてるぞエラーが出ました。
場当たり的にあちこちlockを使ってみましたがダメでした。
イベントハンドラがメソッドAを呼び出す。
メソッドAがメソッドBをマルチスレッドで呼び出す。
メソッドBはメソッドCをマルチスレッドで呼び出す。
メソッドCは自分の仕事が完了したかどうかチェックしてまだならメソッドCを呼び出す。
完了していたらControl.Invokeを呼び出す。
イベントはスレッド完了を待たずにどんどん発生します。
メソッドBを呼び出された順番で1つづつ実行したいのですが、BeginInvokeでいいでしょうか?
ヒントをひとつよろしくお願いします。
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 ありがとうございます。以前はリストを保存してタイマーでスレッドをチェックしてスレッドが走ってなかったらリストをひとつ消化
という仕組みにしてましたが、今回はイベントがタイマーより早く発生しそうでどうするか迷ってました。
かなり操作を早くしないとこのエラーはでないし、そこまで操作が早くなるとキューやリストを消化できない弊害がでそうなので
ストリームの状態を確認してエラーが出たら保存作業をスキップさせるように変更します。
経験に基づいた判断はサンプルコードでは得られないものですね。
ありがとうございました。
351 :
デフォルトの名無しさん :2009/09/05(土) 05:33:46
ラジオボタンで、個人と法人のいずれかを選択させ、 個人の場合は、個人の姓名などの情報、 法人の場合は、会社名や代表者などの情報を入れてもらうように パネルを切り替えています。 しかし、どちらが前面にあっても、タブオーダーは背面のコントロールにまで飛んでいるようです。 これを、背面に隠れている側のパネルのコントロールにタブが飛ばないようにするには どうする方法が効率的でしょうか。 イベント発生ごとに、各コントロールのタブストップのTRUE FALSE を 1つずつ記述するしか方法はないでしょうか。 よろしくお願いします。
個人の場合のパネルも法人の場合のパネルもフォームに貼り付けられてるのか? 選択された方のパネルだけ貼り付ければもう片方にフォーカスが移るはずがないんだが。
背面に隠したパネルのVisibleかEnabledをfalseにすればいい
隠れている側のPanel.Enabledをfalseにすればいい気もするけど試さずに書き込み。
355 :
デフォルトの名無しさん :2009/09/05(土) 09:50:40
初歩的な質問ですみません ふだんVBでコーディングしているんですが、今回C#を書いています そしたら、インテリセンスが不親切です メソッドを選択しても()がつかない メソッドの引数候補の情報が出ない 文法エラーが出て修正してもアンダーラインが消えない こういうものですか?C#って
それはC#じゃなくてVSが糞って言いたいんじゃないの? 引数候補の情報や文法エラーは正しく書いていないだけだし。
>メソッドを選択しても()がつかない これは本当に好みの問題。嫌いな人もいる。 >メソッドの引数候補の情報が出ない 出る。 >文法エラーが出て修正してもアンダーラインが消えない 消える。
インテリセンスでメソッドを決定するときには, 目的のメソッドが選択された時点でいきなり ( を入力するのがおすすめ。
359 :
デフォルトの名無しさん :2009/09/05(土) 10:05:45
>>351 氏の質問を見て、私も質問をさせていただきたいのですが…。
私は縦横にパネルを6枚ほど敷き詰めて、
それぞれに、約10ずつのコントロールを置いており、
タブオーダーを約50まで設定していますが、
間に項目が追加になりそうなんです。
その場合、追加したコントロール以降のタブオーダーを全てプロパティ画面で手で直さなくてはならないのでしょうか。
表示⇒タブオーダーの画面だと、コントロールが密集しているのでうまくクリックできない状態です。
よろしくお願いします。
VBが自動的にブロックや括弧を閉じてくれるのって,VBはEnd Ifとか綴りが多くて面倒だからなんだよね
C系の言語の場合はあまり変わらないので不要。ちゃんとリアルタイムにエラーが表示されるから閉じ忘れも起こらない。
>>359 もうデザイナ使わずにコードでコントロールを作るようにしたら?
はい。
362 :
デフォルトの名無しさん :2009/09/05(土) 10:26:02
>>356 いやーそういうつもりはないんですが
>>357 なるほど 好き嫌いや慣れの部分はしかたないですね
>>メソッドの引数候補の情報が出ない
>出る。
>>文法エラーが出て修正してもアンダーラインが消えない
>消える。
もうちょっと悩んでみます・・・
>>358 なるほど!そうさせていただきます
>>360 なるほど・・・
文法エラーが消えないのはなぜなんでしょうかねえ
インストールの時の言語選択が原因ですかね?
はっきり言ってVBの方がIDEの補助弱いぜ。 使ってりゃあれって思うこと多い。 リファクタ機能も使えないし、 ツールチップ表示でフルクラス名出ないし、 自作ライブラリのコメント出ないし、 型が色分け表示されないし、 オーバーライドしたいときにoverrideって打って対象メソッド選択とか出来ないし、 こんな感じでイライラする。
あと、構文補完も弱かった気がする。
>>363 本当にVB(2005以降)の使ったことある?
嘘はいかんと思うよ。
まあVBのIDEの方が遅れてる面が大きいのは事実だが、
リアルタイムのエラー警告だけはVBの方が精度が高いね。
C#みたいにビルドして初めて警告が発せられる・・・ってことがVBにはない。
あと個人的にはメソッドの区切り線の表示機能もC#にあってもいいと思う。
で、どれが嘘?
VBのコードスニペットだけは使いにくすぎる なんでC#と同じようにしないんだろう
リファクタリング機能があるのならStandard以上のグレードのVSを 持ってるんだろうから試せばわかると思うよ。
>>365 >ビルドして初めて
ん?うちのVS2005stdのC#は入力すると即座にエラー一覧に出るんだが。
何か設定か、CPUの能力から自動判断とかじゃないか?
staticクラスに宣言されたインスタンスメンバとか internalクラスをpublicクラスのpublicメンバで公開するとか そういうのはビルド時までエラーが出ない
おお、確かに。文法的に判断もできそうなのに。 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の各パネルのキャプチャーを取得し、各々をやや縮小して別のフォームに横並びに貼り付けて、画面に一覧表示させることは可能でしょうか。 よろしくお願いいたします。
はい
ものすごく初歩的な質問で申し訳ないんですが 仮にFormを画面左上に移動する関数MoveForm()を作ったとして あとで、移動先を自由に決めたい、MoveForm(int x, int y)みたいなのが欲しいなーって思ったとします それでこのとき、引数無しのMoveFormと有りのMoveFormの差は、移動先が決め打ちかどうかの違いしかなかったとします こういう時は、どういう風に書けばいいのですか? 例えば、MoveForm(int x, int y)という風にオーバーロード?して、その中に引数無しの時との「違い」だけを書くということことがしたいです。
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
>>377 質問に答えているだけだろ。大人げないとは思うがw
質問する方も素直に、判らないのでどうすればいいか教えて下さいって書けよ。
たぶん怒ってはない。
質問に「リテラルに」答えてるだけだと思うよ。
それは
>>373 がただ意地悪な人間なだけかのか、それとも他のになにか原因もあるのかは
よく考えたほうがいいと思うな。
>>375 なるほどー!
引数無しの方をなんというか「オリジナル」みたいに考えていたので
これにどう「付け足すか」っていう風にしか考えることができてなかったです
続けて質問して申し訳ないんですが
オーバーロードの使い方ってどんな風に使うんですか?
OnPaintとかをオーバーロードしてるのは本にあったのですが
自分で作るときにうまく当てはめることができないです。
381 :
デフォルトの名無しさん :2009/09/05(土) 14:51:37
>>373 教えていただけないでしょうか。
dobonさんのページにキャプチャー機能があるとは書いていましたが、縮小拡大が分かりません。
オーバーロード? オーバライドじゃなくて?
あ、ごめんなさい、オーバーライドです
>>381 そのキャプチャー機能とやらがどういう風なのか知らないし
やりたいこともいまいち意味がわからんが…
画像の拡大縮小はちょっと調べたら出てくるよ
一番簡単なのはDrawImageにそのまま希望するサイズを書くことかな。
// ここまでに何かしらしてGraphics GとBitmap bmpを取得しているとする...
G.DrawImage(bmp, 0, 0, 800, 600);
bmp.Save("hoge.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
書き忘れたけどGを800*600としてhoge.bmpに保存してる 別フォームのPictureBoxとかに貼り付けるなら最後に連結したbitmapをそのまま送り込めばいいんじゃない? つーか悪いこと言わんから他の方法考えろよ
手間の割りにあまり有り難味の無い機能だと思う
いつまでたってもオブジェクト指向で作れねぇ… ゲームとかならともかくふつうのアプリ作ってる時にうまくオブジェクトとして切り分けできん 個人で極々規模の小さいものしか作ってないから「動くからいいか」ってなってるのも悪いって自覚はしてるんだがな…
別に悪く無いだろ
389 :
デフォルトの名無しさん :2009/09/05(土) 20:53:29
フォームにA、Bの2枚のパネルを並べてそれを継承し、 新しいフォームを作成しました。 継承先でパネルAにコントロールやデータグリッドビューをたくさん配置したのですが 継承元のフォームでパネルAを削除してリビルドしました。 継承先のフォームからパネルAの箇所がごっそり消えていたので安心していましたが、 パネルAに置いていたコントロールがどうも残っているようです。 これは、やり直した方がいいでしょうか。
知らんがなそんなこと。
そういうのは継承を使わない方がいい フォーム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枚のパネルやフォームで表示させたいと思ったんです。
けど…文字が小さくなりますもんね。
皆さんはどのような工夫をされているのでしょうか。
>>394 なんか数週間前から同じ質問を何度もずっとしてるようだけど、
同じところで何度聞いても同じだと思うよ。
っていうか、どこで聞いても恐らく同じこと。
やろうとしてることに無理があるんだから。
もうHTMLでも吐いてブラウザ丸投げでいいよ
>>394 入力をいくつかのモーダルフォームに分けて順次入力させれば良いんじゃないの?
あとはそのモーダルフォームが隠れないようにすれば。
キー操作でさくさく、ページ切り替えみたいに全部みれればいいんでない。
じゃタブコントロールを使えと言う事で
400 :
デフォルトの名無しさん :2009/09/05(土) 21:56:28
画面に入りきらないほど内容が多いみたいだけど、 全てのモーダルが隠れないようにできるの? やや重ねたらいいのかな。
401 :
デフォルトの名無しさん :2009/09/05(土) 21:58:24
>>393 ですが、どなたかご経験者の方、
教えていただけないでしょうか。
自分も、
>>389 と同じで、
実態のないコントロールが残っていて悩んでいます。
(-_-;)。
どのみちそんな設計を根底からぶっ壊すようなことしちゃったら作り直しだろ
継承元のフォーム上のコンテナ(パネル)は、デザイナからは
「見えない」仕様なんだろう。
アクセス修飾がprivateの場合との整合性をとるためか、ただ実装が
面倒だからかは知らないが。
いずれにせよ、普通は
>>391 の指摘どおりにするよ。
404 :
デフォルトの名無しさん :2009/09/05(土) 22:13:58
>>397 モーダルフォームの表示時は大きめに表示させて、
入力が終われば小さく縮小してパネルの片隅に納めたらいいんじゃないか?
けどそれじゃ、
>>394 がやろうとしていたことと同じか。
できるかどうかも分からないのに書いてしまったが。
405 :
デフォルトの名無しさん :2009/09/05(土) 22:18:49
1画面に納めようとすることはできそうだけどさ。 無理して、多くの項目を1画面に圧縮したところで、 ユーザーが読むことができるのか? 若者だけが使うのならいいかもしれないけど、 高齢者も利用するのなら、文字が小さいことが逆にストレスになると思うよ。 うーん、どうすればいいんだろう。
>>394 仕様がわからないから見当違いかも知れないけど。
・入力フォームとは別に入力済みのデータの一覧か、出力帳票のイメージを表示するフォームを用意して、
両方を同時に見れる&操作できるようにする
-> 別のフォームは可変サイズでスクロールバーを用意するか
縮尺率を自由設定(画面に収まるように自動調整機能あり)出来るようにする
・入力フォームに折り畳み機能を付ける
-> 秀丸エディタみたいに画面左側に + とか - みたいなボタン?を用意して、ブロックごとに
表示したり消したりユーザの自由に出来るようにする
・入力データの属性を分類して、分類ごとに入力画面をまとめる
まとめたらタブコントロールを利用する
たいていは3つめを使う。
>>394 あんまり綺麗なやり方じゃないけど1枚辺り1フォームで数個のフォームを同時起動するとかは?
画面から契約書が消えることがダメなら
>>398 が言うみたいにキー操作で画面切り替えしていくのもダメな訳?
408 :
デフォルトの名無しさん :2009/09/05(土) 22:47:39
はじめまして。 ブラウザ上のテキストボックスに文字を入力させたいです。 書き込む文字云々はできてますが、肝心のそこがわかりません。 テキストファイルに書き込むとかなら方法わかるのですが… どのようにして、ブラウザ上のテキストボックスを判定して どうやって書き込めばいいのでしょうか。。。 なんでもいいです、ヒントをください。
>>406 自分なら、折り畳み方式となる 2 番目を選ぶ。
動作は jQuery のアコーディオンや、WPF の Expander 的にする。
実装に際しては、全体の折り畳み状態のワンタッチ切り替えも付ける。
画面遷移方式の場合、入力不足などを提示するのが難しいし、画面に
よってコントロール数が偏りやすい点がイマイチかな。
一方ロシアは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番目もユーザー寄りのいい設計になるかと思う。
全項目を網羅した単票を用意して画面右側にプレビューさせる。
プレビューの文字が小さすぎなければいいけど…。
作るのは…超めんどくさいな。
>>411 1行目で書いたのは前者で2行目は後者のイメージかな
WPFでウィンドウ位置を設定するには、 Window windowlocation = new Window(); windowlocation.WindowStartupLocation = WindowStartupLocation.Manual; windowlocation.Left = 700; のほかになにが不足してますか?
AcrobatReaderとかPowerPointとかOOo Impressみたいにプレビューペインと ドキュメントペイン作って中でスクロールさせちゃえよ。 PDFとかプレゼンテーションツールみたいに操作します。って言えばいい。 既存のUIの方がわかりやすいと思うんだよなぁ。
>>414 Leftの他にTopも必要じゃないの?
WPF知らんけど
知らないなら黙っててくれませんか?
不足してない
バージョン特定してないのにどれがどうとかないだろ コメントは2008から表示されてるとか2010の評価版は型の色分けされてるとか ツールチップのフルクラス名についてはたぶん勘違いだと思う あとoverrideはOverridesと間違えてないか
421 :
デフォルトの名無しさん :2009/09/06(日) 03:05:28
>>417 書いてくれた相手に失礼だ。
憶測も立派な意見。
大抵は憶測から新しい発見がある。
422 :
デフォルトの名無しさん :2009/09/06(日) 04:21:03
>>394 のいうイメージでやってみた。
確かに画像はキャプチャーされるし拡大縮小のロジックもあったけど、
もし画面やコントロールのキャプチャーをとり、縮小表示させた。いのであれば要注意だ。
画像を縮小したら文字がつぶれてしまうぞ。
例えば文字フォント9ポイントの入力フォームを作成し、それの縮小番も見たら、画像がぼやけていた。
そもそも
>>394 は別の方法を模索しているでしょ。
TextWriterに書き出された内容を文字列として受け取りたいのですが、 どうすれば良いでしょうか。ToString()等では取れませんでした。 いったんMemoryStreamに吐き出してから ReaderでRead()することで動作は実現しましたが…。
それでいいよ
StringWriterも知らんのか
427 :
デフォルトの名無しさん :2009/09/06(日) 06:23:25
>>423 そうなんだけど…
画像キャプチャーしてサムネイルみたいに縮小させる表示は俺も覚えておこうと思っていた。
結局は、縮小は特に画像が劣化してしまうね。bmp90%でもかなり汚くなった。
きれいになんかできないよね。
…カクン。
アルゴリズムを指定して拡大縮小する方法があるだろ。
でその拡大縮小を
>>394 は本当にほしがっているのかと。
木とブランコの絵思い出したわ。
430 :
デフォルトの名無しさん :2009/09/06(日) 08:38:13
>>428 概要を…教えてもらえませんか?
今、ネットで探したけど見つかりませんでした。
431 :
デフォルトの名無しさん :2009/09/06(日) 08:41:43
>>429 見映えが良いなら、採用したいんじゃないか?
裏に隠れた項目も含めて、一覧で全項目を画面表示できたら壮快だし。
僅かながらのサプライズもあるだろう。
彼はそのサプライズを求めているのだろうけど、気持ちは分かる。
WPFならベクトルだから綺麗に縮小できる・・かな?
>>420 バージョン特定ったって、2010はないだろ。
今VBで確認してみたが、
ツールチップでフルクラス名は表示されない。
リファクタ機能はない(少なくとも標準の機能では)。
自作ライブラリのコメント表示は2008からはできるようになってるな(2005ではできなかった、もしくは制限があった)。
クラスの色分けはされない。
Overridesは2008ではできるようになってるな(2005ではできなかったと思うが)。
5つのうち3つは2008でもそのままで2005では多分全部正しかったと思うがなんで >本当にVB(2005以降)の使ったことある? >嘘はいかんと思うよ。 こうなるのか不思議だよ。
まあWPF向きではあるな 字が小さいなら拡大鏡みたいな機能を付けるのも簡単
>>434 リファクタ機能は2005からある(C#に比べて貧弱だが)
まあ、Refactor!っていうフリーで使えるアドインも一応あるし。
オーバライドの入力支援も、少なくとも2003からある。
ただし2003の時代はエディタ上部のドロップダウンから選択する方式だったが。
>>435 あんた不思議な思考回路してるな。
これが俗に言う「幸せ回路」って奴かな。
最近流行り(?)の「新型うつ」っていうのはこういう思考回路の人がかかる病気なんだろうな恐らく。
VBのリファクタ機能って名前変更だけで他は全部使えないだろ? アドインで追加するのは今の話と違うんじゃないの? オーバーライドだけは勘違いだったみたいだが。 で、それでも事実上4つは正しいのに幸せ回路とか お前ちょっとおかしいんじゃないか? 5つの内4つは正しいのに、嘘書くな、使ったことないだろって書く方が正常なわけ? まともに言い返せないから意味不明な人格攻撃を始めるやつの方がまともとは思えんね。
ぶっちゃけ何の原語で書こうとも、どんな文法で書こうとも 自動化できて早ければいいじゃん 人間様がそれで楽できれば
>>438 「幸せ回路クン」って何でも自分に都合がいいように解釈するから
議論が成り立たないのがよくわかったよ。
都合がいいって… リファクタ機能が名前変更だけはできるってのはわざわざ書かなかっただけ。 名前変更できるだけではリファクタ機能があるとは言えんだろう普通。 つか元々C#で使える他のリファクタ機能が使えないことをさして言ったんだ。 ちょっと言葉足らずだったとは思うが普通意図は通じるだろう。 オーバーライドだけは勘違い。 君はこの2つを指して嘘とか使ったことないだろとか都合がいいなんて言ってるの? まあもう言っても無駄なタイプだと思うけど。
>>439 でもさ、自動化できて早くなったとしても肝心の人間の中身が
つまらんことで言い合ってスレを消費するような阿呆だったら変わりないよな。
ライブラリ探しても大して変わらんと思うけど。
まあそれはそうかもしれんけどさw だから”本気でやりたいなら”って書いたじゃん
いや、画像の拡大という特性上、本気でやったところで出来ることは限られてるわけで、 標準の機能だけでもほとんどその上限レベルだから、 良くしようがないんじゃないかって話。
大して変わらないのに、ライブラリ探せ? 何言ってんの?
それはその通りだね。だけど今回は縮小だからなんか凄い人が凄い方法でやってないかなーって思っただけ まったく調べてもないし妄言だと思ってください。
おっと縮小ならまだやりようはあるか。 まあ期待される結果になるかは別問題ではあるけど。
どうでもいいよ
つまり結論としてデカい液晶を使えってことですね
拡大機能付ければよくね
>>452 ソース画像は持ってるもんな。
でも全体が潰れてる訳だから全部拡大鏡で見なきゃいけないからそれが優しいGUIかどうかは…。
ジェネリックスで生成したtabPageをpublicにしたいのですが どう宣言すればよいのでしょうか?
日本語でおk C#でもおk
456 :
デフォルトの名無しさん :2009/09/06(日) 18:14:02
ラインシェイプが増えましたが、 DOCKはないんですか? せっかく楽にきれいな罫線が引けると思ったのに。 パネルもテキストボックスもラベルも、ボーダーラインは黒か3Dしかないしさ。 寂しくて辛くて飲まずにはいられません。
ラインシェイプって何?
プログラミング素人です 以下のような機能をもつニコニコ動画やYoutubeを観るための 専用ブラウザを作ろうとしています 【機能】 ニコ動上で検索結果一覧からある動画を選んだ際、 その動画に含まれる映像シーンと同じシーンを含む動画を 検索結果の一覧に含まれる動画を探索して取得 言語はC#です。調べた限りではおそらく以下のような流れになると 考えているのですがもっと良い方法はあるでしょうか? 1..動画を選択した際にニコ動のAPIにアクセス→FLV取得 2.FLVをaviに変換(この辺自信ありません) 3.シーンに分割 4.検索結果内の動画を取得し,同様にシーンに分割 5.選択した動画におけるシーンと総当たりで比較 画像解析にはOpenCVというライブラリが良いということを聞いたので それを使おうと思っています。宜しくお願いします。
ということは、一度すべての動画をローカルに引っ張ってくるって事? はた迷惑なソフトだな
まぁ、基本的に無理って考えた方がいいな。
>>458 何に使うためにそんなことするの?
かなりの高スペPCでも処理時間半端じゃないと思うんだが。
>>461 P2P感覚で動画を地引きしたいんだろ。
463 :
デフォルトの名無しさん :2009/09/06(日) 18:40:04
>>457 3.5のsp1からついてる線引きコントロールさ。
ドックがなきゃ、危なくて使えねえよ。
>>459 〜
>>462 目的は卒業研究です
上記ではブラウザと書きましたが特にブラウザにこだわる必要はなく
入力として一つの動画が与えられた時に、それと同一シーンを含む
動画を抽出するシステムがあれば問題ないです
C#しか使ったことがないので、クライアントサイドのアプリケーションしか
思い浮かびませんでした
何か良い方法はありますでしょうか?
卒研っていつから自分で考えずに他人任せで良くなったんだ? 吐きそうになるわ。
466 :
デフォルトの名無しさん :2009/09/06(日) 18:56:06
プログラミングは手段でしかないんだから別に質問していいだろ
その手段を考えるのが研究じゃないのか
>>464 そのOpenCVがどういうライブラリかも知らんけど
もっと他のアプリ作る訳にはいかんわけ?
たぶんアクセスし過ぎで運営から弾かれると思うけど とりあえず458の方法で作ってみればいいじゃん なんでプロトタイプスラ作らないで質問しに来るわけ
動画関係の研究室なら実験用の動画があるだろ それを使えよ
この場合、手段の研究だもんな。
研究なんて大仰なもんじゃなく卒業工作だろこれはwww
473 :
デフォルトの名無しさん :2009/09/06(日) 19:04:27
いえ理論重視の研究です 上記の力技でもやれんことはないことは分かってるけど 早く出来る方法があれば知りたかっただけ あんがと
474 :
デフォルトの名無しさん :2009/09/06(日) 19:05:14
テキストボックスに、 「あいうえお」と入れて、別のラベルにも表示させたいのですが、 「あ」「い」など、1文字単位で確定したときに、ラベルに反映させる方法はありますか? もしあれば教えてください。 よろしくお願いします。
理論なんか出てきたか?
>>474 TextBoxにTextChangedとかいうイベントがある
研究(笑)
>>474 変換確定前にそういう事をしたいとエスパーすると
Imm〜
系のWinAPIを使うしかないんじゃね
>>476 社会学系の文系院で
理論検証にプログラムが少し要るってことです
まず大学名をいえ
いいよ言わなくてw
Bランの私大です
違うアプローチを考えたほうが良さそうな気がするけどな…
社会学(笑)
>>464 幼稚な煽りは気にすることはないと思うが、
少なくとも今のPCの性能じゃ無理。
恐らく10年後のハイエンドPCでも無理な仕様だと思う。
まあこのキーワードでググれば卒業研究から実名がばれることも想像できない程度だからな。 下手に卒研なんて出すのが阿呆。
ふーんしょうもない煽りしかできないお前さんはアホじゃないって言うんだw これが2ch脳かね。人間として終わってるだろ。
>>486 ですよね・・・・。
なんとか別の手段を考えてみます・・。
手段だの何だのはどうでもいいけどさ サーバに迷惑だけはかけるな
>>489 まともな回答が来ないのはお前の質問の仕方が…
と言おうと思ったが言う前に低脳がいっぱい沸いてたわ
答えにくいなら答えなくてもいいが理論の検証には何が必要なんだ?
もしくは、どういう理論を証明したいんだ?
あの方法でやらなくてもいいんだとして最低限これは必要ってのはないのか?
そのへん言うと特定特定いう馬鹿が出てくるからごめんなさい 回答してくれた方ありがとうございました
だろうな。 まあ、それがわからんことにはこっちも他の方法を考えることができんし 自分でなんか他の方法考えついたらまた聞きに来たら?
じゃあ最初から質問するなよ!
最初から最後まで最悪な奴だったな。
497 :
デフォルトの名無しさん :2009/09/06(日) 19:51:50
2ch脳は黙っとけや
2ch脳なんて煽り言葉を使う人こそ、2ch脳と呼ばれるに相応しいと思う。 自己紹介してるようにしか見えんな
どうでもいいよ 休みがあと少しだからって興奮すんなよ
500 :
デフォルトの名無しさん :2009/09/06(日) 20:28:52
初歩的な質問です クラスA メソッドA メソッドA’ メソッドB メソッドB’ プロパティX のように、プロパティXの値によってメソッドAかメソッドA’ メソッドBかメソッドB’のどちらかが呼び出されます でも呼び出し側はそれを意識したくありません 将来的に分岐はこれ以上増えません あくまで2つのうちどちらかに分岐します こんなときはどんなパターンを使えばいいでしょうか? 一つのメソッドの中でifで分岐しちゃうのが一番楽ですか? ちなみにメソッドはこの先増える可能性があります
あれか、そろそろ荒らしに反応する人も荒らしって書けばいいのかな
Factory パターン
504 :
デフォルトの名無しさん :2009/09/06(日) 20:43:28
>>500 です
すみません。重要なことですが、状態は(分岐条件は)アプリケーション実行中に変化します。
別に重要じゃない件
Factoryパターンだと途中で変わるのには相性が悪いね
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は使ったことあったんですが、工夫すれば使えますがなんか遠回りしてる気がしたんで・・・ありがとうございます
分岐が常に2パターンで、増えるメソッドの方は分岐しない
→そのまま
分岐が常に2パターンで、増えるメソッドの方も常に2パターン分岐する
→
>>502
510 :
デフォルトの名無しさん :2009/09/06(日) 21:05:19
>>509 ありがとうございます 解説読んでてStateパターンがよさそうと思いました
とりあえず試してみます。ありがとうございました。
>>507 こういうのは自分で考えた方がためになるよ?
動作確認はしてないし、この方法だとたぶん制約があるから、確認はちゃんとしてね。
System.String ok = "0123456789."
e.Handled = ( 0x20 <= e.KeyChar ) && ( 0 > ok.IndexOf( e.KeyChar ) );
普通にArray.Containsでいいような・・・ ちなみに、BSかDELのどちらか(確かBSの方だったと思うけど・・・)は KeyDownの方でないと弾けない。
>>511 ありがとうございます。参考にさせて頂きます。
いや、だからそんな間抜けな方法じゃなくて普通にArray.Contains使おうよ。
515 :
デフォルトの名無しさん :2009/09/07(月) 00:23:47
ペンでラベルの四隅にオレンジ の枠線を描こうとしたら、2辺しか描かれません。 0 0 ワイズ 0 0 0 0 ハイト 0 ハイト ワイズ ハイト ワイズ 0 ワイズ ハイト と記載しました。 下の2つが無視されているようです。 なぜでしょうか。
何言語だよ
>>515 今年は(10年区切りで)2000年代最後の年なわけだけど、2010年ではない。
この意味わかる?
っていういか、こういう算数レベルのことが直感的にわからない人は
プログラマ向いてないよマジで。
うるせえばーか
範囲外への描画は無視されるんじゃないか wiseが意味不明だけど
ハイトワイズわろた
"height","width"と読め
いや俺ネイティブだから要らんわ
Linuxのカタカナ表記は何だって話になる
ワイズってのは新しいなしかしw 大昔ヤマハのPCでそんな名前のがあったような
Enumerableってどうよむんですか
527 :
424 :2009/09/07(月) 01:21:36
>>425 ,426
StringWriterでそのまま取れました。お恥ずかしい限りです。
ありがとうございました。
気にするな 恥ずかしいことじゃない 俺も知らんかったからな
ワイズか、懐かしい 30年前、BASIC始めたとき俺もそう呼んでいたな WIDTH 80,25
532 :
デフォルトの名無しさん :2009/09/07(月) 06:42:34
>>521 ヘイト?
ワイス?
何て読むのが通常なの?
533 :
デフォルトの名無しさん :2009/09/07(月) 06:45:13
>>519 彼の指定は範囲外になるの?
一見、範囲内の境界座標を指定しているように見えるが…。
534 :
デフォルトの名無しさん :2009/09/07(月) 06:46:10
>>533 (0, 0) (width-1, 0)
┌────────┐
└────────┘
(0, height-1) (width-1, height-1)
背景画像を表示できるテキストエディタを作りたいのですが、TextBoxではできませんよね? 方法あれば教えてください
WPFならグリッドにイメージとテキストボックスを入れるだけ、C#のフォームウィンドウは簡単にはできない
今から見た目を重視したアプリ作るならいいかげん観念してWPF使った方がいいね 自前描画は一切無しで自由自在に外観を操れる
539 :
デフォルトの名無しさん :2009/09/07(月) 17:22:39
.net framework compact ですが Graphicsには TranslateTransform() RotateTransform() などのサポートがありません 画像を任意の角度で回転させたいのですが、よい方法がありませんか? 90度刻みではちょっと困りまして・・・imgeのRotateFlipではもの足りません CかC++の座標変換と補完のサンプルプログラムなどでもかまいません あるいはフリーのライブラリでもかまいません(小さいやつがいいですが) よろしくお願いします
自分で書く 高校レベルじゃん?
541 :
デフォルトの名無しさん :2009/09/07(月) 18:05:29
やってみまーす
ただの座標変換と訳が違うのに高校レベルなわけないだろアホか。 回転行列を全ての座標に施せばいいとでも思ってるのかw
ぶっちゃけ回転させると DirectX(SlimDXorMDX)の方が楽な気がする
544 :
デフォルトの名無しさん :2009/09/07(月) 20:13:01
誰か…誰か… ユーザビリティーに優れたインターネットサイトを教えてください。 ユーザビリティーに優れたアプリを作らなければいけないんだけど、アイデアもスキルもありません。 会社を退職に追いやられるかもしれません。 ユーザビリティーに優れたサイトを教えてください。
ゆーざびりてぃーってなんですか
546 :
デフォルトの名無しさん :2009/09/07(月) 20:29:17
>>545 ユーザビリティーとは、使いやすくて面白くて優しくてまた使いたいと思って手が話せなくて美しくてサプライズがあって嬉しいこと。
そりゃすごい
>>537 WPF触ったことなかったのですが、簡単にできました
ありがとうございます
using の使いどころなんですが、IDisposable は全部 using で囲っとけいいんでしょうか? それとも囲うべきものと囲わなくていいてものがありますか? あと、あるクラスを使おうとおもったときに、それが IDisposable を実装しているか どうか簡単に調べる方法ありますか?いまはヘルプでしらべてるんですが、 そのクラスが直接 IDisposable を実装してれば簡単なんですけど、 継承元があると順々にヘルプを見ていくのが面倒なもので。
厳密に言うとあるんだけど、気にせずに Dispose() できるものは Dispose() しとけば OK。
>>549 ドット打ってIntelliSenseにDisposeが出てくればIDisposable。
でいいんじゃないかな(たまに隠れてるのもありますが9割方はOK)。
正確に調べたければ右クリックして定義に移動、そんなに手間かからないでしょ。
usingは使えるときには使う。できれば,usingが使えないような使い方はなるべく避ける。
StreamReaader/WriterとStreamはどっちをCloseするんだったか、 毎回忘れて悩む俺。 Stremをその後使わないなら両方Closeしてもいいんだっけ。 どうもこのあたり釈然としない。
554 :
デフォルトの名無しさん :2009/09/07(月) 22:40:18
WPFとWINフォームを混在させることはできるの? WINフォームを作成しながら、時々WPFを使うことはできないの?
>>553 StreamReader/Writer.Closeは元のStreamごとClose
元のStreamを閉じたくなかったら(WriterならFlushして)放置
>>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 もカバーしてますか?
サイズが小さければ使いたいですが、ちょっと見ただけではカバーしてなさげで・・・
>>557 うん、極めて明快な仕様だと思うよ。
ドキュメントが記述不足なのは確かだけどね。
>>558 つ「.NET Compact Framework での Mobile Direct3D プログラミング」
.NET CF2.0以降なら標準でついてるはず
どんなことができるのかは知らん
561 :
デフォルトの名無しさん :2009/09/07(月) 23:55:16
配列について質問があります。 配列の合成の話がありましたが、ふたつの配列のうち、いっぽうにあるものを取り除く方法を教えてください。 いっほうが配列で、もういっぽうが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 = {"にがうり","ゴーヤ","あんまん"};
ループを一つ重ねるだけだと思うけど? // 拡張メソッドならExceptがあるけど、比較にラムダ式使えないのは面倒だなー
>>562 質問とは直接関係ないがStringBuilder使え。
んで、ループをforeachやめてforの2重ネストループにしろ
もちろんforeachのがわかりやすいならそれの2重ループでも構わん
566 :
デフォルトの名無しさん :2009/09/08(火) 00:29:25
DxLib3.0誕生
567 :
デフォルトの名無しさん :2009/09/08(火) 00:32:12
>>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")
}
}
}
}
こういうスレだと 長い変数って読むの面倒くさくなるけど じっさいのコーディングだと普通に長い名前つけるよね
面倒だからとても短い変数名にしてしまう
読むのが面倒になるほど長い変数名って、可読性落ちて本末転倒じゃね? 変数名が長くなるのって、関数の粒度が大きすぎる時に起きやすい気がする。 適切に分割して関数にちゃんと名前つけてれば、長い変数名使わなくても十分分かりやすいと思う。
ある程度変数長ければ MenuItemsとかにした方が多少自分の命名ルール破っても読みやすい気がする
>>564 、565
配列と配列なので、
foreach(string item in menuitems) {
foreach(string dislikeitem in dislikeitems) {
のように重ねて書けばよいのかと思ったのですが、
それだと、
あんまん-にがうりの組み合わせであんまんがヒットしてしまいます。
(とりあえずforeachで実装。)
>>568 ゴーヤいり卵焼きがヒットします。
あとStringBuilderにはContainsがないそうで、uniqは別途処理する必要があるみたいです(それはできます)。
いきなりコード書くよりまず手順を日本語で書いてみるのを勧めてみる 1.メニューの一つ目を手に取る。itemとする。 2.嫌いなメニューの一つ目を手に取る。dislikeとする。 3.dislikeがitemに含まれているか確認する。 含まれていなければ次の嫌いなメニューの確認。 含まれていれば、このitemは無視する。以降の嫌いなメニューの確認は不要。次のメニューへ。 4.全ての嫌いなメニューに含まれていないことが確認できたら、そのitemを出力する。 次のメニューへ。 さあこのままコード化。 3で含まれていた場合に次のメニューに飛ぶのがちょいと単純ではないけどな。
C#のHashtableをRubyみたいに簡単に保存ファイルにする方法ってありませんか?
質問と一切関係ないが話の流れ的に
>>562 にはぜひキャメルケースとか憶えてほしい。
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で結合するだけ。
HashtableってSerializableAttributeついてるからBinaryFormatter使えんじゃないの 試してないけど
>>567 3D上の板として2Dを描画するのが最近では普通になってるんだよ
580 :
デフォルトの名無しさん :2009/09/08(火) 09:35:06
SetPixelやGetPixelは試すだけ無駄 高速化というよりLockBits使わないと使い物にならない
ref DataRow を受け取るメソッドがあって、そこに型付DataSetのDataTableのrowを 渡したいのですが、どうやってCastすればいいんでしょうか? UserDataSet.TESTTBLRow r = UserDataSet.TESTTBL.NewTESTTBLRow(); foo(ref r); --- private void foo( ref DataRow r ) foo()の中でDataRowの中身を変更しています
refなんかいらん 値型と参照型について勉強しなさい
>>577 それだとゴーヤ入り卵焼きが食卓に並んじゃう!
ゴーヤ入り卵焼きからゴーヤを皿の脇によけて食べればいいじゃない
>>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)のところでイコール式で代入しているのが駄目なんでしょうか?
いいから黙って値型と参照型について調べてこい なぜ駄目か理解しないと意味がない
参照型だと代入演算子で代入されるのはポインタとうい認識なのですが。 つまり 1) FindBy〜 でメモリ上のどこかにオブジェクトが作られて、オブジェクトへのポインタが返る 2) (1) のところで row = 〜〜 としているので、この時点では row は FindBy〜が作った オブジェクトの領域を指している 3) 参照型なので、foo() の引数でやり取りされるのはポインタ。つまり r はFindBy〜で確保 されたオブジェクトの領域を指している と言う感じで、r は FindBy〜で確保された場所をそのまま指しているのでは???
ポインタはポインタ 参照型は参照型 そもそも何かを返したいなら返値で返せばよい
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には影響しない } 説明するのは難しいなあ
>>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
595 :
デフォルトの名無しさん :2009/09/08(火) 15:04:47
BeginInvoke, EndInvokeを用いたスレッドからの例外について質問です。 以下のプログラムにて、BeginInvokeによって呼び出されるDoWork内の例外を、メインスレッドで キャッチしてやるにはどうしたらいいのでしょうか? Main()内のEndXXX呼び出しでキャッチ出来ると思っていたのですが、どうやら駄目なようです。 改行が多すぎると怒られたので、プログラムは次のレスに貼ります。
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(); }
何故メインスレッドでcatchしなければならないのか
コールバックではなく、メインスレッドでEndXXXを呼び出せばいい
>>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でゴーヤいり卵焼きをのぞく方法も教えてください。
600 :
595 :2009/09/08(火) 16:26:42
失礼しました、デバッグ環境だとcatchしてもコードは停止するのですね…。 ちゃんとメインスレッドでcatchしてるようです。
してねーだろw 何が起こってるか理解しろよ。
602 :
577 :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)); ←こっちがテキストボックス、結果返ってくる } すみません、どなたか教えてください。
605 :
デフォルトの名無しさん :2009/09/08(火) 20:01:19
なんで トライ、キャッチなんだよ。 エラーとサクセスみたいなのでいいだろうが。
は?
エラー投げるんだからキャッチで良いんじゃない。
610 :
601 :2009/09/08(火) 20:24:48
言葉足らずだったかな。 >ちゃんとメインスレッドでcatchしてるようです。 ここに対して言った。
VS2005、C#なんですが pictureBoxの画像をマウスドラッグでgoogleMapのように滑らかにスクロールさせる方法ってありますか? またはこのような実装を行う方法ってありますか?
>>596 >Action f = DoWork;
>return f.BeginInvoke(cb, null);
へえ、こんな風にかけるんか
>>612 俺もC#勉強中でこの書き方は初めて見た。
一般的にはどうかくんだろう。誰か教えて。
>>613 マルチスレッドのやり方は幾つかあるし正着ってのはないんじゃないかな。
デリゲートに包むってのはそのうちの一つに過ぎないわけで。
>>613 非同期デリゲートでググれ
ちなみに、silverlightではサポートされてないので、
コンパイルエラーにはならないが、実行時にエラーが出るので注意
>>576 キャメルケース。パスカル方式のことでしたか。了解しました。
string[] menuItems = {"肉まん","あんまん","ピザまん","茄子","ゴーヤいり卵焼き"};
ってことですね。
っていうか、なんでそう書かなかったんだろ。
ふだんはそう書いているんですが。
>>602 LINQの一端に触れた気がします。
fromとかinとかwhereとかselectというのが、LINQの書式なのですね。
まだ充分じゃないですけど、foreachをネストする書き方にくらべて、圧倒的にスマートなことはわかりました。
ありがどうございます。
Camel形式とPascal形式は違う camelCase PascalCase
>>603 コードが読みにくい。
まさか実際のソースもそんな書き方して無いよね?
趣味で作ってるのならいいんだけどさ。
で、問題の方だけど、ドロップダウンリストに値を設定してるところがダメなんじゃない?
InfoPathは使ったこと無いからよくわからないけど。
>>618 一応、これも書いておかないと
Upper Camel = Pascal
Lower Camel = 狭義のCamel
621 :
デフォルトの名無しさん :2009/09/09(水) 09:22:35
Bitmap BmpBuf = new Bitmap("C:\\2008052314460001.jpg"); Picture1.Image = BmpBuf; 画像が表示されません
そうか
623 :
デフォルトの名無しさん :2009/09/09(水) 09:35:56
せめてヒントだけでも ><。。
もうimagelocation でやれwwwww
>>621 デバッグしてそこ実行時にBmpBufが有効か見てみたか?
Picture1ってどのコントロール?
"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です
それはちゃんとFormに貼り付けられてるのか 何かのコントロールの後ろに隠れてないか サイズが0,0になってたりFormの表示範囲外にいってたりしてないか
630 :
デフォルトの名無しさん :2009/09/09(水) 11:18:33
>>629 もう一度一から貼り直してやってみます
コードは間違ってはいませんよね?
再描画されないかもしれないのはおいといて
631 :
デフォルトの名無しさん :2009/09/09(水) 11:23:00
>>630 うまくいきました!!
デザイナのコードが壊れてたみたいです
>>611 paintでGraphicsのDrawImage使うといい。
C++のデザパタに片足突っ込んだ程度の経験なんですが、 今回.NET Framework 4.0が面白そうな事になってるのを聞き及び、C#に手を出してみようかと思っています。 C#のオススメの教本とかあったら教えてもらえませんでしょうか?
.NET4ってそんなに面白そうなフィーチャーあったっけ DLRやPLINQなんか.NET触ったことない人には全く分からないだろうし
>>632 ドラッグ中MouseMoveイベントで毎回それやってpictureBoxリフレッシュすると滑らかにならず・・・
>>635 どんな環境でどうやってんの?
こっちで試す限りでは普通になめらかに動くよ。
Bitmap毎回作ってるとか?
>>636 よっぽどでかくなきゃそれでもまぁいけると思うぞ
Disposeしてなさそうだけど(Disposeいるっけ?)
breakについて教えてください。 for (int i = 0; i < 10; i++) { foreach(string line in lines) { if {//条件。 break; } } } で、ifの条件が一致したとき、この位置にbreakを書くと、foreachは終了しますが、外側のforは終了しません。 どこに書けば、外のforも終了できますか?
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:
>>639 ラベルに命令はんないといけないから
EXIT:;じゃね?
そうだけど後にステートメントが続くならセミコロンは普通書かない
>>641 コンパイル通るの?
前ここではまったんだけど
別のアプローチとしてはforを別の関数に切り出してreturnで抜けるというのもある。
>>642 通る例
EXIT:
Console.WriteLine(x);
}
通らない例
EXIT:
}
とにかく後にステートメントがあればいい。セミコロンだけの場合は空のステートメントがあるとみなされる。
647 :
デフォルトの名無しさん :2009/09/09(水) 23:37:40
C♯で拡大鏡はできますか?
うん
649 :
デフォルトの名無しさん :2009/09/10(木) 00:27:42
とあるクラスにA1〜A5というプロパティがあるんですが 配列のindexのように参照する方法はあるでしょうか?
ない
>>649 A1〜A5の型が同じなら、とあるクラスにインデクサを実装すればいい。
まぁ、こんな事するんじゃなくてA1〜A5を格納するAってリストを作るべきだ。
.netってスタティックリンクライブラリって使えないの? DLLは作れるみたいだけどLibファイルのようなものは作れないのかな
必要ないだろ
作れるよ
655 :
デフォルトの名無しさん :2009/09/10(木) 06:30:54
Graphics.CopyFromScreen
657 :
デフォルトの名無しさん :2009/09/10(木) 12:06:35
>>652 ILMerge を使えば、複数のアセンブリを一つにできる。
659 :
デフォルトの名無しさん :2009/09/10(木) 15:20:01
DataRowの各項目はキャストしないとobject型のようなんですが、 if (rowA["HOO"] == rowB["HOO"]) みたいな比較は、右辺左辺両方が同じ型?(stringとかint)であることが事前に分かって いれば、キャストせずに比較しても正しい比較結果が得られますでしょうか?
得られません。常に参照比較になってしまいます。 Object型のままで値を正しく比較したければEqualsメソッドを使います。
プロセスの終了について質問があります。 写真をまとめてみたいと思って、 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枚だけで、あとのウィンドウは開いたままになってしまいます。 こういう場合は、どうやればぜんぶのウィンドウを一括してクローズできるか、ご教示いただけないでしょうか。
>>652 csc.exe /target:module
ちなみに
Q. Visual Studio 開発環境でこのコンパイラ オプションを設定するには
A. Visual Studio 開発環境では、モジュールの作成はサポートされていません。
>>661 各Processオブジェクトを配列にでも突っ込んで、
終わるときはそれらを順にCloseMainWindowしてけばいい
>>662 moduleもダイナミックリンクだぜ
>>661 関連づけされてるアプリ次第。別々にプロセスが立ち上がるなら、
ここのプロセスをそれぞれ閉じるしかないよ。
終了もforeachすればいいのかなとは漠然と思うのですが、この方法でcloseするにはそれぞれのプロセス名を知る必要があって、それを取得する方法がわからずにおります。
>>663 オブジェクトを配列につっこむ方法を教えてください。
>>664 プロセスを取得してってこと?
プロセス名だと、ファイル名まではわからないんじゃなかったでしたっけ?
ペイントだと、mspaint.exeとか?
>>665 違う。アプリによっては、ひとつのプロセスで複数のウィンドウを開く形になる。
たとえば、デフォルト状態の Explorer とかね。
その場合、最後とのプロセスを殺せば、勝手にまとめて死んでくれるってわけ。
#「ここのプロセス」は「個々のプロセス」ね。
>終了もforeachすればいいのかなとは漠然と思うのですが、この方法でcloseするにはそれぞれのプロセス名を知る必要があって、それを取得する方法がわからずにおります。 なんためにphotoProcess変数を使ってるんだ? 同じことを配列(まあListとかのがいいけど)に入れる形でやればいいだけだろ?
668 :
デフォルトの名無しさん :2009/09/10(木) 23:14:57
>>656 これは画面キャプチャだね。
これで取得したオブジェクトを拡大させるってこと?
やはり難しそうだなぁ。
669 :
デフォルトの名無しさん :2009/09/10(木) 23:48:01
仮想リストビューに1000件くらいのアイテムを表示して 一件ずつループ処理でsubitemを書き換えてリストビューのRefreshメソッドを実行するのですが 書き換えた内容が描画されない 表示するアイテムリストとアイテムはそれぞれ専用のクラスを作って管理してて、 書き換え後にアイテムのクラスを見るときちんとデータが入ってる どんな原因が考えられる?
ListView.RetrieveVirtualItemはちゃんと発生してますか?
671 :
669 :2009/09/10(木) 23:56:05
>>670 発生しておりまする
リストビューが表示されたときにはCSVから読込まれたデータが
表示されてる状態
微妙に671の回答がずれてる気がしないでもない Refreshしたときに、RetrieveVirtualItemがちゃんと表示領域分発生してるんだね?
673 :
669 :2009/09/11(金) 00:22:03
ステップインで確認したらちゃんと発生してますよ てか、RefreshでRetrieveVirtualItemが発生しないことってあるのん?
確認だよ確認 質問者の画面は見れないんだから で、RetrieveVirtualItemで生成するListViewItemにはちゃんと変更後のデータ入れてる?
675 :
669 :2009/09/11(金) 00:41:30
入ってますよ
ちなみにBeginUpdateとEndUpdate使っても駄目そうですか?
677 :
669 :2009/09/11(金) 00:56:49
だめでした やろうとしてる編集を最初からCSVにしておくと 読み込むときにきちんと描画される 只単にアイテムを編集しただけでRetrieveVirtualItemでやってることは 最初に読込むときと全く同じなんだけどな なんか足りないのか
コード見ないと分からんね
680 :
669 :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(); } } コードこんだけ
listView1.Refresh();をループから出す
板違い。 まぁ、俺も別のとこで打ち上げ見てたけどね。
.asxとか死ねよと
設定ファイルを作ってそこから設定を読み込もうとしています 設定ファイルはこんな感じです #setting.txt #aの値を書き込んでください a=1 #bの値を書き込んでください b=hoge #cの値を書き込んでください c=hoge hoge #(#以外でも構いません)で始まる行はスキップ、それ以外の行は=の右辺を取得して変数に代入 このような場合はどうすればいいのでしょうか
string line; に対して、 line[0] == '#' line.Split('=')[1] か、正規表現使うか。
>>685 iniファイルを連想した。
あれのコメントは;だったが。
もし、iniファイルで…ということならWin32APIを呼び出せばOK
フォーマット変えていいならXMLを使うことを強くお勧めする XmlSerializerとか使えば一瞬でできる
692 :
669 :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]; } } } 今職場だから思い出して適当に書いてみたけどこんな感じ 何の変哲もない保持用クラス
SetResultメソッドとやらでSubItems[n].Textに転写してる?
肝心な部分が書いてないっていうね
695 :
685 :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); } } 行頭#スキップがどうすればいいのわかりません…
そんなもんif(line[0]=='#')continue;でいいだろ
素直にGetPrivateProfileStringとかInt使ってくれない? 面倒くさいからさ。
よく見ると色々おかしい気がする
#以前に滅茶苦茶すぎる
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);
701 :
685 :2009/09/11(金) 19:09:59
ごめんなさい…
あっちこっちのをペタペタ貼ってたらひどいことに…
>>696 >if(line[0]=='#')continue;
文字列からそうやって一文字抜きだせるんですね
「なんで配列?」ってよくわかってませんでした
ありがとうございます
>>697 >GetPrivateProfileString
こういうのもあるんですね
調べてみます
>>698-699 もうしわけありません…
>>700 >ReadToEnd
ReadLineにしてたつもりが、いつのまにか入れ替わってましたorz
わざわざありがとうございます
これ見てもうちょっと勉強してから出直してきます
>>701 var setting = File.ReadAllLines("setting.txt")
.Where(s => s[0] != '#')
.Select(s => s.Split('='))
.ToDictionary(ar => ar.First(), ar => ar.Last());
でも、設定保存ならXmlSerializerのほうがいいよ。
XmlSerializerだと人手で読み書きするのが面倒臭いじゃん だから未だにiniの需要が一定量あるんだろう
何にせよ自作は時間の無駄 #を値の中で使いたいときとかどうするんだ 人間にとっての読み書きのしやすさを重視するならiniでもいいし, 属性形式のXMLを使うという手もある(XmlSerializerで可能)
キーはユーザが決めるモンじゃないから別に値の中で使っても良いんじゃないかな
706 :
704 :2009/09/11(金) 19:33:24
すまん行単位か
作ってみたいだけかもしんないし、あんまとやかく言うのも野暮。
708 :
685 :2009/09/11(金) 19:47:42
たくさんのご意見ありがとうございます
いろいろ調べてみましたが、
>>700 さんのがやりたいことに一番近い(ような気がします)
他の方々の意見もとても勉強になりました
基本からもう一度やりなおすことにしますorz
709 :
669 :2009/09/11(金) 20:23:33
>>693 何回もレスして貰って申し訳ないけど、最初に言ったとおり
RetrieveVirtualItemで書き換えられたItemがe.Itemにセットされてるところまで
確認してるんですよ
e.Itemにちゃんと書き換えられたItemがセットされてるにのListViewの表示が更新されないので
嵌ってるわけですよ
ごちゃごちゃうるせえ SetResultのコード出せよ って言ってるんですよ
711 :
669 :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が少なすぎて仕様がわからん・・・
なんでコード出てくるたびに仕様が変わってんだ ItemクラスのColumnsプロパティって何だよそんなの前回はなかったじゃねぇか とにかくSetResultでSubItems[3].Textにもsを設定しろ
713 :
669 :2009/09/11(金) 21:16:56
例えばって言ってるじゃん だいたい何でstring同士で出したり入れたりしてんのに Textプロパティなんていうめんどくさいものつくらにゃならんの? わざわざSetResultメソッドの為だけにTextプロパティ作るの? きちんと代入できてるって言ってるのにそこにこだわる理由はなに?
何だこいつ 質問してる身なのに偉そうだな
なんで例えるんだよ ItemはListViewItemを継承している RetrieveVirtualItemではItemのインスタンスを返している Itemはフィールドにstring[]を保持している ここまでは合ってるよな? ListViewがView.Detailsのときに各カラムに表示できるのは ListViewItemのSubItemsに格納されているListViewSubItemのTextプロパティだけ Itemがフィールドに何持ってようが関係ない プロパティ作れなんて誰も言ってない
昨日から思ってたけど
>>669 の態度酷すぎだろ。
あとね、documentのせいではなく、自分の能力のせいだと思われ。
この程度の事も分からないとは。
717 :
669 :2009/09/11(金) 21:36:34
理解した。申し訳ありませんでした。
なんで 自分のやり方でうまくいってないから質問したのに しかも正しい回答されてるのに逆切れするとか 理解の範疇を超えてる。
Visual Studio 2008 で C# を使い始めたんですが ListboxやPanelなどをウィンドウのリサイズに合わせて適宜変更(最大化)するには プロパティのどの項目を設定すれば良いのでしょうか?
AchorとかDockプロパティでググレ
722 :
デフォルトの名無しさん :2009/09/12(土) 15:35:30
物件検索ファームを作成しました。 テキストボックスに例えば「2CH」と入力すると、 そのテキストボックスの右隣に、 「2CHハイツ」 「2CHマンション」 「メゾン2CH」 と検索に合致する物件をリスト表示させたいと思っています。 その際、 テキストチェンジイベントでパネルを表示させることができたらと思いましたが、 1.パネルを表示させたい箇所に別のパネルがあるので埋もれてしまう。 Z順序が生きてしまい、欠けてしまう。 2.パネルではなくフォームでやろうとすると、どちらかのフォームしかアクティブにならないので、使用が困難。 という状態にあります。 どのようにすればよいのでしょうか。
>>722 言ってる意味がよく分からないけど、Zオーダで別のコントロールの背後に隠れるなら
問題だというのなら、最前面に持ってくれば済むことに思うんだが・・・
>>723 オートコンプリートと
>>722 の言ってることは違うと思う
インクリメンタルサーチだろ
部分一致のことを「インクリメンタルサーチ」と呼ぶのか一般的に?
>テキストチェンジイベントでパネルを表示させることができたら こう言ってるから多分インクリメンタルサーチで合ってんじゃね。 単なる部分一致なら検索ボタンどうのこうのとか言い出すと思う。
(若干意味不明ではあるが)たった数行の質問なんだからちゃんと読んでやれよまったく。 そうやって下らん反論をしてる間に読めるんじゃないの?
フヒヒwwwすみませんwww
730 :
デフォルトの名無しさん :2009/09/12(土) 18:11:37
質問だがフォームに2枚のパネルを置く。 1枚はDockをLeft、 もう1枚はDockをFILLにする。 で、さらに1枚のパネルを、上記2枚にまたがる位置に置くとする。 こいつは、普段は見えないが、あるケースのときだけ前面に出したい。 これは可能? 通常は上記2枚のパネルのいずれかの配下に置かれるので、表示されても一部が欠けるはずだ。
>>730 質問だがって何だよ。
>>722 と同じ人物だろお前さん。
まあ別にいいけど。
君はコンテナって概念がよく分かってないんだね多分。
そんなの第三のパネルを別のパネルの子コントロールにしなきゃいいだけ。
732 :
デフォルトの名無しさん :2009/09/12(土) 20:01:10
>>731 どの子にも属さないようにできるんだっけ。
登録選手 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.
(フォーム以外の)どの「親」(コンテナ)にも、ね。 デザイナを使ってそういう状態、つまりパネルAの上にパネルBが「重なった」 (BはAにcontainされてない)状態を作りたいなら、BのZオーダーをまず最前面にしておいてから、 マウスではなくカーソルキーで移動させるか、プロパティグリッドで座標を直接指定すればいい。
735 :
デフォルトの名無しさん :2009/09/12(土) 21:54:34
ドキュメントアウトライン使ったら一番楽だと思う。
すみません、質問なんですが・・・ XnaGameStudioの3.1をインストールして、C#でプログラミングをしようと思ったら、 それまでの(インスト前のXnaGameStudio3.0)で開けた.csprojファイルが開けなくなってしまいました。 自分なりに調べて、VC#やXnaを再インストしたりとかしたんですけど、 Xnaで作ったプロジェクトだけを開けない状態になっているようなんです。 ちょっと一人では直せそうに無いので、対処方法を教えてもらえませんか?
その csproj をテキストエディタで開いて ProjectTypeGuids だか なんだかを編集すればいいだろたぶん 値は 3.1 の対象プロジェクト新規作成して調べれ
739 :
737 :2009/09/13(日) 07:35:03
>>738 プロジェクトを新規作成しようとしても、OK押した後にcsprojを開けず、
「そのプロジェクトの種類はこのインストールでサポートされていません」
と出てしまいます。
最初に書いてませんでした。すみません。
>>739 テキストエディタで開いて
って言ってんだろ
>>739 >「そのプロジェクトの種類はこのインストールでサポートされていません」
謎だなぁ
まっさらに戻さないといけないかもねー
742 :
737 :2009/09/13(日) 08:00:07
>>740 すみません。また言葉足らずでした。
開けない既存プロジェクトの.csprojをテキストで開くのはいいんですが、
3.1の対象プロジェクトを新規作成しても、そのプロジェクトも開けない状態なので、
開けないプロジェクトを参考にして値を変更するのはどうなのかなと思いまして・・・
>>741 やっぱ最終的にはそうしないとダメっぽいですかね・・・
なぜかXnaを通してないcsprojファイルは開けるんですが。
743 :
737 :2009/09/13(日) 08:01:48
これXNA認識されてなくねw?
745 :
737 :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に参照設定が必要というのがわかりにくいのですが そういう場合の解決方法を教えてください よろしくお願いします
Aの存在を一切アセンブリBの外に見せないようにする。 全ての操作がBに定義されたクラスだけで完結するようにAをラップしてしまう。 参照設定がうざいとかそういうレベルにとどまらず, そのほうが設計的に利用者にとって分かりやすくなる。
>>746 System.Reflection.Assembly.LoadFileで対象のアセンブリを動的にロードした後、
Assembly.CreateInstanceでインスタンスを作成する。
というか他のプロジェクトで参照の設定をさせたほうが圧倒的にメンテナンスコストが低いと思う。
ここでリフレクションとかないわ・・・
>>748 そういうことするんだったらBのほうを動的にロードするべきだと思うよ
Aにはインターフェイスだけ宣言しといて,Bをプラグインみたいな扱いにする
751 :
デフォルトの名無しさん :2009/09/13(日) 14:03:09
>>747 わかります。基本的にaはprivateで宣言して変数はプロパティ、メソッドはメソッドで隠蔽すべきですよね。
ただ、bのバリエーションが非情に増えそうな予感がしたので本来なら多重継承させたい状況なのです。
そうでないなら、publicでそのまま使わせた方が楽かと・・・
ご意見ありがとうございました。
>>748 >他のプロジェクトで参照の設定をさせたほうが圧倒的にメンテナンスコストが低い
そうですか。あまりへんてこなことでもないんですね・・・・ありがとうございました。
リフレクションについてもう少し勉強してみます。
>>750 なるほど、ただ、Aに含まれるのはベーシックな数値計算などですから
インターフェイス化しても同じ計算をあちこちで書くことになりそうです。
ただ、AとBの関係をCからは同列にしてBをプラグインみたいにする考え方もありますね。
非情に参考になりました。ありがとうございました。
やはり参照設定をして、Aをそのまま使っていくのがバージョンの変更などにも対処しやすく
メンテナンスコストもよさそうなので、そうしたいと思います。
しかし、いろいろな方法をご提案いただいて非情に勉強になりました。
ありがとうございました。
752 :
748 :2009/09/13(日) 14:03:12
参照設定しないで別のアセンブリを使いたいっていうだけの話だと早とちりしてた。
>>747 で十分だね。申し訳ない。
unless を使いたい時にC# ではどう書くのが良いのでしょうか? 例えば指定したディレクトリがなければ処理をしたいときに if (Directory.Exists(dir) == false) このような書き方をしてるのですが、 冗長ですのでもっとすっきりした書き方はないでしょうか?
意味が分からない
! が分からないってこと?
>>755 !が使えたんですね、ありがとうございます。
出来ました^^ if (Directory.Exists(dir) != true)
ワロス
759 :
デフォルトの名無しさん :2009/09/13(日) 14:55:27
>>752 とんでもありません。おかげでひとつ勉強になりました。
チェックボックスについて教えてください。 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"); } として実行すると、ボタンを押したときにメッセージが表示されるので処理は行われます。 しかし、チェックボックスのチェックが入らないのです。 チェックボックスにチェックを入れるには、どこでなにをしたらよいんでしょう? マウスでチェックボックスをチェックする以外の方法をお願いします。
いや、その、CheckBoxのチェック状態を変更するコードは…?
foo = treeview1.Nodes.Add("foo"); foo.ImageIndex = 1; foo.SelectedImageIndex = 0; の代わりに treeview1.Nodes.Add("foo").[ImageIndex,SelectedImageIndex] = [1,0] のようにしてインスタンス変数をまとめて変更することはできますか?
なにこの「ぼくのかんがえたすごいしーしゃーぷ」
>>763 欲しい機能があるかどうかを質問するのがそんなに悪いことでしょうか?
>>762 treeView1.Nodes.Add(new TreeViewNode("foo", 1, 0));
ぼくのかんがえたすごいしーしゃーぷ により近い書き方もある
treeView1.Nodes.Add(
new TreeViewNode { Text = "foo", ImageIndex = 1, SelectedImageIndex = 0 });
768 :
767 :2009/09/13(日) 15:40:36
TreeNodeの間違い
無いって言うと何でですかって聞き返してくるからなw 気持ちは分からんでもない。
>>765 ありがとうございました。できました。
msdnのメンバ一覧の読み方がすこしわかってきました。
感謝です。
WindowsFormアプリケーションの質問です。 チェックボックスリストを使って、ある項目を選択できるようにしているのですが、 チェックをつける際に、マウスをダブルクリック(行を選択→チェックをクリック)しないと、チェックがつきません。 これは仕様でしょうか?
チェックボックスリストって何?
773 :
771 :2009/09/13(日) 18:48:16
すみません。 CheckedListBoxです。
デフォルトの動作はそうなってるな CheckOnClickで違う動作もとれるが
775 :
771 :2009/09/13(日) 19:30:45
一発でチェックがつきました! ありがとうございました。
初歩的なことですみません。 for (int i = 2; i < args.Length; i++) { allArgs = allArgs + args[i] + " "; } って allArgs = string.Join(" ", args, 2, args.Length - 1); じゃないの? インデックスおよびカウントはバッファ内の場所を参照しなければなりません。 とかいわれて困ってます。
最後の引数は結合する要素数 i=2から始まってるからargs.Length-2個だ
なおforで回す方は最後に" "が一つ付くがJoinの場合付かない
MSDN読めよ
>>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をすらっと読んで理解できる方が羨ましい。
なんか読むコツがあるんですか?
日本語の勉強
ひたすら読んで、書き方の「クセ」みたいなのを理解するしかないんじゃないかな
だいたい配列を扱うメソッドの引数って (配列, 最初のインデックス, 要素数) と決まってるんだよね
配列の区切り文字を削除、って何言ってんの?
指定した String 配列の各要素を連結し,単一の文字列を作成します。各要素間には指定した String を区切り文字として挿入します。 こんな感じ?
>>780 パラメータの説明はもう少し詳しく書いてあってもいいとは思う。
separator 区切り記号
value 連結される String の配列
startIndex 使用する value の最初の要素インデックス
count 使用する value の要素の数
とか。まあパラメータ名で大体分かるけど。
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(); というのを試しているのですが、コメント欄の文字は表示されません。
プロパティのコメントって副ストリームに書いてある奴じゃねーの
>>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 :
という文字だけ追加されました。
死ね
>型 'Shell32.FolderItem' を 'Shell32.FolderItem2' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください) >でエラーで動かず。 こんなエラーも対処できないなら畑でも耕してろ。
VBで修業したらいい。
VistaだとExifデータとして0x9C9B-0x9C9Fの辺りにUnicodeで格納されとるのぅ
明らかに788はそこを参考に書いてあるように見えるが駄目なのかしら
それも789で試してんだろ 書き込む前にレス追えバカ
どうしてたった数レスが目に入らないんだろう…
教えたがりだから。
>>791 >>796 で行けたよ。
ただし、Typeは1で、中身はUnicodeだから
Encoding.ASCII.GetStringからEncoding.Unicode.GetStringに変更
ちなみにコメントのIdは0x9c9cらしい
Directory.GetDirectoriesについての質問失礼します ドライブ内のすべてディレクトリを対象にディレクトリ名で検索したいです。 そこで、Directory.GetDirectoriesの第二引数でAllDirectoriesを指定するという方法でとりあえず作成してみました。 このプログラムは一応正常に動作しているのですが、「C:」ドライブのすべてのディレクトリを検索させようとすると 「System Volume Informationのアクセス権がない」といったエラーが出て止まってしまいます。 「System Volume Information」の中身は検索対象に含めるつもりはないのでスキップしたいのですがその方法がわかりません。 AllDirectoriesを使わずに自前で再起処理などで検索していくしかないのでしょうか どうかご指導お願いいたします。
うんそう諦めて
もし自分に「Program Files」とか見る権限がないばあいはエラーキャッチでスルー
>>804 そうですか…。
>>805 それも考えたのですがキャッチ後にそのまま続行する方法がわかりません
ネットで調べたところVBにはCatch ex As Exceptionというのがあるそうなのですが
C#でもそれと同じようなことができるのですか?
なんでヘルプ読まないの?
これはひどい
キャッチスルーと書いたけど、そんなのかっこよくない。 だいたいc:が読めないからスルーしたら終わるw 素直に権限ない場合%userprofile%とか検索するプログラム書いて分岐。 もしくは根本的に検索するべきなのか考え直せぇ
百姓を馬鹿にしている奴が昨日から1人いる…。
812 :
デフォルトの名無しさん :2009/09/15(火) 09:19:31
たいがいそいつはもとはひどい百姓だったんだよ
でも
>>809-810 こいつらはきわめて優しいと思うぞなかなか真似できん
まあキャッチスルーじゃそもそも出来ないんだから、 MSDN見れなんてのはあんまいい回答とも思えんしな。
814 :
デフォルトの名無しさん :2009/09/15(火) 11:48:52
y=(2 * Math.Atan(Math.Exp(f)) - PI / 2) / (PI/180); ある座標変換系コードを検証してんだけど、これはつまりなにやってんの?
数学板で聞いた方が早いんじゃない?
Directxでフォームとは別のクラスを作ってそこでDirectxの処理をして ピクチャーボックスに表示したいんですがどうしたらいいんでしょうか。 今はDirectXのデバイスにピクチャーボックスのハンドルを入れたらいいのかなと 思ってやってるんですが間違えてますか? public Intptr GetHandle() { PHandle = PictureBox1.Handle; } デバイスにPHandleをいれる。 private bool InitializeGraphics() PHandle = GetHandle(); device = new Device(0, DeviceType.Hardware, PHandle,・・・・・);
ドキュメントで引数の型を見ろよカス
818 :
デフォルトの名無しさん :2009/09/15(火) 12:20:43
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
カワイイなお前
>>818 型が違うとだめなのか。どうもありがとう
正規表現で「ASCII文字を許す。ただし例外として "<"と">"は不許可 ってどう書けばいいんでしょうか?
[ -;=\?-~] 空白からセミコロンまで、等号、疑問符からチルダまで ※試してません
質問させて下さい。 ここの過去スレで読み取り専用でListを公開したい時はReadOnlyCollection で渡すと良い、という事を知りました。 同様にDictionaryを読み取り専用で公開したい場合、ReadOnlyCollection の様な方法は用意されているのでしょうか?無い場合、どのような方法が より安全でしょうか?
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); requestからファイルサイズを習得しようとすると-1になるのですが、 どうしたら正しいファイルサイズが習得できますか?。
>>826 HttpWebRequestからファイルサイズとか取れないだろ。
何をどうやって取ろうとしてるの?
>>827 httpwebrequest.contentlength
あ、これはリクエストする方のサイズなのですね
ごめん
830 :
デフォルトの名無しさん :2009/09/15(火) 22:43:26
C#でiphoneのアプリ開発やったことある人に質問なんですが 使い勝手や感想を教えて下さい
すいません mono touchのことです
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 ではできなさそうでした。
ありません
ありがとうございました。
File.Existsって、*file.txtのようにワイルドカードは使えないんですか? 01file.txt 02file.txt … などのどれかにヒットさせたいときには、 string[] files = Directory.GetFiles(dir, "*file.txt"); して、確認しないとだめなんでしょうか?
そうよ
ありがとうございました。
イメージリストからイメージを取り出す方法はありませんか? それとイメージリストにイメージを登録した時点でリサイズされてしまうのでしょうか?。 それとも表示する時にリサイズされるだけ?。 (Image)imagelist_listview.Images[listView1.SelectedItems[0].Name];
843 :
842 :2009/09/16(水) 11:26:49
ImageList.ImagesからImage取得した時点で画像のコピーが作られるから 頻繁に出し入れするならImage.Disposeを忘れないようになー
usingばっちこい
846 :
デフォルトの名無しさん :2009/09/16(水) 16:51:46
Stackを配列から初期化するには forでまわして一個ずつpushするしかないのでしょうか? もしくは Stack.Pop() も forループ も使わずに 配列の先頭要素を除いた残りの配列を返す方法はありますか?
Stackの用途間違えてる リンクリストでも使えよ
consセルでおk
2008Expressでjitを使えるようにする方法はないものでしょうか?
Just In Time = ちょうどそのとき そのときになにをしたいの?
俺用語使われるとエスパーの出番しかなくなって
>>850 どうでもいいけど、英語圏でjitはもはや動詞として使われてるよw
JIT - JITs - JITted - JITting
意味はもちろんJITコンパイルすること。対義語はto AOT
で?
854 :
デフォルトの名無しさん :2009/09/16(水) 17:40:43
だからなんなんっていう。
849にしかわかりません
そうすると英語圏的にはトヨタ完全敗北なのか
その通り
>>814 亀レスで、もう数学板の方でレスついちゃってるかもしれないけど、一応
双一次変換のアナログ周波数→ディジタル周波数の計算式じゃない?
なんとなく交流理論でよく使う極座標表示関連の式のように思うけどね。
atan だから逆か・・・
863 :
デフォルトの名無しさん :2009/09/17(木) 05:01:07
ジェネリック配列にテキストボックスのテキストを改行区切りで = Text.Replace("\r", "").Split(new char[] { '\n' }); としたいのですが、どのように処理すればよいでしょうか?
ジェネリック配列? ジェネリックも何もString.Splitの左辺はstring[]しかありえないが?
865 :
863 :2009/09/17(木) 05:19:34
ありがとうございます。 string[]しか無理なのですね・・ 動的に配列を追加していきたいもので・・・
もうちょっと広い範囲で何をしたいのか書いた方がいいかも List<string>にstring[]をAddRangeすることはできる もちろんList<string[]>にAddすることも
867 :
863 :2009/09/17(木) 05:43:05
AddRangeで実現することができました! ありがとうございます!! 勉強不足ですいません!
868 :
デフォルトの名無しさん :2009/09/17(木) 10:23:27
C#で予め用意された値型構造体やString型クラスは =演算子で構造体またはクラス変数にそのままメンバ値を代入できますよね これってユーザ定義構造体またはクラスで実現できますか 調べてみたら、=演算子のオーバーロードはできないみたいだし、 インデクサは配列メンバにしかアクセスできないし。。。 プロパティでpublic this{ get; set; }みたいできたらいいんですが。。。
はぁ?
もしかしてリテラルが使いたいってこと? string x = "str"; int x = 100; こういうの 暗黙の型変換(implicit operator)を実装すれば Hoge x = 1; とかできるようになる
871 :
869 :2009/09/17(木) 10:31:44
ああそういうことですか。煽って申し訳ない。
>>868 勘違いしてそうだけど
string x = "str" って,xが指してるStringオブジェクトのメンバを変更してるんじゃなくて
新しいStringオブジェクトを作ってその参照をxに代入してるんだよ
え?そうなの? じゃあやっぱ煽ろうかな。
文字列リテラルで新しいオブジェクトはまずい表現だがまあ初心者スレだからいいか。
このようにしてイメージリストにアイコンを入れてみたんですが これを取り出す方法が分からないので教えてください。 imageList2.Images.Add("rar", appIcon);
imageList2.Images["rar"]
>>877 ありがとうございます。無事出来ました。
listViewで最後の項目を選択したいです。 listBoxの場合には、 listBox.SetSelected(listBox.Items.Count -1, true); でできるのですが、listViewの場合には、どのようにしたらよいでしょう?
Itemsから最後の取得してSelected
listView.Items.のあとに、選択系のそれらしきものがないんですけど…。
ListViewItemのプロパティ
なんか江戸っ子みたいな一言居士な方ですね。 そうぶっきらぼうにいわず、プロパティのどの項目か、 もうすこし手順まで教えていただけないでしょうか。 listViewのItemsのプロパティを見ると、 (コレクション)とか書いてあって、 ここではなさげだし、セレクト系の項目も見当たらないし。
何甘えてんの
>>884 横からだが、
>>881 で答え出てるじゃん
それで分からないって言うから
>>883 でListViewItemのプロパティってとこまで教えてもらってるのに、何故理解できないのか。
とりあえずMSDNのListViewItemの項目読んで来い。
みんな優しいのな。 こういう人には、さっさと教えて勉強する機会を奪いたくなる。 listView1.Items[listView1.Items.Count - 1].Selected = true; listView1.Select();
MSDN読めと一言いえば済むよ
MSDNは俺の読め
>>887 ありがとうございます。無事出来ました。
どういたしまして。
C#のメソッドをネイティブDLLにコールバック関数として渡したいので そのメソッドのデリゲートを渡したところ一旦は動くのですが、 しばらくするとGCで移動させられて呼び出し時にエラーが発生するようになります。 そこでデリゲートをGCHandle.AllocでPinnedにしようと思ったんですが、 デリゲートはblittableでないからとArgumentExceptionが発生します。 どうすればDLLに固定されたアドレスを渡せるんでしょうか。
デリゲートインスタンスをローカル変数じゃなくてフィールドに置くようにしとけばいいよ
言っとくがエラーになるのは固定されてないからとかそういう問題じゃないよ デリゲートが解放されないように参照をちゃんと保持しとけばいいだけ
895 :
デフォルトの名無しさん :2009/09/18(金) 12:09:00
一枚の大きな画像が複数のタイルファイルに別れている場合、 タイルファイルを呼び出して大きな画像を作る前処理が必要です。 そして表示領域が移動したとき、領域からはずれたタイルを破毀し、必要なタイルだけを補完する必要があります。 こういう場合とっておきのスマートな処理方法ってありますか? 定石のようなものやクラス構成のヒントだけでも教えてもらえるとありがたいです。
バカじゃねーの
自分の歩いた道は既に誰かが通っていて、 常に舗装されている(スマートな解法が存在する)と思ってる奴がいるよね。
煽りはうざいから消えてくれ ちゃんとしたレスする気がないならスルーしろ
嫌だね
スレタイ読めよクズが
┐('〜`;)┌
こういうの定期的に湧くね。 バイオリズムか何かで虫の居所が悪い周期でもあんのかしら。
テンプレ読めクズ
くずがくずとののしるのですか
黙れクズ
平和だな
>>893-894 ありがとうございます。
できました。
でもこれって移動しない保証はあるんですか。
それとも保証は無いけど実質移動はしないということですか。
>>908 今どういうコード書いてあるか見せてみろよ。
移動がどうこう言ってるようじゃ何か間違ってるわ
間違ってねーよ できたつってんだろ
懐かしいな… そこでも結論出てたと思うが、デリゲートをアンマネージに渡すと、 マーシャリングのためのサンクが作られる。 このサンクが生きてる限り、アンマネージからの呼び戻しは正しく動作する。 サンクはデリゲートがGCで解放されると死ぬ。 以上、デリゲートの固定とか関係ない。
Marshal.GetFunctionPointerForDelegateにはGCが回収しないようにしておけばいいと書いてあるから 固定とか不要だと思うけど
914 :
913 :2009/09/18(金) 16:21:24
すまん、リロードしてなかった
サンクが作られるのか サンクス
C++/CLIからC#に来るとC++のpin_ptr<T>とかのせいで誤解するよね
しないです
するです
VBからくるとC#の{ ... }ブロックはべんりねん
VBが不便なだけ
>>895 ゲームのマップ?
C#にこだわらなければサンプルはそこらへんに腐るほど落ちてるぞ
一回書けば二度と触らない部分だろうからスマートとかどうでもいい
>>917 C++にはpin_ptrなんか無いぞ
C++のせいにするなー!
924 :
デフォルトの名無しさん :2009/09/18(金) 19:10:51
>>922 あざーす
一枚のタイルがどこまで動いたか調べて一斉にタイルを書き換える方法が見つかりました
まー結局ループしてコピーなんですね
OOPっぽくタイルクラスに移動値(x、y)を与えてやってみます
タイルをクラスにするなら,表示領域外のタイルオブジェクトも保持するようにした方がスマートだよ 表示領域外に出たタイルオブジェクトは描画リソースだけ破棄するようにする 大きな画像全体を仮想的に保持しといて,必要な範囲だけ描画を有効にするイメージ
926 :
デフォルトの名無しさん :2009/09/18(金) 21:41:47
>>925 ありがとうございます
ライフゲームのセルみたいな感じですね?
わかります
C++で最初に書いたのを思い出しました
927 :
デフォルトの名無しさん :2009/09/19(土) 08:38:42
商品注文画面を作成しています。 a. 検索ボックスに検索したい商品の名前を入力しはじめると、 返還前であっても該当する商品が右側の窓に表示されるようにしたいのですが、 返還前の文字列を取得し、検索結果を表示するにはどうすればいいでしょうか。 b. 発注者の氏名を入力したら、自動で発注者のフリガナを下のボックスに入れたいと思っています。 これもaと同じ要領で返還前文字を拾うことができるでしょうか。 よろしくお願いします。
いやです
それほどでもない
>>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
このとき、タイルはタイル領域のサイズを知っていれば 移動量を与えるだけで自分が領域を外れたかどうか判断できると思うのですが タイルコンテナクラスのプロパティをタイルクラスから参照する方法ってありましたか? 引数で与えてやればいいだけですが
>>932 タイルということは敷き詰めるんだよな?
> タイル(x1,y1)が(x3,y5)へ移動した場合
この時点で無駄でしょ。
タイルが移動するオブジェクトである必要は無い。
2次元配列(パフォーマンス的には配列の配列か)、視点(カメラ)、リソースのコンテナ、あと表示領域分の別バッファ…このあたりか
動くのは自分或いは世界ね。
怠惰なオラは
>>924 以前の流れは読んでないので的はずれだったらすまぬ。
ノシ
936 :
デフォルトの名無しさん :2009/09/19(土) 11:32:09
>>935 なるほど スピード重視だとそうなるんですね
タイル空間の座標を全タイル分用意
配列の配列には画像へのポインタ
こんな感じすか?
見える範囲をキャタピラみたいなもんに描画するのと
たぶん画像のポインタの切り替えや読み込みは同じなんで
ループするタイルの枚数が少ない方が早い気がしますが
タイルの総数が少ないと配列の方が早いんですね?
参考になりました
> 配列の配列には画像へのポインタ もっと単純にintでもいい もしxna+xboxなら値型のほうがいいから、この場合複雑なものが入るときはstructのほうがいい > タイルの総数が少ないと配列の方が早いんですね? そうじゃないです。常に描画するのは差分だけなので描画回数等から差が出る。 別個のオブジェクトとして扱うとその最適化に悩むことになると思われる。
なーんか
>>936 の考えがよくわかんないね。
タイルが移動とか、どうしてそういう風に考えるんだろう。
普通に考えれば、例えば表示領域のサイズがタイルを1としたときn×mだとしたら、
(n+2)×(m+2)のサイズのバックバッファを用意して、あとは球面スクロールを
実現するために(1)バックバッファの更新方法と(2)バックバッファからのBitBltの方法
を考えるだけじゃないの?
939 :
デフォルトの名無しさん :2009/09/19(土) 14:17:49
>>937 ありがとうございます。
>単純にintでもいい
なるほど画像番号みたいなものですね
>別個のオブジェクトとして扱うとその最適化に悩むことになると思われる。
もうすでに悩んでいるようです
言われてみて実際のサイズを考えて見たら、理論上はタイルを1として
35万×35万くらいのマップサイズになる可能性がわかりまして・・・
>>938 ありがとうございます。
こういう話に慣れてないのですみません。
単なる描画と割り切ってしまえば簡単ですね。
タイルファイルをオブジェクトとして扱わない方向で考えて見ます。
MDI フォームを作り、子ウインドウを最大化して使用しています。 ボタンをつけて、アクティブなウィンドウを変更できるようにしたのですが、 変更する際に、一瞬だけ最大化されていないウィンドウが表示されてしまいます。 スムースに切り替える方法はないでしょうか?
またそういう「ナイアル厨ホイホイ」な質問を・・・ まあ何か方法はあったはず。 MDIは他にもしょうもないバグが満載だから困っちゃうね。
子ウインドウが常に最大化されてるんだったらMDIでなくてよくね Panel貼っといて中身を差し替えたら
C#のお勧め書籍を教えてください。 オライリーの初めてのC#は読みましたがいまいち内容が足りない感じです。 もう少しオブジェクト指向など高度なことが学びたいのです。
おまえ、オブジェクト指向いいたいだけ違うんかと。
デザパタ本でも読めば?
946 :
デフォルトの名無しさん :2009/09/20(日) 02:58:43
>>931 そのやり方が何を見ても分からないんです。
どのようにすれば、IMEから確定前の入力を拾うことができるのでしょうか?
>>946 .NETのクラスライブラリ(BCL)にはない。BCLにあるのはIMEのOn/Offくらい。
Win32APIを使うことになるが結構面倒で説明しきれない。
imm.h / imm32.lib でぐぐればいくつか出てくると思うよ。
極東向けのおまけパッケージに、ふりがな取得する奴はあった気がする。
949 :
デフォルトの名無しさん :2009/09/20(日) 14:01:20
「性別」グループボックス内に、 ラジオボタン「男」「女」を並べています。 「男」ラジオボタンのタブストップをTrueにし、 「男」ラジオボタンにフォーカスが当たったときに、男と女を選択するようにしたいと思っていますが、 「男」ラジオボタンにフォーカスが当たった時に、 「男」が自動でチェックされてしまいます。 フォーカスは当たるけどチェックは手動で行ってもらうようにするにはどうすればいいでしょうか。 教えてください。
そういうもんだろ。
>>949 ラジオボタンはそういうもんだという気がするが、
どうしてもやりたいなら、チェックボックス使って、
排他は自分で制御とか。
そういう微妙なとこ変えられるとかえって戸惑うだろうな そういうのって意識してなくても慣れてるもんだから
ほっとけば、選択中の項目にフォーカスするようになっているのに何がしたいのか
フォームデザイナでサイズを指定するとウィンドウの外側にあわせてサイズが指定されるんですが 枠の内側(タイトルバーなどを除いた、実際の表示領域)のサイズを指定することはできないのでしょうか?
>>950-552 そもそも
>>949 のいってるようなことは実際には起こらんよ。
フォーカスが当たっただけでチェックされる、なんてことはない。
そんなアホなコントロールがあるわけないだろ常識で考えても。
956 :
デフォルトの名無しさん :2009/09/20(日) 15:00:40
>>955 フォーカスが当たってもチェックされないみたいだけど、
見た目はチェックされているからね。
フォーカスを当てつつ、チェックもさせないようにできないのかな。
カーソルキーやスペースを押して初めてチェックがつくように。
957 :
954 :2009/09/20(日) 15:02:04
クライアントっていうんですね・・・ this.ClientSize = new Size(640, 480); ↑でできました ただ、これで対応した場合はフォームデザイナのほうはそのままにしておくのでしょうか? これを入力して戻っても、サイズがかわってくれません (ビルドしたらきちんとサイズは変更されています)
>>956 ごめん、言ってる意味が理解できない。
君はフォーカスが当たると「チェックされる」と言ってるか、「チェックされない」
と言ってるのか、どっちなんだ。
現実はどうかと言えば、もちろんフォーカスがあたっただけでチェックなどされない。
959 :
デフォルトの名無しさん :2009/09/20(日) 16:21:25
>>958 フォーカスが当たった時に
実際はチェックされていないのかもしれないけど、
見た目は点が付いてしまっているのを、
点が付かないようにできないのかな。
それぞれが独自の意味でフォーカスという単語使ってるせいで 意思の疎通ができてませんよお前ら
タブオーダーが最初だとチェックされるね。 まあAutoCheckはずしてclickイベントで自力でやるとか
962 :
デフォルトの名無しさん :2009/09/20(日) 18:46:56
タブが当たったときに、○に・がつかないようにしたいんだろ? javaではできるみたいだけどね。
ListView1にあるアイテムをListViewItemの配列にまとめて入れたいんですが foreachを使わないで簡単にできる方法ってありますか?
Items.Cast<ListViewItem>().ToArray()
965 :
964 :2009/09/20(日) 19:41:23
これだと新しい配列になるから駄目か
即レスどうもありがとうございました。
>>965 入れることができるなら新しくても何でも大丈夫です。
リムーバブルディスクなどを挿した時に走る自動実行を制御したいです。 ダイアログを出さないためにはレジストリをいじるしかないでしょうか。 作りたい機能としては、 shiftを押しながらリムーバブルディスクを挿すと自動実行のダイアログが 出てこないですが、それと同じように一時的に自動実行を無効にする 方法はないでしょうか。
>>969 さん
ありがとうございます。
自作のプログラムが常駐している間は自動実行を
無効にして、挿さったリムーバブルディスクに対して
やりたい操作をしたいので、今回お教えいただいた
方法は欲しい方法ではありませんでした。
LKCUじゃないや、HKCU
むしろTweakUIで十分じゃないかと思うなあ 再起動しなくて済む分だけ楽だし。 UI起動すらめんどいってほどの頻度で設定変更したいなら 特定アプリの特定項目を自動実行するようなユーティリティアプリを作った方が早い気がする。 //特定アプリのUI表示位置とかが変更不可能な場合に限るだろうけど
968です。 >971さん やはりレジストリをいじる必要がありそうですね・・ 調べた感じ再起動も必要みたいです。 簡単にはいかないですね。
968です。 >973さん 常駐プログラムがリムーバブルディスク挿しの監視 をして挿さった時にファイルコピーなどの処理をしたいので、 ユーザーが設定変更を意識しない方法をとりたいです。 自動実行を重宝しているユーザーも、もしかしたらいる かもしれないですし、この常駐プログラムが実行されている時 だけの設定変更としたいです。
>>975 そのリムーバブルディスクに何もしないautorun.infを作って入れておいたらどう?
上の方で、ラジオボタンとフォーカスの話があったけど マウスとキーボードの差に見えて仕方がない。
978 :
968 :2009/09/21(月) 00:07:22
>976さん リムーバブルディスクはユーザーが持っているものなので autorun.infなどは入れられません。 考えている仕様ですが ・常駐プログラムである ・ユーザーの持っている任意のリムーバブルディスクである ・ユーザーがリムーバブルディスクを挿したタイミングで走る ・挿した後自動でファイルコピー等の処理をする 以上のような仕様の場合、自動実行のダイアログが邪魔になります。
なんつーか、C#関係ないよね
980 :
968 :2009/09/21(月) 00:56:40
確かにそうですね・・・ C#を使っているので質問しました。 みなさんありがとうございます。
>>977 最初にTabStopの話しが出ているんだから、マウスとかカーソルキーとかは論外だろう
#if DEBUG #endif みたいなかんじで #if 発行 とやるにはどうやるんでしょうか?
# 日本語でOK
Dictionary<Key,Value>で特定のKeyがセットされてるかどうか調べるにはどうすればいいですか? if (Dictionary[key] == "") とするとセットされていないときエラーになります。 catchするしかないでしょうか?
ContainsKey
TryGetValueとかも。 というか、分からなかったら質問する前に、まずオンラインドキュメント読もうよ。
最近少し分かるようになってきたけど 初心者にはドキュメント自体が理解できないんだよな
確かに。しかし不思議なことにじきに理解できるようになる
989 :
デフォルトの名無しさん :2009/09/21(月) 16:34:00
Framework 2.0 compacktで 非同期要求のHttpWebRequest.BeginGetResponse でコールバックメソッドに処理が戻る前に System.UriFormatExceptionが出ます リクエストは通ってるようで、データは取れてるのですが、 HttpWebResponseになにかメッセージが入ってるのでしょうか? ヒントをお願いします
RFC 2396
991 :
デフォルトの名無しさん :2009/09/21(月) 17:00:28
エンコードチェックしてみます ありがとうございました
WebRequest.Createの段階でUriFormatExceptionが出ないのがやや不可解 AllowAutoRedirect=true、3xxで無効アドレスでも返されてるんだろうか
993 :
デフォルトの名無しさん :2009/09/21(月) 17:25:54
いえ、レスポンス見ると要求したURLから正常なデータが取れてます ステータスOKです 具体的には今は画像のダウンロードでやってますが、画像はちゃんと表示できます HttpWebRequestが勝手に再送信を要求して通ってる・・・わけはないですよね? なんだろうな
その例外ってcatchしないとアプリが止まっちゃう? それとも内部で出てるのがデバッグ出力に吐かれてるだけ?
パケット見てみれば?
996 :
デフォルトの名無しさん :2009/09/21(月) 17:40:01
>>994 後者です
catchでは掴まらずBeginGetResponseが処理を終わってコールバックメソッドに処理が戻る前に
デバッグ出力に出ます
>>995 パケット・・・
997 :
989 :2009/09/21(月) 17:42:41
ume
999
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。