[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 12:23 / Filesize : 230 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:41:44 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

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

前スレ
ふらっとC#,C♯,C#(初心者用) Part44
pc12.2ch.net/test/read.cgi/tech/1251439041/

804 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:06:05 ]
まず.NET Frameworkのクラスライブラリはインテリセンス環境で使うことが前提だから
やたら綴りが多くてとてもじゃないけどふつうのテキストエディタでは書いてられない。

805 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:10:47 ]
MonoDevelop

806 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:20:46 ]
それは秀丸+csc+NUnit+NAnt+NDocでグループウェア作った俺への挑戦だな。
っていうか、確かにシンどいです御免なさい勘弁してください。

ついでにサーバは秀丸+javac+JUnit+Antですた。御免なさい勘弁してください。

807 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:28:42 ]
C#のためにVisualC#が作られたというより,
VisualC#のために作られた言語だし

808 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:30:13 ]
ん?VisualC#の為じゃなく.NETの為に作られたのがC#だろ?

809 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:32:49 ]
実際VSとセットで設計されてるんだよ

810 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:42:44 ]
VisualJがクソミソにされたからブチぎれて大金かけてパクった言語ですが?

811 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:46:19 ]
はやくJava7出せよw

812 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:51:04 ]
Visual Jはこけてくれた良かった。
お陰でC#という最高の言語の一つが出来たのだから。



813 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:54:51 ]
Java7大したもの実装されなそうなのに何であんな時間かかってるんだろうな
正直言って見限り気味

814 名前:739 mailto:sage [2009/10/13(火) 23:08:53 ]
>>797
ありがとう参考になった。sendinputは使ってなかったわ

とりあえず今日も一日頑張ったけど無理だった。方法としては
・フォームをKeyPreview = trueに設定する⇒特殊アプリ(swfとか)には無効
・KeyDown += delegate(object o, KeyEventArgs e)の後に普通に
 ActiveControl = swf1;
 ActiveControl = swf2;と処理⇒片方しかキー処理しない
・上記のswf2をスレッド処理⇒片方しかキー処理しない

そもそもキーの渡し方がわからんかったからこんな変な処理になった
もうお手上げ\(^o^)/

815 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 23:44:21 ]
質問させてください。Excelに差込印刷をしてみたいので
C#が良いと後輩に教えてもらいました。

部下に指示するにしても、自分でまずやったほうがい良いと思い書き込みしてます。

どうやればいいでしょうか?

816 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 23:53:16 ]
>>815
騙されてるよ。
C#はCOMと相性が悪い。
普通にVBAでいい。

817 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 23:56:32 ]
>>815
お前は部下持ちなのに、自分の頭で考える能力も経験もないのか?

818 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 23:57:49 ]
>>816
なるほど。VBAを購入してマスターすればいいのですね。
大変参考になりました。60点です。

819 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 00:01:49 ]
>>818
おまえは0点だよw


820 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 00:08:14 ]
>>798
ふぅ〜む……。
Vistaでは標準で入ってるけどXPでは.NET Framework 3.5に同梱かぁ。
COMベースであるところが気に入らないが、HD Photoも対応してるようだし
サードパーティーが拡張できるようにすること前提になってるようだし、興味深いな。

WIC、使ったことある人があれば感想とか聞いてみたいね。

試して見る価値はあるような気がする。ありがとう。
ただ自分の使いたい用途とは必ずしも一致しない。
System.IO.Stream系で1行あたりのバイト数で区切られた
長方形状のメモリに直接読み書きできるようなクラスがあれば
それの形で実装できればなと思ってる。

821 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 00:08:50 ]
>>818
VBAを購入するのか
大変だなw

822 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 03:10:31 ]
あまりに初歩的で申し訳ないのですが

たとえばApplication.cs から Option.cs を開くために
Application.cs[Design] で Option 項目を作成し
クリックされた時のイベントに何を書けば
Option のウィンドウを開くことができるのでしょうか?



823 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 04:29:07 ]
アプリケーションの作成手順が知りたいんだけど

例えば、URLを右クリックして保存する時に出てくるウィンドウを設計する場合

まず、フォームにコンポーネントを追加していって
作業に必要なデータセットをつくって
次はイベント処理を作っていくのが一般的?

824 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 06:31:22 ]
そんなんでデータセットなんて使わんだろ。

825 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 08:41:16 ]
>>822
Application.csからOption.csを開くって何?
C#ではソースコード同士を開いたりという概念は無いよ。
(コンパイルしたら実行時には関係なくなるから)

それから、その2つはFormを定義してるのかな?
それなら、そんなクラス名をつけるのはあまり一般的ではないよ。
Formクラスを継承するんだらMainFormとかそういう名前をつけるといい。

ちょっと基本的なレベルで突っ込みどころが多すぎるので、
まずは教科書どおりに書いてその意味を考えてもらえないだろうか。

826 名前:815 mailto:sage [2009/10/14(水) 10:03:19 ]
今日、部下に相談したら「私がやりますから」って不機嫌そうな顔をしてたので
彼は左遷だと社長に直訴しました。私をだれだと思ってるんだまったく。

827 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 10:07:28 ]
>>826
お前論外。カエレ

828 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 10:08:21 ]
まさかとは思いますが、この部下とは、あなたの想像上の存在にすぎないのではないでしょうか。

829 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 10:20:46 ]
たぶん自分が上司という設定も想像上

830 名前:デフォルトの名無しさん [2009/10/14(水) 11:35:19 ]
みんな何と戦ってるんだ……

831 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 12:13:59 ]
>>826
おまえみたいな仕事の出来ないSEが多くてかなわん

832 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 12:48:05 ]
そうだ、その席俺によこせ



833 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:26:51 ]
>>825
レスありがとうございます。
共にFormクラスを継承していますので名前を変更しました。

まず、MainFormを作って次にOptionFormを作った場合
実行するとMainFormのみ表示されます。

実行時にOptionFormを表示するにはどのようにすれば良いのでしょうか?

834 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:30:57 ]
OptionFormをいつ表示させたいの?
MainFormの代わりならnew MainForm() してるとこを探してみそ。

任意の時点なら、new OptionForm()して.ShowDialog()とか

835 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:31:42 ]
ソースコード全部漁るとMainメソッドでApplication.Runを実行している所がある
そこで引数として渡すFormを変更する

836 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 15:26:29 ]
>>834
できました。ありがとうございます。

837 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 20:32:33 ]
abstract class Foo}

838 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 20:47:28 ]
コンパイルエラーになりますた


839 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 20:52:25 ]
public abstract class Foo{}
public class Bar:Foo{}
public class Baz:Foo{}

public class BarContainer{
public List<Bar> Children;
}

public class BazContainer{
public List<Baz> Children;
}

というクラスがあって、BarContainer と BazContainer の両方を扱えるように、

interface IParent<T> where T:Foo
{
List<Foo> Children;
}

public class BarContainer:IParent<Bar>{
public List<Bar> Children;
}

というのを定義したんですが、
var x=(IParent<Foo>)(new BarContainer());
とはできないんですね。

なんかいい方法ない?


840 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 20:55:03 ]
public abstract class FooContainer {

841 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:01:02 ]
>>839
msdn.microsoft.com/ja-jp/library/ms228359.aspx
その問題についてはこの記事が詳しい
MSDNの中でも指折りの良質な記事だと思う

842 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:21:22 ]
単純に
public abstract class Foo { }
public class Bar : Foo { }
public class Baz : Foo { }
interface IParent<T> where T : Foo {
List<T> Children { get; set; }
}
public class MyContainer<T> : IParent<T> where T : Foo {
List<T> lis;
public List<T> Children {
get { return lis; }
set { lis = value; }
}
}
class Program {
static void Main(string[] args) {
var x = (IParent<Foo>)(new MyContainer<Bar>());
var y = (IParent<Foo>)(new MyContainer<Baz>());
}
}
という話ではないのか?と思ったんだが、違うのか。



843 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:25:35 ]
一見正しそうに見えるけどコンパイル通らないよそれ
理由は>>843を嫁

844 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:27:37 ]
こんにちは

質問があります。
今座席表を簡単なものを作っています。

ラベルで席の場所を作り、その中に名前を入れておくのですが
このときの名前はForm2にメンバー表をテキストボックスで作っておき
それに対応したラベルをForm1で参照して表示にしようと思っています。

そして、Form2のテキストボックスの名前を変えて保存ボタンを
押せば簡単に席替えしたときに変えられる
と言うな物を作りたいのですが。

@Form1からForm2のテキストボックスが参照できない
Aexeで起動したときテキストボックスの中身を入力で替えたとき
保存は出来るのか?

以上を教えてください。なお、あまりよくない作りになりそうでしたら
そこも助言いただけるとうれしいです

845 名前:839 mailto:sage [2009/10/14(水) 21:32:23 ]
みなさまレスありがとう。
>>840
ごめん、サンプルでは簡略化のために省きましたが、
Bar/BazContainer には基底クラスがあるので、その手は使えないっす。

>>841
ビンゴなレスありがとう。お礼にフェラチオしてやりたいくらいだ。
でも、記事内容がちょっと俺には高度っぽい。
理解できるだろうか。

>>842
>System.InvalidCastException はハンドルされませんでした。
>Message="型 'ConsoleApplication1.MyContainer`1[ConsoleApplication1.Bar]' のオブジェクトを型 'ConsoleApplication1.IParent`1[ConsoleApplication1.Foo]' にキャストできません。"


846 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:33:25 ]
>>844
フォーム等の特定の入出力に依存しない座席表クラスを作って,
そのインスタンスを両方のフォームから参照する。
保存や読み込みもそのインスタンスだけ。

847 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:38:38 ]
>>839
よく見てないけど、
C#4.0でサポートされるジェネリックの共変・反変性と関係するのかな?
ちと調べてみる。

848 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:40:23 ]
関係は大いにあるけどC#4.0では解決しない
List<T>は書き込みと読み取りの両方の操作をサポートしているので共変も反変も使えない

849 名前:842 mailto:sage [2009/10/14(水) 21:48:14 ]
なるほど、だから >841 なのか。納得しました。

850 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:53:51 ]
>>846
なるほどテキストボックスとかで貼り付けたのを使うのでなく
あくまでもプログラムで参照させるやり方ですね?

初心者で申し訳ないですが

座席表クラスには座席番号と氏名を入れて
それを対応したラベルなりに表示させるようにして
変更時は
Form2に保存ボタンを作り名前が入ってるテキストボックスに入力させて
ボタン押してプログラムに上書きをさせていく感じでしょうか?

一応座席が76個ほどあります・・・・
初心者ですいません。

851 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 22:30:41 ]
>>850
初心者スレで初心者ですみませんとか何度も言われると煽られているのかと思ってしまう。

それはさておき、>>846の言うことがよく理解できないなら
テキストボックスを参照させたいならテキストボックスのアクセシビリティを
デフォルトの private から internal とかに上げる方法もある。

852 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 22:41:45 ]
こないだわからないことがあったんで質問します


<asp:FormView ID="formView1" runat="server">
<ItemTemplate>
      ・・・・
<asp:Panel ID = panel1 runat="server">
・・・・

コードの概要は上記のような形で.cs側でpanle1のvisibleを制御したいんだけどやりかたがわかりませんでした。
調べたら恐らくできるんだろうことはわかったんですが・・・

試したことは

 Panel pnl = (Panel)formview1.findcontrol("panel1");
   これでpnlがnullになってしまいます

 Panel pnl = (Panel)formview1.row.findcontrol("panel1");
   rowに何もはいってません

なんか推測でも理由分かる人いたらおねがいします







853 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 22:42:55 ]
>>850
一個一個入力という意味?それでも問題ないけど。

一例として入力フォームはダイアログボックスとして席の位置に76個のテキストボックスを配置。
モーダル表示した時に846の座席表クラスの76個のString(配列とかリストとか)からそれぞれ貼り付け。
変更後にOKボタンで逆に座席表クラスに取り込む。Cancelなら内容は破棄。
なんてのはどう?

モーダルにしない場合、他の画面で更新かかったときに動的に書き換えたりと初心者の範疇を越えてしまう。

854 名前:850 mailto:sage [2009/10/14(水) 23:04:07 ]
>>851
ごめんなさいそういうつもりは一切ありません。
言わんとしてることは分かるのですが、どうも説明したり
口で言うのが苦手なのでうまくまとめられてないです。

internal明日会社で調べてみます!ありがとうございます。

>>853
ダイアログ使ったことないんでちょっと調べてみて
参考にしたいと思います!

しない場合は難易度アップなんですね・・・
明日会社で検討してみます!
ありがとうございます。

またクルかと思いますが申し訳ないですがそのときはよろしくお願いします。

855 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:19:30 ]
C#, C♯, C#相談室 Part54 で質問したんですが
スレが終了してしまったのでこちらで再質問させていただきます。
-------------------------------------------------
ArrayList.Add でリストの最後ではなく
リストの最初に追加するにはどうすれば良いですか?
-------------------------------------------------

995 名前:デフォルトの名無しさん[sage] 投稿日:2009/10/14(水) 20:20:40
関係ないけど今更ArrayListなんか使うな

1000 名前:デフォルトの名無しさん[sage] 投稿日:2009/10/14(水) 20:47:19
List<T>

というレスをもらいましたが、Listでも
リストの最初に要素を追加する方法はわかりませんでした。
回答いただけたら大変助かります。

856 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:25:16 ]
C#, C♯, C#相談室 Part55
pc12.2ch.net/test/read.cgi/tech/1255530225/

立てといた

857 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:26:05 ]
>>855
994でレスもらってるじゃねーか

>>856


858 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:26:40 ]
>>855
list.Insert(0, x);

859 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:27:02 ]
994 名前: デフォルトの名無しさん [sage] 投稿日: 2009/10/14(水) 17:28:58
Insert

↑なんでこれみてないの?これ答えたの俺じゃないけど、答えそのままじゃん。
List<T> でも同じ名前と同じやり方だよ。

860 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:28:01 ]
45→55ってどういうこと?

861 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:28:40 ]
バージョンアップ

862 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:32:26 ]
一瞬立て間違えたかと思ってビビった



863 名前:デフォルトの名無しさん [2009/10/14(水) 23:38:18 ]
>>859
アンカーも付いてないのになんでもくそもないわ。
答える側の能力が低いだけだ。

864 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:44:04 ]
質問の直後のレスで、その言い方はないわ
ほかに混同するレスもないのに

865 名前:デフォルトの名無しさん [2009/10/15(木) 00:02:10 ]
c:\data\a\good01.jpg
c:\data\a\bad02.jpg
c:\data\a\other03.txt
c:\data\b\good04.jpg
c:\data\b\bad05.jpg
c:\data\b\music06.mp3
c:\data\c\good07.jpg
c:\data\c\bad08.jpg
のような構造から、goodのjpgだけ抜き出したいと考えました。
string[] photofiles;
string[] allphotofiles = Directory.GetFiles(@"c:\data", "*.jpg", SearchOption.AllDirectories);
string photolist;
foreach(string allphotofile in allphotofiles) {
if (allphotofile.Contains("good)){
photolist = photolist + allphotofile + "\n";
}
}
photofiles = photolist.Split('\n');
でできているのですが、ひどく無駄な処理をしている気がしてます。
こういうときに、LINQを使うとスマートになるんですか?


866 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:07:43 ]
何が「ひどく」とまでいうほど無駄と感じるわけ?
別にLINQ使ったからって大して変わるわけでもないけど。

867 名前:デフォルトの名無しさん [2009/10/15(木) 00:13:15 ]
配列に入れたものを文字列にして、
もう一度配列にしているのが無駄な気がしてます。
直接配列に入らないのかな〜と。
あと、LINQはこのあいだ盛り上がっていたのと、
まだ使ったことがないので、なんとなくあこがれて。


868 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:15:52 ]
yield returnだろうとLINQだろうと配列コピーだろうとなんだろうと
目的の機能を達成すれば全ておk
好きな方法を使え

869 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:17:04 ]
>>857>>858
あ、ほんとだ。
すいません、2回ぐらい見たはずなのに
自分へのレスだと気づけませんでした…。

870 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:17:55 ]
Directory.GetFiles(@"c:\data", "good*.jpg", SearchOption.AllDirectories);

こうはできないんだっけ

871 名前:デフォルトの名無しさん [2009/10/15(木) 00:27:43 ]
>>864
まあそうなんだけどさ、それは分かってる側の理屈だよね。
もちろん答える側の自由なんだけど、せっかく答えたのに
相手に伝わらなければもったいないよ。
質問内容で明らかにかなりの初心者だってわかるんだし、
その僅かな気配りが出来るか出来ないかで能力に雲泥の差が出るよね。

872 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:27:52 ]
var files= Directory.GetFiles(@"c:\work", "*good*.jpg", SearchOption.AllDirectories)
.Select(f => new FileInfo(f));
でできるよ。



873 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:36:25 ]
わかってる、というより質問しといて新しいレスが増えたのに、
自分宛じゃないからって無視する精神の方がおかしいわ

874 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:37:17 ]
コードは、な

875 名前:874 mailto:sage [2009/10/15(木) 00:39:37 ]
ごば

876 名前:デフォルトの名無しさん [2009/10/15(木) 00:47:05 ]
>>873
うん、だからさ、その程度の事はアンカーを付ければ
簡単に避けれるのは理解できるかな?

決して気づかなかった無能な初心者を庇っている訳ではないんです。

877 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:54:40 ]
>>876
まあ、日本人は説明能力が欠如してる人間が多すぎるからね。

質問側にも回答側にも、本人とエスパー以外に読解不可能な文章を平気で書いて
それで人に伝わるつもりになってる奴が多すぎる。
明らかに教育の問題だな。

まあ、君がもし回答者は質問者に親切に<すべき>と思ってるなら、
そういうクレーマーチックな押し付けがましい考えもどうかと思うけど。

878 名前:デフォルトの名無しさん [2009/10/15(木) 01:12:38 ]
質問です。
病院、診療所の検索システムを作成しています。
病院の検索ボックスに、例えば「ちゅうおう」と入力すると、
文字列変換前に、右手のパネルに「ちゅうおう」のフリガナを含む全病院、診療所が表示され、
そこで、Enterキーで確定させる前に、
Tabキーまたは右カーソルキーの押下で右手のパネルにフォーカスを移したいと思っています。
Enterキーで確定後に右手にフォーカス遷移させることはできたのですが、
確定させる前の、入力文字列に点線の下線がある状態で、
Tabキーまたは右カーソルを検出し、フォーカスを移動させたいんです。
それは可能でしょうか?
もしできるなら、どのようなコーディングになるのでしょうか。
教えてください。よろしくお願いします。

879 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 01:39:01 ]
2ちゃんでの答えに説明力不足もくそもない。
直後に書いた答えに説明力不足もくそもない。
一言使うメソッド教えるのに説明力不足もくそもない。
読解不可能な答えでも何でもない。


880 名前:デフォルトの名無しさん [2009/10/15(木) 01:45:05 ]
>>872
System.IO.FileInfoって、配列じゃなくない?
>>870
できそうなのですが、条件を間違えてました…。
c:\data\a\good\photo01.jpg
c:\data\a\bad\photo02.jpg
c:\data\a\other\text03.txt
c:\data\b\good\photo04.jpg
c:\data\b\bad\photo05.jpg
c:\data\b\music\music06.mp3
c:\data\c\good\photo07.jpg
c:\data\c\bad\photo08.jpg
でした。
Directory.GetFiles(@"c:\data", @"\good\*.jpg", SearchOption.AllDirectories);
とかやったけどだめっぽい。


881 名前:デフォルトの名無しさん [2009/10/15(木) 01:49:10 ]
>>879
後輩に嫌われそうなタイプだなw

882 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 01:51:35 ]
自アプリ以外から起動したinternet explorerの特定のタブのHtmlDocumentを取得するのって自前でCOMの処理書かないと無理なの?
簡単にアクセス出来るクラスとか無いの?
COM使った実装は実現出来ているんだけどもっと簡単な方法が無いかなって思っての質問だけど



883 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 01:54:48 ]
少なくとも標準ライブラリにはない
Shell32とか使えば多少は楽になるかも知れんがまあ大差なかろ

884 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 01:56:14 ]
>>881
ここは2ちゃん


885 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:00:53 ]
>>883
サンクス
なんかこの当たりもっと対応して欲しいよね
C#は先進の技術で作られているのにM$純正のアプリですらレガシーな技術を使わないとアクセス出来ないとか意味不明すぎる
IEに至っては構造が歪すぎて本来COMで提供されているべき機能がWindowMessageを使わないとアクセス出来ない機能まであるし

886 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:03:40 ]
>>880
パスに含まれる、ならそりゃ第二引数は使えない これはファイル名のフィルタだから
Whereなりif文なり自分で分けるしかないな

Selectは型の変換 IEnumerable<TInput>をIEnumerable<TOutput>にする
GetFilesならstring[] : IEnumerable<string> で、
SelectでそれぞれのstringがそれぞれFileInfoに置き換えられてIEnumerable<FileInfo>を返す
まあFileInfoがいらないならこのSelect文は不要だな

取り敢えず\nでくっつけて後でSplitはあり得ない
List<string>にAddしていくようにすれば良いんじゃね

887 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:05:38 ]
>>885
他のプロセスの内容をのぞき見るとか、マネージドという方向性とは正反対じゃねーか

888 名前:デフォルトの名無しさん [2009/10/15(木) 02:08:14 ]
>>884
それも含めて言ってる

889 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:11:45 ]
>>887
いやいやw自分のアセンブリから他のアセンブリのパブリックメソッドを呼び出すのは実にマネージド的じゃんw
IEがアセンブリでちゃんとそう言うメソッドを公開していれば
ブラックボックスになっている他プロセスをわざわざ覗き見る必要なんてないじゃんかよ?w

890 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:21:11 ]
>>880
・GetDirectories()→GetFiles()の2段階にする
・条件緩めてGetFiles()→自前でフィルタ
のどちらかだろうな

とりあえず前者をLINQで書いてみた (SelectMany便利だねぇ)

Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
    .SelectMany(d => Directory.GetFiles(d, "*.jpg"))

891 名前:デフォルトの名無しさん [2009/10/15(木) 03:17:44 ]
>>886
\nでくっつけて後でSplitはあり得ない
自分でもそう思います。はい。レベルアップしたいです。
List<string>を試してみます。
List<string>って、ListBoxと扱いはいっしょ?

>>890
これがLINQですか…。
string[] photofiles = Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
.SelectMany(d => Directory.GetFiles(d, "*.jpg"))
だと、
型 'System.Collections.Generic.IEnumerable<string>' を 'string[]' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
なんですけど、この変換が、886さんのいう型変換ですか?


892 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 04:07:29 ]
ToArray()でクエリを評価して結果の配列を受け取ればおk
列挙子(IEnumerable<string>)が返されるってのはLINQの重要なポイントなんで、今は分からなくとも頭の隅に置いとくといい。

string[] photofiles = Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
.SelectMany(d => Directory.GetFiles(d, "*.jpg")).ToArray();



893 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 06:05:10 ]
>>891
個人的な意見だが
今のレベルではLINQ理解しようとしてもただただ混乱が増えるだけに見える。

勉強目的ならば、Listを使って>>865を改善できるように頑張った方がいい
LINQにこだわりたいのならば、誰かに作ってもらった動くものを
今はコピペするだけにとどめておいた方がいい
と思う。


あと変数名の付け方もちょっと気になる

894 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 06:26:23 ]
>>880
ToArray()

もうちった勉強しろ

895 名前:デフォルトの名無しさん [2009/10/15(木) 06:42:22 ]
>>878
ですが、どなたかご存知ではないでしょうか?
これができれば使いやすくなるのですが…。

896 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 07:07:22 ]
右パネルに移動したとして検索フォームには何も入力されないまま?
というかそれ使いやすいか?

897 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 07:16:59 ]
昔はImmほにゃらら関数とWM_IME_COMPOSITIONで可能だった
今はどうだかしらんが

898 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 08:15:47 ]
>>878
そんなIMEの実装に依存するような動作はやめたほうがいいと思う。
MS-IMEは変換中のキー入力の起動を任意にカスタマイズできるし、
ほかのIMEが入ってる環境ならなおさらだ。

899 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 09:19:57 ]
>>876
?

900 名前:デフォルトの名無しさん [2009/10/15(木) 11:21:29 ]
>>878
表示される文字とは別にKeyDownイベントで
キー入力だけチェックするのはどうよ

「ちゅうおう」って打ってる後ろで
[chuuou]って取得しつつ検索結果を常に別窓に表示する

901 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:00:03 ]
>>878
個人的には>>898,896と同感

あと
>右手のパネルに「ちゅうおう」のフリガナを含む全病院、診療所が表示され、
って、それは読み仮名検索を実装していて病院名検索とは別のもの、ってこと?


>>900
それは、後々整合性保つのがめんどくなっていくと思うなあ

902 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:05:53 ]
今議論してる話は、Youtubeの検索欄が実現できてるな。
(どうやってブラウザで確定前の入力が取れるのかが激しく謎だが)

便利かなと思わないでもないが、確定前に候補が出てくるので
今入力中の検索ワードを確定したらいいのかせんでいいのか迷ってしまう感じ。



903 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:20:26 ]
というか、googleのインクリメンタルサーチだと思ったが
いやまあ根本的に同じものなんだけどさ
まあアレはブラウザのサイズによってはすごくキモイ挙動になるけど・・・
クリックでも、確定してから矢印キー操作でもお好きな方でどうぞ。

ブラウザ上だったら、タイマー使って簡単に実現できるよ
DOMからvalueの中身を見るだけで未確定でも取ってこれる。

904 名前:デフォルトの名無しさん [2009/10/15(木) 12:48:44 ]
少し逸れた質問かもしれないが、変換ツールがIMEかそれ以外かを判定しる方法ってありますか?







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef