ふらっとC#,C♯,C#(初心者用) Part58
次期バージョンって稟議書どうやって書こうかな、 みんなはどの時点で移行するの? まだまだ2005が現役?
ちょっと質問してもいいかな?
3サイズは禁則事項です
普段よくやる手作業を自動化するツールをいくつか作ったんだが ぐぐればもっと性能のいいツールが山ほどあっておれしょんぼり
そこであきらめると、その程度だけどその先も面倒をみれば勉強になるし 化ける可能性もあるけどな その程度と思うのが開発者にとってはマイナスかもね
ちょっとした定型処理はスクリプト言語で書いちゃうな
コメントの書式を揃えるとか、 インデントをきちんとつけるとか、 忙しいときに限って本質的じゃない部分が気になって 手作業で直し始めちゃうんだよな
11 :
デフォルトの名無しさん :2010/04/08(木) 10:53:12
C#にsilverlightSDKをインストールしたけど 新しいプロジェクトにも参照にもそれらしいのが見当たりません
>>7 最近プログラミング始めたからほんとしょぼいソフトばかり
・ファイルを削除するとそのファイルパスをリストに書き込む
・自動で書庫ファイルを展開し、指定の画質、解像度にエンコード後、書庫に圧縮する
・任意のフォルダを監視して自動で任意の画像形式変換
・空白によるAndやOr検索 対象はファイル、フォルダ、テキストコンテンツ
・2ちゃんから画像やログ収集、タイマー可
・書庫内も見れる画像ビュアー
・ウィンドウサイズ、場所を指定できるランチャ
・クリップボードを監視して文字列から単語を抜き出しリストに表示し、
単語をクリックするとファイル、ファイル内文字列から検索して表示
・フォルダ名を検索文字列として、指定したフォルダのファイルを自動仕分け
フォルダ名が固有名詞で多数ある場合、毎回設定する必要が無いから重宝する
こんな感じ
VSで使いたいならVisual Studio 2008 SP1 用 Microsoft Silverlight 3 Toolsをインストールする。 SDKは上記に同梱されてるので不要。 ただしExpressの場合はVC#ではなくVisual Web Developperが必要なので注意。 それと今から始めるならVS2010RC+Silverlight4RCで先取りしたほうがいいかもしれない。 Silverlightに関しては古いバージョンを使う意味は全く無いからね。
2008はSilverlightのXAMLデザイナが使えないからやめとけ 2010には最初からSilverlight3が入ってるし別途4もインストールできる
Windows7のリソースモニターの機能をC#使って自作プログラムから利用することはできますか?
ジェネリック型について質問があります。
渡される型はInt32等の基本データ型のみという前提で
以下のコードのようなことをしたいのですが、
個別の型用にコードを書く以外に何かいい方法はありませんか?
ttp://ideone.com/lGbZv
string drivename = ((new DirectoryInfo(dir)).Root).Name; こういう書き方しちゃったらまずいですか?
まずい以前に、なぜPath.GetPathRoot使わないんだよ
>>18 ジェネリックはやめてBuffer.BlockCopy使え
くそおおおおおおおおおおおおおお こんな便利なクラスあるの今まで(5年間)知らなかったくそおおお!!! Path.GetFileNameWithoutExtension これ表現するのにいちいちFileInfoしてSubstringで拡張子抜いてたおおおおお
センスゼロだな死ね
25 :
デフォルトの名無しさん :2010/04/08(木) 23:37:17
あるプロのコーディングにDataGridViewにDataSetをバインドしているものがあります。 そのソースでは、 BindingSourceであるDataSetのの1行を消したあとに、 SuspendBinding命令があり、 直後に ResumeBinding命令を書いていました。 なぜSuspendBindingとResumeBindingを続けて記述するのでしょうか?
ヘッダがあるから
コマンドラインでファイルを渡す時 ファイルのパスが長いと通らないみたいなのですが コマンドラインでパスを送る場合は特別な処理が必要なのでしょうか?
OSの制限だから気を揉むのを止めるべき
29 :
デフォルトの名無しさん :2010/04/09(金) 02:14:26
>>26 すみません、ヘッダとSuspendBindingはどのようなつながりがあるのでしょうか?
30 :
デフォルトの名無しさん :2010/04/09(金) 11:16:16
C#で作るWebアプリってのは javaのようなクライアント側アプリが基本でしょうか? PHPみたいなサーバー側アプリってのも簡単に出来ますか?
作るのは簡単 動く環境を用意するのがめんどい ASP.NETが動く貸し鯖を知らない 誰か教えろ
Java「も」っていうかサーバー側のが多いだろ
Javaはクライアント側では成功しなかったよね アプレットとかもあたけどさw 今残ってるのはアプレットが流行った時代に量産された エロ系ゲームくらいかw ダウンロードソフトはJavaのやつ使ってるくらいだな
36 :
デフォルトの名無しさん :2010/04/09(金) 12:01:16
SQLserverがどうしてもインストール出来ないんでもうあきらめるとして 2008expressでデータベースを使うのはどれがいいですか? ひょっとしてLINQだけで充分? イメージ的にLINQってオンメモリで使えるという感じなのだが・・・・
雰囲気だけでいいならsqliteでも使えば
JREは一般ユーザに嫌われるからな .NETの比じゃない
ただ言語その物はアンドロイドの開発で少し戻るのかね? コードその物はJavaでかけるんでしょ?
AndroidはHTML5+JavaScriptを優先していってJavaやネイティブは無くす方向だろ
そうなのかね? というかネイティブ用の開発にJavaが使えるってなかったっけ? あくまでコーディングに使ってるだけで実際のところはコンパイルの 過程で変換掛けてネイティブにしちゃうらしいけど
Googleは将来的にはなんでもかんでもウェブアプリにシフトさせようという方向なんだよ Androidでネイティブアプリ使えるのはつなぎ
>>42 それは困るなあw
広告収益でなんとでもなるグーグルは自社のサービスに貢献するだろから
コード丸見えのhtml5やjsでもいいだろうけどさw
45 :
デフォルトの名無しさん :2010/04/09(金) 14:38:28
・間違えてる ・消し忘れ ・たまたま適当にいじったらうまくいった
試しにSuspendBindingとResumeBindingをコメントアウトして実行してみて、
それでうまく動くようなら
>>46 の通り消し忘れなんじゃない?
動かないならResumeBindingを呼んでバインディングを即時反映したいのかなという気がした。
本当に即時反映されるのかどうかは試してないけど。
48 :
デフォルトの名無しさん :2010/04/09(金) 18:47:03
C#でスタートボタンを押してスタートメニューを開くにはどうしたらいいでしょう? ふだんタスクバーを隠しているのですが、たまにスタートメニューが必要なことがあるので、C#からスタートメニューを開きたいと思いました。
>>48 メニューの中の項目をexplorerで開けばいいじゃない
50 :
デフォルトの名無しさん :2010/04/09(金) 19:32:33
>>49 個々に開くことはできるのですが、メニューをたどった方がなれている場合もあるのと、全機能を実装するのもめんどうなので、スタートメニューをと考えています。
SendKeys.SendWait("^{ESC}");
としてみたのですが、これではだめでした。
普通だと、タスクバーの部分に近づけると、隠していてもタスクバーが開くので問題がないのですが、キーボードレスのマシンでの運用のため、一度タスクバーを隠してしまうと、手も足もでない状態になってしまいます。
スタートボタンって、Explorerのどこかのファイルなんですか?
よろしくアドバイスお願いします。
>>50 メニューはウインドウズマークだろ
あとSendKeysってざっくりとしたキー送信しかできないし
SSとったりする場合は結構失敗するようないい加減なものだぞw
>>52 うんまあ^がきになったけどSendKeys=糞と思ってるので気にしなかったw
すまんすまんw
ちょっと昔作ったソース探してくるわ
多分APIを呼ばないとまともに操作できなかったはず
お前が糞じゃん
やっぱuser32.dll使ってkeybd_eventで処理してたわ
56 :
デフォルトの名無しさん :2010/04/09(金) 19:52:41
>>53 、55
ありがたい。
具体的に、よろしくお願いします。
>>56 ざっくり抜き出してきたので後は自分で改造してくれ
class SendKeyCode
{
    [DllImport("user32.dll")]
    public static extern uint keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
    const byte VK_SHIFT = 0x10;
    const byte VK_CONTROL = 0x11;
    const byte VK_MENU    = 0x12;
    const byte VK_LWIN    = 0x5B;
    const byte VK_RWIN    = 0x5C;
    const byte VK_APPS    = 0x5D;
    public void Sendkey(byte Code)
    {
        #region 特殊キーダウン処理
        keybd_event(VK_SHIFT , 0, 0, (UIntPtr)0);
        keybd_event(VK_CONTROL, 0, 0, (UIntPtr)0);
        keybd_event(VK_MENU, 0, 0, (UIntPtr)0);
        keybd_event(VK_LWIN, 0, 0, (UIntPtr)0);
        #endregion
        keybd_event(Code, 0, 0, (UIntPtr)0);
        keybd_event(Code, 0, 2/*KEYEVENTF_KEYUP*/, (UIntPtr)0);
        #region 特殊キーアップ処理
        keybd_event(VK_SHIFT , 0, 2, (UIntPtr)0);
        keybd_event(VK_CONTROL, 0, 2, (UIntPtr)0);
        keybd_event(VK_MENU, 0, 2, (UIntPtr)0);
        keybd_event(VK_LWIN, 0, 2, (UIntPtr)0);
        #endregion
    }
}
>>57 SendKeys.SendWait("^{ESC}");
の代わりに
Sendkey(VK_CONTROL + "{ESC}");
としてみるだけじゃだめですよね?
>>59 さあw
俺が調べたときは3つくらい方法があったけどその中で
>>57 選んだからなあ
というかこれだけヒント出したのに後は自力でなんとかできるだ
俺なんてふらっとかもう一つのスレで冷たくされて自分で調べたぞw
>>61 あとはIME関連の操作がわかればなあ・・・あれが完成するんだが
>>60 そこで出し惜しみしなくても。
どーんと出すのがふらっとだと。
>>60 当たり前だろC#と関係ないんだから
W32APIスレにでもいけよって話
アルファベットの全数をファイルに書き出すにはどうすればいいですか? a,b,c,d,e....ab,ac,ad,ae....のような感じです。 ググっても数字の全数はあるのですが、アルファベットの全数はありませんでした。 やり方や参考になるサイトがあれば教えてください。
何桁まで続ける気だよ
>>67 数字ってのは10進数だろ?それを'z'-'a'進数に変えればいいだけだ
もう難しく考えるな
すさまじい数が書き出されるような
>>71 FlashとまとめてAppleに禁止にされたよ
つまり…どういうことだってばよ……?
さすがアップルだ クズめw
MSだったら独禁法違反で制裁金課せられてたな。
MSは迎合するし妥協するしw ある意味情けなくもある
>>60 やっと自己解決しました。
すげ〜時間がかかってしまいました。
keybd_event(Code, 0, 0, (UIntPtr)0);
keybd_event(Code, 0, 2/*KEYEVENTF_KEYUP*/, (UIntPtr)0);
のCodeに、かなを入れたりすると、五十音キーボードを作れますか?
「あ」はなにになるんでしょう?
あと、五十音キーボードをつくったら、メモ帳とかに入力したいと思いますが、このFormがアクティブだと、メモ帳には入力できないと思いますけど、そこはどう指定するんでしょうか?
>>78 作れるよ
といか
>>65 のフリック入力用のプログラム作ったから教えれるわけで・・・
眠いので詳しいことはまたおきてからかな
ヒントとしては
・ローマ字入力モードで出すならaのキーコードを送る
・かな入力モードならテンキーじゃない方の3を送る
ここまでは余裕なんだがソフト側からIMEの状態をモニターしてIME起動したり
モード切替したりがうまくいかなくて
>>65 は未完なんだよな・・・
手動でIME起動しておけば問題なくコード拾うんだが
>あと、五十音キーボードをつくったら、メモ帳とかに入力したいと思いますが、 >このFormがアクティブだと、メモ帳には入力できないと思いますけど、そこはどう指定するんでしょうか? この辺もまた起きたらね・・・
82 :
デフォルトの名無しさん :2010/04/10(土) 10:33:37
JAVAで作成できる業務アプリケーションは、大抵、大して変わらない労力でC#でも実現できるものなのですか? プログラム講習を受けたけどピンときません。
ヤッテミレバイイジャナーイ
>>79 とりあえず、Windowsのキーコード一覧は調べました。
シンボリック定数名 10進数の値 16進数の値 キーの説明
VK_A 65 0x41 Aキー
とか
かな入力モードなので、QWERTYで「あ」の「3」を入れればよい、ということですね。つまり、
keybd_event((byte)Keys.VK_3, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.VK_3, 0, 2, (UIntPtr)0);
ってことですか。
これだとQWERTYでシフトケースにある「ょ」とかを入れるときにめんどうそうなので、Unicodeのコードを直接というほうがよさそう。
「あ」だと3042なんでしょうか。
確かめたいけど、スタートボタンと違って、まずはこれを文字として表示する部分がないと、表示もできない。
textbox.text = keybd_event((byte)Keys.VK_3, 0, 0, (UIntPtr)0);
とかでいいんですか?
>>84 自分の作ってるプログラムにとりあえずテキストボックス貼って
そこへキーコードが飛んでくるか確認すればいいんじゃね?
>>85 それを試そうと思ったんですけど、ボタンを押すと、テキストボックスにフォーカスがなくなってしまうので、確認できないのです。
ちなみに、
keybd_event((byte)Keys.VK_3, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.VK_3, 0, 2, (UIntPtr)0);
ではだめで、
keybd_event(51, 0, 0, (UIntPtr)0);
keybd_event(51, 0, 2, (UIntPtr)0);
で試してます。
ボタンのクリックイベントの先頭で文字コードを受けたいtextboxあたりを アクティブにしたあとでコード送信すればいいだけかと・・・
もうあきらめろよ。
>>87 アクティブにするのってなんだっけ? と悩んでいて、activeを調べてました。
Focus()ですね。
textBox.Focus();
keybd_event(51, 0, 0, (UIntPtr)0);
keybd_event(51, 0, 2, (UIntPtr)0);
で、3がはいりました。
なぜ「あ」でなくて「3」なのかは不明ですが、とりあえず一歩。
でも入ったり入らなかったりしてますが…。
とりあえず確認はできるようになったので、最低限、文字入力して確認はできそう。
他のウィンドウに入力できれば、ソフトウェアキーボードの第一歩くらいにはなりそうです。
ってところで、他のウィンドウ部分をアドバイス乞う。
>>89 3のキーが押されてあを出すのはIMEだよ
ただ単にあを出すのでいいならあの文字コードを送ればいいけど
それじゃあ意味無いでしょ?
それができる状態になったらIMEをひらがな入力モードにしてから
同じことをやってみ
C#/.NETの部分だけ抜き出して質問してくれ
>>90 すこしわかってきたかも。
とりあえず、
textBox.Focus();
keybd_event((byte)Keys.IMEModeChange, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.IMEModeChange, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.T, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.T, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.O, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.O, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.R, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.R, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.I, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.I, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.A, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.A, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.E, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.E, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.Z, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.Z, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.U, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.U, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.IMEConvert, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.IMEConvert, 0, 2, (UIntPtr)0);
keybd_event((byte)Keys.Enter, 0, 0, (UIntPtr)0);
keybd_event((byte)Keys.Enter, 0, 2, (UIntPtr)0);
で、文字入力できことはわかりました。
疑問点(1)IMEのオンはIMEModeChangeでオーケー?
疑問点(2)先の他のアプリケーションに書く件。
>疑問点(1)IMEのオンはIMEModeChangeでオーケー? これはだめじゃないかな? IMEModeChangeでキーコードを送ってIMEのモードが変わっても IMEがどのモードになったかわからないはず
(2)のほうは、これからこちらのblog拝読してみます。 (1)ですが、もしIMEの状態を取得できないとしたら、(できると書いてあるWebページもあったんですけど、できるというだけで具体的にこうするという方法は見つけられずにいます)、かりに内部的に、テキストボックスをひとつつくって、 keybd_event((byte)Keys.A, 0, 0, (UIntPtr)0); keybd_event((byte)Keys.A, 0, 2, (UIntPtr)0); keybd_event((byte)Keys.Enter, 0, 0, (UIntPtr)0); keybd_event((byte)Keys.Enter, 0, 2, (UIntPtr)0); と入力して、 if (textbox.text == "a") アルファベットモード else if (textbox.text == "あ") IMEモード とかって判定する、というのではどうでしょうね? ぜんぜんスマートでない実装というのはわかっていますが。 あと、もし可能でしたら、プロジェクトごと見せていただけないでしょうか。ほんとに初心者で…。
>>95 自分のFormだと
        private void Form1_Load(object sender, EventArgs e)
        {
            //最前面に表示するように設定
            this.TopMost = true;
            this.Text = textBox1.ImeMode.ToString();
           
        }
こうやればIMEモードは読み出しできるけど所詮はtextboxだけの話なんだよね
まあ自分のアプリ用のスクリーンキーボードで完結するのであればこれでもいいんだが
実際のところwindows標準のスクリーンキーボードと同等の物を作るには
APIを駆使しないと多分無理
97 :
デフォルトの名無しさん :2010/04/10(土) 16:26:28
textBox1.Text += "AAA\n"; とやっても改行されず AAAAAAAAAAA・・・・・となります
textBox1.Text += "AAA\n"; ↓ textBox1.Text += "AAA" + Environment.NewLine; ウインドウズは\r\nじゃなかったっけ?
>>98 おぉ \r\nでうまくいきました
改行 \でhelp検索しても全然出て来ないhelpに絶望した
>>95 プロジェクト全体っていうかブログので全部だよ
101 :
デフォルトの名無しさん :2010/04/10(土) 19:41:58
データベースエクスプローラからテーブル作成すると、テーブルとテーブルアダプターが最初っから くっついて作成されるが、列のプロパティが少なくてショボい。 データソースのデザイナーからデータセットのコントロールでテーブルを作成すると、テーブルしか出来ないが 列のプロパティが多い。が、作っても形になるだけで機能しない。 ローカルDBだからbinフォルダにコピーされてるはずなのに元のファイルを移動させると見失って機能しない。 なんなのこれ?データベースとデータソースとどう関連してんの?
102 :
デフォルトの名無しさん :2010/04/11(日) 16:27:03
WindowsFormアプリケーションを作成しています。(VS2008) その際に、ある既成のアプリケーションを参考にしているのですが、 そのメインフォーム(EntryForm)のLoadイベントとして private void EntryForm_Load(object sender, EventArgs e) { Timer.Enabled = true; } とあり、TimerのTickイベントに private void Timer_Tick(object sender, EventArgs e) { loadTimer.Enabled = false; … 処理群A(コントロールの表示非表示の判定やデータセットのバインド等の処理) } と記載されています。(TimerのIntervalプロパティ = 100) @ このTimerはどのような目的で利用されているのでしょうか。 100ミリ秒を待って、処理群Aを実行する理由が分かりません。 A 100ミリ秒等の秒数は、どのような基準で考慮するのが望ましいでしょうか。 よろしくお願いします。
まさにこのネタ前スレか前々スレにあった気がする
>>102 作った人に聞いて
ソース公開できるなら見て判断できるけどさ
そんな断片的じゃあわからんよ
105 :
デフォルトの名無しさん :2010/04/11(日) 16:57:51
>>103 >>104 さん、ありがとうございます。
前々スレを見ましたが、時計を表示させる場合に、Load時にTimerイベントを走らせるみたいですが、
参考にしているソースは、Timerイベント内に
・ボタンの表示非表示の判断、
・変数の設定
・テキストデータのデータセットへの取り込み
しかしておらず、リアルタイムで時計を更新したりはしていません。
全フォームのLoad時に一律Timerイベントを書いています。
ググると、フォームやフォーム上のコントロール描写が終わる頃まで待った方がいい場合があり、
100ミリ秒とか時間を稼ぐ場合があると見たことがあります。
このソースの作成者と連絡がつかなくなってしまったので、質問しました
(-_-;)。
106 :
デフォルトの名無しさん :2010/04/11(日) 16:59:49
Labelの表示を変更したときにApplication.DoEventsを書くのはなぜですか? Application.DoEventsでググったけど、説明がいまいち分からないっす。
>>106 listboxとかlistviewを貼り付けて動的にアイテムを10000くらい追加するコードを書いて
その追加するループ内でApplication.DoEventsを呼んだ場合と呼ばなかった場合で
どう違うか見てみるといいよ
>>105 処理群Aに時間ががかるから、先にフォームを表示したかったんだろうな(もしくは予防)
どっちにしても表示前(表示中)に固まるか表示後に固まるかの違いだから設計としては論外
どちらかというと、悪い部類の例だからあまり気にしない方がいい
>>106 Windowsのメッセージ処理に関係する話しだからその辺はググれ
keywords: メッセージキュー、メッセージループ、メッセージポンプ
で、Application.DoEventsがソースに出てきたらほぼ間違いなく悪い設計と考えてよい
設計ができないのか、放棄しているのかは分からないが、まともに設計すれば使う機会はまずない
>>106 まあ90%以上の確率で、単に書いた奴が無能なだけ。
Application.DoEvents()なんか普通はまず使わない。
手抜きだとよく使うなw 適当アプリにまでわざわざちゃんと書くの?
どう違うの?
pictureboxに戻り値が何もないので 読み込める画像なのかそうでないのかわからない 解像度で判断しようと思ってloadの下にそういうのを書き込んだんだけど tryでくくっているわけでもないのにすっとばされた なにこれ?
>>106 labelの反応が遅いんだよな
おれはupdateを使って更新させるけど
ものすごく処理が遅くなる
114 :
デフォルトの名無しさん :2010/04/11(日) 17:45:55
>>108 フォームを呼び出すと同時に大量読込やLISTの大量追加を行う場合などは、
どのようにするのが適切なの?
Application.DoEvents、
Timer
らを使わずにはどうすればいいんだろ。
>>114 108じゃないけど。
バインドしてもいいし、AddRangeしてもいいし、BeginUpdate...EndUpdate
使ってもいい。
っていうか、それApplication.DoEvents()使って解決するのかと。
>>114 一つ一つAddしていくと遅いのでAddRangeで一度に突っ込むとかいろいろあるよ
>115
AddRangeで突っ込むデータ作るのだって項目数がちょっと多くなれば
とまったようになるぞ
さあどう解決する?w
手抜きの時はそのまんまだな
>>118 否定はいくらでもできるよ
対策方法聞かれてるんだから案を出したれ
人を馬鹿にするのは小学生でもできる
120 :
108 :2010/04/11(日) 18:22:35
>>114 > フォームを呼び出すと同時に大量読込
UIスレッド以外で処理して、処理が完了したらInvokeやバインディングでUIに反映させる
その間、触られると困るコントロール、メニュー、ツールバーがあるなら初期状態でEnabled=falseにでもしておく
> LISTの大量追加
データバインディングを使う
データはビューから分離し、INotifyPropertyChangedやBindingListを利用して変更時に通知が行くようにする
あとはUIスレッド以外でデータを更新すれば、UIの方で勝手に変更通知を拾ってうまいことやってくれる
総括として、両方に共通するのはUIスレッドで処理を実行しないということ
>>119 その自分を棚上げして平気な性格って精神病か何かなんじゃないのマジで。
言っちゃ悪いが狂ってるよお宅。
案は出してるだろう。
AddRange的な手法でもパフォーマンスに不満がでるような場合は
仮想モードを使うことになるんだろうが、そこまで想定して答えるべき文脈とも思えないが。
ID無いとめんどくせーな
嫌なら鳥つけてしゃべれ
不動産鑑定士の登場
バインドしてUI以外で更新て、それやったらだめだよ。 バインディングは勝手にスレッドの調整なんてやってくれないから。 こんなでたらめを偉そうに書いて、恥ずかしい奴だな。
AddRangeで解決するようなレベルは本質的な問題じゃないな。 現実に、例えばDBとかネットワーク通したりして初期データとか取ってくるのに、 場合によってはトータル数秒以上かかるような場合に、 どうするのがよいかって話がいいな。
面倒くさいのでダイアログ出して「アップデート中ですで?%」って表示して待たせる
あと、最初のTimerの話は、処理によってはフォームが表示されてからでないと できない場合があるからだと思うよ。 多分Shownですむ気はするし、俺はTimerとかは使わんけど、 Timerでやってるのは多分それが目的なんだろう。
まあ、そんなに長時間かからないなら、ダイアログ出すのも簡単な方法だよね。 ダイアログ出すなら、Load内のがいいな、人によって意見は違うだろうけど。 ところで固まるのがフォーム表示前か後かどっちにしても同じってのは分かるけど、 業務アプリなんかだと、場合によっては客の意向で、 時間かかるならフォーム表示してからにしてくれって言われることもあったりするな。
固まったとき原因不明だから理不尽さを感じるんだお スプラッシュでも出しとけ
初期データがバラバラに複数ある、例えばコンボボックスの初期化で、 それが一画面にたくさんあるとかなら、 コンボボックスのデータは画面表示後に非同期でとってくるなどの手はあるが、 こういうのって実装めんどいんだよね。 趣味アプリならやる気もでるが、仕事なら手抜きで無難にすませたくなるわ。 実際に作ったりメンテするのが自分じゃないことが多いしな。
136 :
デフォルトの名無しさん :2010/04/11(日) 19:41:03
流れを変えようとぼけたのにマジ突っ込みするのもいるしwww
138 :
デフォルトの名無しさん :2010/04/11(日) 21:03:09
WindowsFormアプリケーション(.Net3.5)の中で、 @ DataGridViewにDataSetをバインド。(レコード数約100件) A Formを呼び出したときに、@の100件の内の特定の10行のみ表示させたい。 だけど、 Formを呼び出したとき、一瞬全件(100件)が表示され、そのあとにフィルタが発動するんです。 データセットをバインドしているときに、 最初から表示させる行を絞るには皆さんどうされていますか?
Formのどのイベントでバインドしてるの?
140 :
デフォルトの名無しさん :2010/04/11(日) 21:16:47
>>139 Timerイベントです。
>>102 さんと同じ使い方をしていて、FormLoad時にTimer.Enabled = Trueにしています。
そしてTimer.Tickイベント内でBindingSourceを指定してます。
Form_LoadでTimer_Tickの処理をかけばいけるよ
142 :
デフォルトの名無しさん :2010/04/11(日) 21:31:36
>>141 ありがとうございます。
Form_Loadのイベントの中で、Timer_Tickイベントを呼ぶのですか?
なんでそうなるのん…
なるべく晒せる範囲のソースコードを晒してソースメインで会話しようぜ・・・ 回答もらう方も自分の晒せる範囲のコード晒してずばりの修正コード見た方がすっきりするだろ
ところで、WindowsFormsのBeginInvokeって、優先度を指定できないのがやや残念なんだよな。 WPFだと細かく(細かすぎって話もある)制御できるんだけどな。 あとあれだ、後で実行したらいいって処理をBeginInvokeしてから、 すぐに(同期的に)実行したい処理をInvokeしたら、 BeginInvokeの処理が先に走ってしまうとかな。
146 :
デフォルトの名無しさん :2010/04/11(日) 21:53:50
>>143 このような現状です。
Timer_Tickイベント内で、DataSet1内のDataTable1をバインドしています。
private void Form1_Load(object sender, EventArgs e)
{
Timer.Enabled = true;
}
private void Timer_Tick(object sender, EventArgs e)
{
loadTimer.Enabled = false;
DataGridView1.BindingSuorce = BindingSource1;
BindingSource1.DataSource = DataSet1;
BindingSource1.DataMenber = "Table1"; ※100件ほどあり。
BindingSource1.Filter = "(Filter文) ※ある条件を満たす10件ほどを抽出"
}
この場合に、FormをLoadしたとき一瞬、100件ほどがチラっと表示され、
すぐ後に、10件に絞られます。
このチラツキをどう防ぐべきか悩んでいます。
よろしくお願いします。
>>145 普通の人はFIFO的に振舞うことを期待するわけで、
むしろそんなスタックだかなんだか訳のわかんない動作を
期待する人なんているのかしら。
WPFを勉強しようと思ってるんだけど、おすすめのサイトか書籍ある?
>>146 BeginUpdateとかないんだな
API使う方法もあるみたいだがそういうの無しで考えると超手抜きとして
DataGridView1とまったく同じDataGridView2を用意してこいつを
表に見せておいてDataGridView1にデータを入れて終わったら
DataGridView1を前に持ってくるとかw
private void Form_Load(object sender, EventArgs e) { DataGridView1.BindingSuorce = BindingSource1; BindingSource1.DataSource = DataSet1; BindingSource1.DataMenber = "Table1"; ※100件ほどあり。 BindingSource1.Filter = "(Filter文) ※ある条件を満たす10件ほどを抽出" }
つうかよ、Filterを先に設定することはできないの? なんかエラーになったっけ? まあLoadでやればいいとは思うんだけど。
>>147 は?
非同期が同期より先に同期的に実行されることを期待するようなやつがいるのかよ。
コントロールのBeginInvokeはWindowsのメッセージ的な処理に近い使い方をするからな、
優先度が指定できても別におかしいことはない、なんでWPFではできるようになってると思う?
非同期が同期よりも先に同期的に実行されるってのははっきりいって落とし穴。
>>152 なんか勘違いしてるみたいだけど、ISynchronizeInvoke.BeginInvokeが「非同期的に」実行される
っていうときの「非同期」っていうのは、当たり前だけどBeginInvokeを実行してる
スレッドの視点での話しであって、UIスレッド上では(同一のスレッドだから当たり前だけど)
全ての処理は同期的に実行されるんだよ。
もちろんキューに入っている順番で。
そのあたり変な理解してない?
んなこた分かっとる、てかだからこそ、InvokeとBeginInvokeの関係が直感と違うことになる。 だからこの辺直感通りに動く方がうれしいし、BeginInvokeでは優先度を指定できればなおいいって言ってる。
ここでいう非同期ってのは、スレッド観点ではもちろん実行される順番の違いにすぎないけども、 一般にBeginInvokeはこの場で同期的に処理したくないから使う。 なのにそのあとInvokeしたときに、Invoke前に同期的に実行されるのは困ると言ってる。
キューのアイテムが同期的に実行されると分かってたら、 「優先度」なんて訳の分からないこと言わないと思うけど。 キューの先頭にぶち込むメソッドがあってもいいよな、って話ならわかりもするけど
ともかく、WPFでできるようなことができるとうれしいってのと、 Invoke時に先に全てのBeginInvokeで保留されてる処理が実行されるのが困る ってことが言いたいの。
うーん。 ひょっとしてFIFOとかキューとか言われるものが何なのかわかってないのかなw
WinFormsのBinginInvokeも優先度が指定できると便利だと思うけど無い物は仕方ないだろ。 議論するだけ時間の無駄
WPFさん家の子になりなさい
さっきから何を言ってるの
>>159 は?
WPFみたいな事が出来るとうれしいって書いてて、
WPFでは言ってることが実現されてるってのが事実なのに、
なんで
>>159 とかみたいになるわけ?
あと、言っとくがFIFOなんてのは単にキューの一例にすぎん。
優先度付きキューとかあるだろ。
まあ、ここで言いたいのはキューだから無理とかFIFOだから無理とか、
そういう話じゃなくて、WPFみたいにできればいい、それだけのことだ。
内部で優先度付きキューに入れるなり、Winsowメッセージの使い方を変えるなり、
内部実装をどうするかは関係ない。
ともかくWPFみたいにできてほしい、それだけのこと。
まあないものは仕方ないよ、できたら嬉しいのにって書いただけ。
やたら突っ込んでくる馬鹿が悪い。
日記帳に書いてろバカ。
>>155 BeginInvokeをキューへの追加、Invokeをキューを迂回した実行と考えるからおかしくなる。
x.Invoke(...) は x.EndInvoke(x.BeginInvoke(...)) と等しいと考えれば
直感的な動作だよ。
あと、WPFは例としてはわかりにくいだろう
Action act1 = delegate { Debug.WriteLine("1"); };
Action act2 = delegate { Debug.WriteLine("2"); };
Dispatcher.BeginInvoke(act1, DispatcherPriority.Background, null);
Debug.WriteLine("A");
Dispatcher.Invoke(act2, DispatcherPriority.Background, null);
こういう事もできるんだから
>キューの一例 むしろFIFOじゃなきゃキューとは言わんだろぉ… 優先度付ってのは分かるが、さらっとあほな事を
("A"); 話の経過があまりにもあれでコードに今の気持ちを書き込んだのかと思ったw
ああ、単にキューって言ったらFIFOだな。
悪い悪い。
ともかく言いたいことはキューだからどうという話じゃない。
>>165 言いたいことはわかるけど、普通に優先度ある方がうれしいって俺は思うんだよ。
要らない、分かりにくいってだけなら、じゃなんで後発のWPFではできるようにしたんだ?
後発だからだろ C言語にクラスが無いのはおかしいって思う人なのかな
アホなの? あればよかったのにって言ってるだけだろう。 おかしな例を出すんじゃない。
WinFormsとWPFが同等じゃないのはおかしいと思う人の間違いだろ。 どっちにしろおかしい人なのは間違いないがな。
>>170 独り言は日記帳に書いてろって言ってんだろ
>後発だからだろ 後発でそうなったってことは、その方がより望ましい、あるいは必要と考えられたからだろ。 Cにクラスとかそういう話じゃない。 WPFもWindowFormsもスレッドモデルとしては近いんだから、 最初から同じような機能があればうれしかった、そう言ってるだけだろう。
>>171 だれもそんなこと書いてないね。
自演かよ。
WPFは最初からあったわけじゃないんだけど
つまり 「WindowsFormsでもWPFみたいになってたらうれしかったのに」 って思うのはオカシイと言いたいんだな?
つか現状で満足できないならヘジにでも文句つけて来いよ。 ウザイからここで愚痴るな。
なんなら自分でそういう機能を実装したISynchronizeInvokeの代替オブジェクトを 作るとかね。 実現可能性については正直俺はよくわかりません。 まあ、できないことはないんだよね多分。
ここはオレ思想を主張するスレじゃないのだが…
>>168 > 要らない、分かりにくいってだけなら、じゃなんで後発のWPFではできるようにしたんだ?
DispatcherPriorityのメンバを見れば想像が付くだろ・・・
少なくとも、おまえの言う直感的でない動作を防ぐ為ではないことは確か。
もしそうなら、InvokeにSend以外の優先度が指定できなくなってるハズ。
>>145 に「そうですかよかったね」で流せばよかったのに妙に絡むからだぞ。まったく。
>>145 これだけの内容にいちいちつっかかっていったやつがおかしい
俺思想を主張してるのはそっちだね
んで、何がどうすればこの話終わ(ってくれ)るの? 終了条件を明示して下さい 僕が実行しますから
>>182 それって優先度がつけられるようになったから、
同期的かどうかという観点と、処理の順序という観点がわけられるようになったヵらだろ。
優先度がない状態じゃInvokeとBeginInvokeでの観点で話すしかないじゃん。
アホ丸出しでつっかからなければいいだけじゃね?
先に”キュー”で辞書引いてから来てねボク?
自演で煽ってる奴はいいかげん黙れ
”つけられるようになった”ってことは元々そういう機能がなくても不自然ではないような。 まぁ、目的地が見えないのは確かだなこの議論。 単に同意を得たかっただけに見える。
つまんねーな。
>>193 こういう奴がほんとにつまらん
まあまあ落ち着こうぜ もう寝ろ
おめーのオナニー主張が一番つまんねーと悟れや。
最初から「微妙に残念」って言ってるだけだな おかしいとも不自然とも言ってない 絡んだやつが馬鹿
「微妙に残念」 ↓ 「やや残念」 だった、それだけ
このスレって、今の動きがやや残念って書いただけで こんなことになるんだなw
来週そういえば試験だなー(棒読み)
147の俺としては別に絡んだつもりも煽るようなことを言ったつもりも言いたいつもりも
ないんだけど、少なくとも
>>145 >すぐに(同期的に)実行したい処理をInvokeしたら、
>BeginInvokeの処理が先に走ってしまうとかな。
とか
>>152 >非同期が同期よりも先に同期的に実行されるってのははっきりいって落とし穴。
とかいうのを読む限り、
>>145 がISynchronize.BeginInvoke()について
おかしな誤解をしていたのは確かなような気がする。
落とし穴かなこれ。
もの凄く自然で直感的な仕様だよねむしろ。
Invokeの実行順なんて期待するものじゃないと思うけどねぇ… あくまで優先度であって実行順じゃないしね。 ある意味どっちもナンセンスなような。
「普通」っていう言葉が良くなかったと思われるww 変人と面と向かって言われたら熱くなるわなww
>>208 誤解してるってのは違うんじゃないの?
実装上仕方ない動きってのは分かるよ。
More Effective C# でも出てる話題だったんじゃなかったかな。
それと、.NET一般ではBeginなんとかは非同期、そうじゃないのは同期という分け方で、 同期を呼び出すと非同期が先に走るってのはUI系の特殊な動作。 だから、.NET一般の動きと比べて落とし穴になるってのは別に分かる話。 もちろん観点が違うだからそこで一般的な動きをしないのは仕方ない事ではあるけど。
>>214 ↑ 回転
←→ 左右移動
↓ 下移動
マウス右クリック アプリ終了
だってさあ、同期・非同期っていったってそれはデリゲートをキューにぶち込む操作を 同期的に行うか否かって話であって、キューにぶち込んでるのに後からぶち込んだのが 先に実行されないのが「落とし穴だ」って言う感覚、普通理解できる? 俺にはちょっと意味わかんないよ。
心なしか棒が多いような
>>216 WPFを例に出してるんだから別に言いたいことは普通に理解できる。
>だってさあ、同期・非同期っていったってそれはデリゲートをキューにぶち込む操作を
>同期的に行うか否かって話であって、
おいこらw
フルHDテトリスやったばっかりだからテトリスはしばらく見たくないわ…
だってさあ、同期・非同期っていったってそれはデリゲートをキューにぶち込む操作を 同期的に行うか否かって話であって、 それはない
落とし穴ってのは、 BeginInvokeとInvokeが普通にPostMessageとSendMessageのように 動いてほしいってことだろ? メソッドはいかにもそういう感じの構造になってるんだから、 違和感を感じるのもおかしくはないんじゃないの?
まだやってんのか
単なる思い込みだろ ディスパッチするだけの役割であって実行順なんかMSDNでも触れてないがな
http://codepad.org/eHEwc1HQ このコードでエラー
角かっこ [] 付きインデックスを 'System.Windows.Forms.NumericUpDown' 型の式に適用することはできません
と出るのですがなぜいけないのかがわかりません
どうしてエラーになるのでしょうか
numericUpDown1[0,0] こんな指定できたっけ?
左辺をnumsと間違えてるだろ どんだけ慌ててんだよ
補間されちゃってそういう風になることあるなw
なんか和んだ
質問とは関係ないが new int() には何の意味が?
ほんとだw int単体だとnew いらんぞw
Xml にシリアル化する時に引数なしのコンストラクタ無いと困るから・・・ ?
コンストラクタが存在することと、それ使うことは別問題。 というか、組み込み型のシリアライズの心配なんかしなくてもいいですって。
>>232 シリアライズは特に気にする必要なかったと思うけど
235 :
デフォルトの名無しさん :2010/04/12(月) 18:19:07
var list = new[] { new { Name = "糸色望", CV = "神谷浩史" }, new { Name = "風浦可符香", CV = "野中藍" }, }; var list2 = new[] { new { Name = "大草麻菜実", CV = "井上喜久子" }, new { Name = "加賀愛", CV = "後藤沙緒里" }, new { Name = "木津千里", CV = "井上麻里奈" }, }; var 名= from p in list.Concat(list2) select p.Name; だと連結されて出力されますが、連結じゃなく list2をlistに統合させちゃうのはどうすればいいですか? list.Addとかなさそうですので・・・・
list.AddRange(list2);
ああすまん 配列か 再確保しかねーんじゃね?
list = list/* 省略 */.ToArray()でいいだろ
肝心なところ省略すんなw list = list.Concat(list2).ToArray(); 結局再確保しているし無駄な変換なような気もするけど、 そんなことを気にする時代でもあるまい。
ちょっとはきにしろばか
100万回呼ぶなら気にした方がいいんじゃない
パフォーマンスを気にしなきゃいけない場面なら、元のデータの格納方法から 考えなおさなきゃダメだろ。
243 :
235 :2010/04/12(月) 19:35:20
普通に1行ずつ加えていくのも無理ですか?再確保はやはりきつそう・・・
>>220 ずらしてないでしょ。
しかし、このスレってキューが何かすら分かってない奴が結構いるんだな。
まあ初心者スレだからそんなもんかも知れないけど、知らないことを頬かむりして
得意げに「お前は分かってない」とか言うのはなんだかなあ。
小さな効率のことは忘れ、時間の97%について語ろう。時期尚早な最適化は諸悪の根源だ…
>>243 配列じゃなくリストとかアレイとかにするしかないんじゃない?
配列は増減には向いてないから
これが気になるパフォーマンスって何だよ 80年代のパソコンでも使ってるの?
>>242 配列っぽく使いたいし、構造体っぽく使いたいし
LINKで楽にデータ読みたいんです
いい方法ありますか?
ちなみにSQLserverとか外部データベースまでは不要です
>>243 そもそも元が配列なのだから、Add出来ないのは当然でしょ。
new[]{}じゃなくてnew List<T>{}で、ベースをListにすればいい。
匿名型ではList作れないというならば、推論出来るようなヘルパー関数を作ればいい。
結構前にこのやり取り見たな
>>246 class hoge
{
public string Name;
public string CV;
}
List<hoge> hoge = new List<hoge> {
new { Name = "糸色望", CV = "神谷浩史" },
new { Name = "風浦可符香", CV = "野中藍" },
};
これでやればAdd使える?
そこまで聞かないと分からんのか
var list = (new[]{ new { Name = "タラヲ", Msg = "氏ね" },
new { Name = "
>>252 ", Msg = "死ね" }}).ToList();
俺はやらないけど、無理やり匿名型使うならこうか?
252みたいにクラス使うなら
http://ideone.com/wnKXL
run codeのチェックは外せよ
>>244 >しかし、このスレってキューが何かすら分かってない奴が結構いるんだな。
いないだろどう見ても。
>まあ初心者スレだからそんなもんかも知れないけど、知らないことを頬かむりして
>得意げに「お前は分かってない」とか言うのはなんだかなあ。
キューを知らないっていくらなんでもそんな素人のやり取りじゃなかっただろどう見ても。
だから論点そらしてるとか言われるんじゃないの?
C#っていちいちnewが余計だよな クエリ式の仮引数も余計
そうかw newなんてほとんどかかねえしw
>>244 もっと高度な話ならともかく、キューを知らないとかってレベルに持って行くのはさすがに白々しいわ。
そもそも今回話に出てくるキューの実態はWindowメッセージのメッセージキューで、
キューと言われるけど挿入位置や動作は色々変わってくるわけだ。
最初から実態はそういうキューの話だ。
InvokeやBeginInvokeも内部ではメッセージキューへの操作だが、
たまたま実装がどちらもPost操作になってるから順番通りになるわけで、
SendとPostで実装されれば話は変わってくるだろ?
WPFのキューが内部でどうなってるのかは知らないが、
機能としては優先度を付けた操作ができるようになってるわけだ。
それと同じことができたら嬉しいって言っただけで、なんでキューを理解してないとか、
あらぬ方向に話を持って行こうとするわけ?白々しい。
それが話そらしてるって言ってるの。
何度も言ってるが、そもそも最初から、キューだからどうとかそんな話はどうでもいいんだ。
既に実現されてるWPFと同じようなことができたら嬉しいというだけの、それだけのことの何がおかしい?
まあまた話をそらすかもしれんが、もはや白々しいとしか思わん。
3行以上書く奴は総じてキチガイ
「白々しい」を3回以上書く奴は総じてキチガイ
白くなれ
キチガイだらけじゃねーか
>>260 君が本人だとしたら、いい加減みっともないよ。
本人じゃないとしたら、
>>152 を読んでそれ言ってるの?
キューに入った処理が順番に処理されるのが「落とし穴」ってどんな発想だよ。
ちゃんと理解してるのならありえない。
>>213 ってことだよ
メッセージキューのPostMessage使ってることも知ってるのに、何をどう理解してないと思うわけ?
だいたいInvokeやBeginInvokeがキューに入るなんてのは説明には書かれてないんじゃなかったっけ?
同期と非同期の話が書かれてるだけで。
キューだからって当たり前って、おまえが勝手に言い出したことだろ?
キューだなんて書かれてないんだが(実際のとこはメッセージキューなのは分かってる)。
それにWindowsならもともとSendとPostがあって、InvokeとBeginInvokeはいかにも
そういう操作に見えるんだから、
ま落とし穴はちょっと極端な表現だったかも知れんが、
非同期と書かれてる操作が、同期よりも先に同期的に動く
という動き自体は、UIだけの特殊な動きで普通と違う。
そしてBeginInvokeとInvokeの説明にはキューを使うなど書かれていない。
だからUIだけの特殊な動作を、勘違いする可能性がある、くらいでもいいわ。
まあ、どっちにしたところでキューを理解してないなんてあほな話にはならない。
お前こそいい加減に
>>216 の言い訳を書いてみろよ。
そうやって何が何でもキューを理解してないなんて話に持って行くのが 話そらしてるって言ってんだよ。 キューなんてアホでも知ってるだろうよ。
玉を突っつくやつだろ?
ああ、それと、落とし穴って言っただけでその動きが理解できないとか なんでそのように動くのか分からないとか、そんなこと言った覚えはないぞ。 PostMesssage使ってるからそう動くってのは分かってるが、 感覚的にはSendMessageのように動いてほしいと期待してしまうってだけだ。 あるいは他のBegin系のような動きを期待してしまうってこと。 普通ならこれで言いたいことは理解できるはずだろ。 お前は何が何でもキューが分からないことにしたいみたいだが。
>>268 その通り
データ構造のキューの語源は玉突きのキュー
そんでお前が何度もキューだから当たり前とかFIFOだから当たり前とか言ってる、 そのキューの実態はメッセージキューで、こいつはFIFOじゃない動きもするわけだが。 お前はどう考えてるんだ? ・FIFOじゃないからキューじゃないんだ ・キューだから絶対にFIFOだ ・FIFOじゃないキューもあるさ どれかくらいしかないが、どれだとしても偉そうなお前が言ってることとどこかが矛盾してくるんだが。
おっと、 ・キューだから絶対にFIFOだ はお前の言ってることとは矛盾しないが、メッセージキューの実態と矛盾する。
Windowsの場合WM_PAINTは後回しにされたりするからな FIFOではないな
・FIFOじゃないからキューじゃないんだ お前の言ってることが根本から矛盾する、だってキューじゃないってことになるから。 ・FIFOじゃないキューもあるさ だったらお前がキューだから当たり前って言ってることが当たり前ではなくなる。 どうしたってお前の言ってることは矛盾してるんだよ。
キュー専用スレでやってくれ
相談室でやれ ここは(初心者用)だ
>>266 なんでそんなに何にも分かってないのに上から目線なんだろう。
しかもお前呼ばわり?
まあいいが、「UIだけの特殊な動作」ってこれまた意味がわからんよ。
それ何を根拠にそんなこと言ってるの?
メッセージ云々も一切関係ない。
何度も言うように、キューに突っ込まれたデリゲートが
順番に実行されるだけの話で、どこもにUIの特殊事情なんか入り込む余地ないんだけど。
それから君は、これも何度も言うように「同期」、「非同期」って意味も変に誤解してるよ。
同期(ISynchronize.Invoke())って意味は、それを実行したスレッドの動作が、
キューに突っ込まれたデリゲートがUIスレッドで全部実行されるまで待機させられるって意味でしょ。
非同期の場合はブロックされずにすぐに制御が変える。
ただそれだけの意味だよ。
要は、「〜の実装は感覚的におかしい」とか言ってるけど、 悪いけど「おかしい」のはあんたの感覚の方ですよ、って話。
ここで「おかしいおかしい」とわめいても現実は変わらないってことに気付いてください。
いい年こいてどっちも引き下がらないとか…w プログラムやってると精神年齢は成長しねえんだな。
邪魔だから本当に死ねばいいのに
完全に二人の世界に入っちゃって恋人同士のようだよ。
>>277 >なんでそんなに何にも分かってないのに上から目線なんだろう。
またごまかしか、何も分かってないことにするのね。
>まあいいが、「UIだけの特殊な動作」ってこれまた意味がわからんよ。
>それ何を根拠にそんなこと言ってるの?
根拠もなにも、事実他のBegin〜系は、対となる同期操作とは無関係。
Begin〜の処理が、そのあと実行した同期操作より先に同期的に実行されるなどというルールはないね。
>メッセージ云々も一切関係ない。
何と何が関係ないの?意味不明。
>何度も言うように、キューに突っ込まれたデリゲートが
>順番に実行されるだけの話で、どこもにUIの特殊事情なんか入り込む余地ないんだけど。
どこにそんなことが書いてあるの?
UI以外のBegin〜系は非同期操作と同期操作にそんなルールはないね、UIだけが特殊だ。
>それから君は、これも何度も言うように「同期」、「非同期」って意味も変に誤解してるよ。
してないよ、非同期と同期には、完了まで待たない、完了して戻る、という意味しかない、それ以上の意味などない。
そっちこそ、非同期と同期という言葉に変なルールを勝手に加えてるね。
>同期(ISynchronize.Invoke())って意味は、それを実行したスレッドの動作が、
>キューに突っ込まれたデリゲートがUIスレッドで全部実行されるまで待機させられるって意味でしょ。
どこにもキューに積まれるなんて書いてないね。
まあ非同期操作がキューに積まれるのは普通の感覚(あくまで感覚であってどこにもそうだとは書いてないが)だけど、
同期操作が同じキューに積まれるなんて決まりはどこにもないね。
>非同期の場合はブロックされずにすぐに制御が変える。
>ただそれだけの意味だよ。
そう、それだけの意味しかない。
同期操作も同じキューに積まれて、必ず順番に実行されるなんてルールは本来どこにもない。
結局ほとんどあんたたが勝手に決め付けてるだけじゃないか。 何度も言うが、あんたが言ってるキューの実態はメッセージキューで、 必ずしもFIFOじゃない、偉そうにキューだから必ず順番になるって言ってること自体が元々根拠のない話。 現実にあんたが言ってるキューだから当たり前、ではない動きをしてるわけだよ。 あんたは全部無視してここには答える気はないみたいだが。
千秋の声で再生された
まあどっちを自然に感じるかなんて人それぞれでかまわんが、 不自然あるいは他と一貫性がないってことを言ってるだけで、 キューすら分かってないとか何も分かってないとか言われる筋合いはないな。
VB.NET質問スレで暴れてた奴と似てるな、というか同じだったりしてw 上から目線とか煽り方とかソックリ 白状しちゃいなYO!
終わった作品だな おかわりは糞
ですね
OracleのおかげでJavaが衰退しそうだ これからはC#の時代だな
293 :
デフォルトの名無しさん :2010/04/14(水) 10:41:51
やっててよかったC# あとはMac用バイナリとか出力できるクロスコンパイラとかでてくると最強になれるな
Mono の AOT オプションは Mac 用バイナリはけないの?
普通のアプリはネイティブである必要ないからね。Cocoaも使えるし。
SilverlightのOOBでいいじゃん
C#はほとんどの仕事に使えるけど、科学技術計算だけはだめだな C++にかなわない 特にジャグ配列を使った時の速度低下がひどすぎる しかしGUIデザイナは素晴らしいの一言 簡単なプログラムならすぐに完成する
298 :
デフォルトの名無しさん :2010/04/14(水) 11:41:08
でもC#のMSILへのコンパイルって元々馬鹿っ速じゃない?
>>297 厳密にかなう必要あるの?
9割のスピードを2・3倍の生産性で作れれば十分価値あると思うけど。
GUI がらみは10倍以上生産性違うけど、数値計算でも数倍は行けると思う。
あと、純然たる数値計算であっても、気軽に GUI に結果出せるってのは価値あるし。
それを言うと、Matlab とか Mathematica 使えって話になるけど。
>>299 違う違う、C++ が遅すぎるだけ。
あれと比べりゃ、最近の言語はどれも馬鹿っ速い。
あと、Visual Studio の場合はバックグラウンドで常時コンパイルしてるからね。
ビルドが一瞬なのはインクリメンタルにやってるからってのもある。
sgenが吐くのは普通のマネージDLLだぞ XmlSerializerは実行時にC#のコードを生成してコンパイルするという 荒業を使ってるのでどうしても遅くなる 最近はC#のコードを吐くんじゃなくて高速にILを吐けるLCGという機能を使うのが主流になっているので (SilverlightのXmlSerializerやWCFなど)プリコンパイルはいらなくなってきた
>>297 数値計算だったら、ジャグ配列でも多次元配列が多いだろ。それなら、Cでも配列の配列ではなく多次元配列のコードになる。だから、C#と速度で比べるなら、多次元配列。
それでも、C++、FORTRANの方が速度速いし、ライブラリも豊富で、安全である必要は低いので、C#を選ぶ理由はないんだけど。
>>303 違う違う、君がC#を理解できないだけ。
科学技術計算で速度が重要なら、FORTRANとC++の2択だろ。
数値計算でジャグ配列使って遅いっていうのは
>>303 の言うとおりアホだろ
Cでも縦にアクセスしたら遅いわそんなもん
307 :
デフォルトの名無しさん :2010/04/14(水) 12:08:57
ああ、なんで罵倒する方にいくかな・・・ 折角いい感じで久々にスレが埋まると思ったのに・・・
>>300 いや、ジャグ配列だけはポインタのポインタで実装されているので、
半分以下の速度になっちゃうよ
固定配列ならそこまで遅くならないけど
CとC#の違いを知らずにコピペするからそうなる。
まったく・・・私を見習いなさい
C# 配列 遅い でググってみればわかる 大学の研究生とか助手がC#で計算させようとしてあまりの遅さに 閉口しているのがわかるから
312 :
デフォルトの名無しさん :2010/04/14(水) 13:17:25
C#を否定できるネタじゃないな
313 :
デフォルトの名無しさん :2010/04/14(水) 13:20:23
適材適所
そこまで効率化をいうなら部分的にC/C++で書いて
GUIだけC#とかにすればいいだけだし
DOS窓で動く計算だけするアプリをC#で書いたGUIから
起動してとかでもいいんだし
ということでこのネタはおしまい
俺が欲しいのは効率上げたいときは
>>298 のようなのすればいいよ〜っていう情報だけ
罵倒はいらん
要素に連続でアクセスする場合は最適化されて速い 多次元配列ではその最適化が効かないのでジャグ配列の方が速くなったりする 完全にランダムなアクセスなら何使っても遅い
JavaでOSを書こうっていう世迷言と何が違うのか分からん
いやまあ万能解があるならそれに越したことはないじゃない?
配列とか使わずArrayListを使えばおk
318 :
デフォルトの名無しさん :2010/04/14(水) 13:27:58
>>316 まあいまさら部分的にC/C++とか書かなくていいならそれ
にこしたことはないけどねw
でもC/C++でGUIまで作れっていうんじゃないんだから
計算するコードくらい書けばいいじゃんって思うし
GC抱えてる言語だとどうしても管理レイヤーが
存在するので内部的に効率化をやってくれなければ
遅くなるのはある意味当たり前だし
100x100の配列をジャグ配列にすると101個のオブジェクトができるが、多次元配列なら1個である。Cの場合、配列はプリミティブである。
320 :
デフォルトの名無しさん :2010/04/14(水) 13:42:47
計算ってことはint、double、floatとかだよね C#にも一応構造体あるけどあれを使うとどうなるんだろう
また安い燃料でしょうもない議論するのか?
初心者用らしくていいだろw
C#で配列まわりで高速演算したいんだったら、Cと同じようにポインタを使うというのは基本テクニック。
ジャグ配列(笑)
C#の不得意な部分を持ってきてCとかC++のほうがいいとかいう知ったかがくるとこうなる
CとかC++のスレで「記号プログラミングはCやC++じゃ生産性が悪いよねー」とか言い出すの?
>>323 1次元配列を用意して、自分で多次元配列として操作すればいいよ
可読性が落ちるけど
foreachやfor (int i=0;i<array.Length;i++)の形の配列アクセスは 最適化が効くからポインタに変えても速くならないよ stackalloc使えば速くなるかもしれんが
かもしれんね
プログラミングの素人がそんな面倒臭い事をいちいちやるかい
でも、遅い、って文句は付けるんだよな
そりゃそーだろ 計算は速度が命だ 時間が2倍かかって例えば4時間で済む所を8時間掛かったら 一日が終わってしまうだろーが
その時間で別言語探せよ
C#って for(int i=0;i<100;i++){} を int i=100; while(i) { i--; } みたいにする最適化出来ないから困る C++だとこれだけで結構差が出るよな
>>333 それが大差になるのは、ループの中が相当軽い処理の時だけだな。
あとはnextリストをたどるループとかな while( data ) { data->〜〜〜〜 data = data->next; }
337 :
デフォルトの名無しさん :2010/04/14(水) 16:09:19
そりゃインデックスを増分すればいいだけの配列と ポインターを辿るのでは違うだろうよ でもそういうのってループが多くないと影響しないよな
>>336 それのどこが差が出ると言いたいのかわからないけど、それが出てくるシナリオではそれ処理が重いことが普通だよな。
しょうもない知ったか知識をひけらかして喜んでるやつって・・・
340 :
デフォルトの名無しさん :2010/04/14(水) 16:40:28
そういう煽りはいらないって まあ速度が気に食わないならベンチとってC/C++で書くなりすればいいだけだし C/C++でバリバリ書いてた時代だって速度でねーとかなれば インラインアセンブラでコード書いてたんだし
ここはC#のスレなんでC/C++はどっかいけ
ヘ⌒ヽフ ( ・ω・) dd / ~つと)
プロファイルとらずに可読性落としてまで最適化しようとする奴は邪魔なだけ。
>>283 悪いけど本当パーだなあ。
>まあ非同期操作がキューに積まれるのは普通の感覚(あくまで感覚であってどこにもそうだとは書いてないが)だけど、
>同期操作が同じキューに積まれるなんて決まりはどこにもないね。
君スレッドの意味分かってる?w
BeginInvokeだろうがInvokeだろうが、突っ込んだデリゲートは同じUIスレッドで
実行されるんだけど、分かってる?
何度も言うように同期か非同期なんていうのはISynchronizeInvokeのメソッドを読んでる
スレッド上での差異であって、UIスレッドにとっては全く感知しない話なんだけど。
馬鹿じゃないの本当。
345 :
デフォルトの名無しさん :2010/04/14(水) 18:46:15
他所でやれ
そんな馬鹿をアピールせんでも…
347 :
デフォルトの名無しさん :2010/04/14(水) 19:58:24
ListをDataGridViewにバインドさせたら DataGridViewでソートかけたらListもソートかかりますか?
348 :
デフォルトの名無しさん :2010/04/14(水) 19:59:51
ListViewとかDataGridとか似たのが沢山あってどれ使えばいいのかわからない
349 :
デフォルトの名無しさん :2010/04/14(水) 20:00:04
>>347 掛けてみればいいじゃん
で別のコントロールなりにどうなってるかわかるように出力してみればいい
世のアプリはろくにキーカスタマイズもできないのが多いのはなんでだ って思ってたけど、実際に実装してみてすごくややこしいことに気づいた。 連日頭掻きすぎて抜け毛がやばい
>>350 メインメニューのShortcutKeysをいじるだけだと思うけど。
そんなややこしいか?
>>351 ああ、一般的にはそうなんだ。メインメニュー使わないから、
ウィンドウで取ったKeyDownイベントからキーを取得して、
判定して結びつけたメソッドを呼び出す仕組みを自作してるわ。
うまく行ったようにみえたが、キーを押しっぱなしにしたときの動作を
別に用意する必要がでてきたりで混乱中。
ある程度スマートに書いていきたいから実装がなかなか進まない。
>>351 大変なのは、どうやってカスタマイズさせるか、の部分だよ。
うっかり「MS-IMEのキーカスタマイズ画面と同じデザインにしましょう」って言っちゃって、
既存のイベントだけではどうしても作れなくて、同じUIを再現するのにかなり苦労した。
そりゃ君がうっかり屋さんなだけだ でも俺もカスタマイズ関連はめんどくていやだけど
>>292 さんが言ってる
>>OracleのおかげでJavaが衰退しそうだ
ってどういうことですか? Sunを買収したってことまではわかるんだけどJavaが衰退するというのがちょっと分かりません。
Oracleがデータベースを主に扱ってるってところまでは分かるんですけど・・・
IT業界で飯を食っていない本当に初心者なんでやさしいお兄様方ご教授お願い致します。
スレタイ読め
ん? Oracle が Java を内包してしまったら 環境が閉じてしまって COBOL みたいな運命になるって意味では?
Java作った人が最近Oracle辞めたことを言ってるんじゃないの? それでJavaが衰退するかどうかは知らないけどさ
分裂に歯止めがかからなくなっちゃったからな よくある末期症状
Java、OOo、MySQL、Open Solaris どれをとっても、タダだから使っているやつらは多いけど、 胴元のSUNは儲からない事業になっていた。
金取ってたらもっとひどいことになってただろうな
いよいよVisual C# Expressがでたな
で、SPはまだかね?
まだですお。
/???? / '? -? -? - /????/'?-?-?-
もし有料だったら今頃荒れまくってる
フォーム上のコントロールのうち チェックボックスだけ取り出してチェックしてるか確認したいんですけど どうしたらいいですか? foreach (Control ck in this.Controls) { if(st is CheckBox || st.checked) { かなと思ったけど全然違いました
370 :
デフォルトの名無しさん :2010/04/16(金) 11:14:59
>チェックボックスだけ取り出してチェックしてるか確認したいんですけど >どうしたらいいですか? 意味がわかりません チェックつけたり外したりすればイベント起きるはずだけど
||じゃなくて&&だろ 恰好付けた書き方しないで素直に var cb = ck as CheckBox; if (cb != null) { と書け
foreach (var cb in Controls.OfType<CheckBox>()) { if (cb.Checked) { LINQ使えるならコレで。
できましたありがとうございます! なんで分かるんですか!すごいっすね!
おまえら、微妙にバカにされてるなw
INotifyPropertyChanged -> 依存関係プロパティ てな感じでバインディングするのはどうしたらいいの?
DataContextにバインド対象のオブジェクトを代入して XAMLで{Binding プロパティ名}が普通 コードでやるならSetBinding
VS2010高杉鼻水吹いたわ
眠ってるみたいだろ それβ版なんだぜ
>>377 それだけ稼げるからその値段でも買うんだよ。
アカデミックパッケージを買えたころが懐かしい。
381 :
デフォルトの名無しさん :2010/04/16(金) 23:16:46
ドリームスパークにVS2010入ってたよw
2010は並列処理が簡単にできたりして意外に画期的な感じだな。 2008で十分と思ったが、Express出るみたいだから使ってみよう。
割れが出たら使ってみるかね
並列が簡単にできるってどこソースだよ
MS
386 :
デフォルトの名無しさん :2010/04/17(土) 02:10:35
今までも #pragma omp があったけど それとは別なのか?
うん
>>387 ライブラリで実現しているんで、C#とは関係ないんだけどね。
System.Threading.Tasksだな TPLと呼ばれてたやつ 他にもSystem.Collections.Concurrentに標準のコレクションのスレッドセーフ版が追加
あと、Parallel LINQ と、 C++ 版のみだけどエージェントライブラリってのが入った。
TPLはともかくParallel LINQは使い道が思いつかないなあ あまりにも抽象的すぎ
393 :
デフォルトの名無しさん :2010/04/17(土) 11:28:52
個人でプログラム書いてるとどうしてもLINQの使い道が思い浮かばない 勉強のために何かお題は無いものだろうか
LINQはSQL常用してる人には 分かりやすいのかもしれないけど 実際どうなのよ あと、どういう動きになってるのかちょっと気持ち悪い面もある 具体的に言うとオーバーヘッドがどうなってるかだけど
どうなのよって言い方はどうなのよ。 オーバーヘッドはベンチとれば。
もうコレクションのグループ化や集計なんていちいち自分で書いちゃいられないね。
LINQ to Objectsのことを言ってるなら、動作が理解できないのは yieldが理解できてないということ。 素直すぎるくらい素直にyieldで実装されてる。
yieldは神
yieldがどうやって実装されているかとか 最近の子は考えないのかね
それは言語仕様ありきだから考えても仕方がない 実際、コンパイラが頑張ってコードを生成しまくってるだけ
yield はスタックを保存しておく必要があるはずだから 実装の仕方によってはオーバーヘッドが気になる
>>401 普通に自前で Current と Next() 実装したようなコードが生成されるだけだよ。
なるほど そういう風に実装されるのか
404 :
デフォルトの名無しさん :2010/04/17(土) 13:22:00
yield なんて読めばいいんだ〜 yieldの効能はよさそうだよね
いーるど
>>394 とりあえず、LINQ to Objectだと
たかだか10%の(局所的な)処理速度の低下なんて殆ど無視できるけど、
キャッシュ機能があるメソッドもあるのでメモリ消費量は要注意
q.Reverse().Reverse().Reverse().Reverse().Reverse().Reverse().Reverse().Reverse().Reverse().Reverse();
とかやると、メモリ的には配列を10個コピーするようなもの
流石にこんなことはしないだろうけどw
じゃあ例として出すな。あほか。
Skip(1)を呼んで再起呼び出しなんてやってると えらく効率の悪いものになるよ。
DBはトランザクション含めて全部自動化してほしい
汎用的なリスト処理を統一された方法で単純に記述できるのは素晴らしい。 LINQ to ObjectだとSQLの知識は関係ない。 LINQ to SQL/Entityだったら生成されるSQL文チェックしたりしないといけないんで必要。
411 :
デフォルトの名無しさん :2010/04/19(月) 09:52:13
http://msdn.microsoft.com/en-us/library/system.windows.application.unhandledexception%28VS.95%29.aspx このサンプルの例外のところがよくわからないので教えてください。
        private void Application_UnhandledException(object sender,
            ApplicationUnhandledExceptionEventArgs e)
        {
            if (e.ExceptionObject is FileNotFoundException)
            {
                // Inform the user
                // Recover from the error
                e.Handled = true;
                return;
            }
            // Exception is unrecoverable so stop the application and allow the
            // Silverlight plug-in control to detect and process the exception.
        }
このメンバ関数のApplicationUnhandledExceptionEventArgsが次のようなエラーになります。
エラー 1 型または名前空間名 'ApplicationUnhandledExceptionEventArgs' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
usingはネットで調べていろいろ足してみたのですが解決しませんでした。
どのようにすればいいのでしょうか?
ApplicationUnhandledExceptionEventArgs は、 System.Windows 名前空間にあるみたいだけど? アセンブリは追加してある?
413 :
デフォルトの名無しさん :2010/04/19(月) 09:58:17
using System.Windows; はいれてあります。 using System.Web; のように参照がいるのかと思ってそっちを見てみましたが そちらにはusing System.Windows;はなさそうなのでどうすればいいのか・・・
414 :
デフォルトの名無しさん :2010/04/19(月) 10:06:42
エディションの違いとかもあるんですかね? サンプルで拾ってくると製品版のvsで作ったプロジェクトがほとんどで EEだとそのまま読み込めなかったりします。 それを自分で移植してるとほとんどこのエラーの引数のところで引っかかります。
using してエラーになってないなら、参照を入れる必要はないよ。
416 :
デフォルトの名無しさん :2010/04/19(月) 10:19:57
using がエラーになってるなら、参照が足りてない。
>>418 はい
sliverlightでやってます
プロジェクトの作り方間違えたのかな・・・?
wpfブラウザアプリケーションでプロジェクト作ればいいんですよね?
違うよ SilverlightはSilverlightアプリケーションプロジェクト WPFブラウザアプリケーションとは全くの別物 VS2008なら別途Silverlightツールキットのインストールが必要 VS2010には最初から入ってる ExpressならVC#ではなくVWDを使う
>>420 あーそういうことですかorz
ありがとうございます。
上位のWPFはそのまま作れるのに 下位のSilverlightがToolとWebdeveloper必須ってのがクソ
上とか下とかいう問題じゃなくてSilverlightはもともと Webサービスのクライアントとして使うものだし WPFと違って.NETのバージョンとは無関係だから当たり前
424 :
デフォルトの名無しさん :2010/04/19(月) 11:06:58
内部のC#部分は.net依存ですよね・・・
本家の.NETとは別系列のCLRがプラグインに入ってるんだよ 実行に.NETはいらん
427 :
デフォルトの名無しさん :2010/04/19(月) 11:13:32
銀光にそんなものはない。 と思う…
Visual Studio 2008 で、Silverlight 3 ベースの Web 開発を行うためのアドオンです。このアドオンと共に、 Silverlight 3 開発者向けランタイムと Silverlight 3 SDK もインストールされます。このアドオンは、 Visual Web Developer を含む、すべてのバージョンの Visual Studio 2008 Service Pack 1 で動作します。 これだとVWDなくても作れそうだけど実際は作れないんでしょ?
430 :
デフォルトの名無しさん :2010/04/19(月) 12:07:38
>>429 今環境作ってみましたがVWD側だけですね
VC#のIDEにはSliverLightの項目はでませんでした
2010Expressのiso版落としてVWDだけインストールして VC#用のテンプレートだけ抜け
2001の頃からListViewのカラムの幅の変更が反映されない不具合が ずっと修正されてないよね
されるときはされるのがイミフ
delphiの IdHttp1.Request.UserAgent := 'Gozilla/4.0 (compatible; test test 50)'; IdHttp1.HandleRedirects := True; この処理をC#でしたいのですが、どう記述すればいいのでしょうか 上の方は何となくググって推測できたのですが、もう1つがわかりません。 WebClient d=new WebClient(); d.Headers.Add("User-Agent", "Gozilla/4.0 (compatible; test test 50)");
ググるって、、IdHttp1を調べてWebClient調べるだけだろう? ってまあオレも調べてないけど、AllowAutoRedirectプロパティとかそれっぽくない?
436 :
デフォルトの名無しさん :2010/04/19(月) 17:43:40
WebClientって細かい制御できたっけ? WebRequestだといろいろ指定できるんだけどな 軽くぐぐってみた感じだとAllowAutoRedirectあたりがそうかな?
次の行から、今日からあとの日を抜き出して配列に入れるラムダ式の書き方を教えてください。 2010/04/17 2010/04/18 2010/04/19 2010/04/25 2010/04/30 2010/05/17 2010/05/18 2010/05/30 string[]で読んで、DateTime.Parseして、DateTime.Nowと比較して、という方法はできますが、1行でスマートに書きたいです。 よろしくお願いします。
>>437 それ宿題?
C#の宿題スレは機能してなかったな・・・
しかし、なんでダメな人って行数の短さにこだわるのかね不思議。 簡潔なことと短いことの区別がついてないんだろうかw
440 :
デフォルトの名無しさん :2010/04/19(月) 19:17:11
>>439 あと分かっててあえて分からないふりして住人試すようなのもいるしなあw
SelectでParseしてWhereで比較してToArray。 SelectはWhereのところに混ぜちゃってもいいけど。
days.Where(n => DateTime.ParseExact(n, "yyyy/dd/MM", null) > DateTime.Today).ToArray(); まあこんなもんだろ こんなバカな問題考えるまでもないな
さりげない罠乙w
GCHandleの使い方で少し悩んだ Pinnedで使う場合はGCHandle.ToIntPtrじゃなくて インスタンスのAddrOfPinnedObjectの方を使わないといけないのね やれやれ
ParseExactじゃなくていいと思うが…。
447 :
デフォルトの名無しさん :2010/04/19(月) 19:37:11
>1行でスマートに書きたいです。 この時点であれだな
セミコロンで区切って1行で書くというトンチを効かせられない時点で素人だ。
449 :
デフォルトの名無しさん :2010/04/19(月) 19:40:49
>ラムダ式の書き方を教えてください。 >1行でスマートに書きたいです。 わかってて質問してるよな
450 :
デフォルトの名無しさん :2010/04/19(月) 19:41:55
そろそろゆとり特有の捨て台詞がくるかな このスレは無能なやつのあつまりですね とか
一応答えてるしそれは…
>>439 くだすれの初心者煽ってる時点で十分ダメ人間だろカス
なんでここ見る必要があるんだ?ボケ
>>438 宿題じゃないです。
>>440 ,449
ほんとにわかってないです。
>>441 コードだとうれしいです。
>>442 ありがとうございます。
まだ自分で書けないので、ひとつひとつ覚えていきます。
このコードをデバッグで実行してみて、すこしwhereについてわかってきました。
ほんとうに感謝しています。
罠って何だと思ったらddとMMが逆なのか。
「今日からあと」って日本語としておかしいけど、「〜から」って起点だから今日も含むんじゃないのか
C#ならありそうだから聞いてみる panelのどれか一つを切り替えて表示してくれるファンクションとかあらかじめ用意されてないの? ないなら簡単な方法を教えてちょうだい!! とりあえず今は下みたいにしてる・・・ public void controlVisibleTrue(Control control) { panel1.Visible = (control == panel1) ? true : false; panel2.Visible = (control == panel2) ? true : false; panel3.Visible = (control == panel3) ? true : false; Refresh(); }
458 :
デフォルトの名無しさん :2010/04/19(月) 23:08:20
bringtofrontで最前面に持ってこれるよ
すっきりソースを見せてくださいな・・・
461 :
デフォルトの名無しさん :2010/04/19(月) 23:11:45
>>458 の補足
panel1〜3がどういう状態かわからんので
panel1〜3を管理するpanelBaseってのを用意して
panelBaseの配下にpanel1〜3を入れる
その状態でpanel1〜3はDockをFillにしておいて
bringtofrontで表示したいpanelを最善面にする
panelBaseを用意するのはzオーダー関連を楽するため
462 :
デフォルトの名無しさん :2010/04/19(月) 23:13:44
>>460 やり方はいろいろあるんだよな
panel1〜3の親が何かしらないがFindでコントロールを検索もできたはずだし
panelに名前とか付けておけばそれで検索もできるし
>>461 普通に考えてpanelBase(命名も謎だなw)は不要だと思うけど。
移動するのでもない限りね。
465 :
デフォルトの名無しさん :2010/04/19(月) 23:26:27
>>464 まあ状況がわからないのでとりあえずだよ
コンテナの中でFillで表示するならベースはいらないけど
そうじゃない場合はベースがあった方が楽ってだけ
タブ無しのTabControlが一番素直じゃないか?
string変数で「<」を使いたいんだけどどう表現すればよろし?
468 :
デフォルトの名無しさん :2010/04/19(月) 23:38:47
>>466 どういうことをしたいのかわからんからとりあえずはこれでいいんじゃね?
>>466 何かメリットがあるとも直感的とも思えませんが。
470 :
デフォルトの名無しさん :2010/04/19(月) 23:39:32
>>470 いややっぱなんでもない
string型の変数aにHTMLのソースを入れてそれをwebBrowser1.DocumentTextで直接表示させようとしたけどうまくいかなくて原因が<>を特殊文字と認識してるんかと思ったら違った
どうやったら直接表示できるようになるんですか?
コード書いてると命名でつまずく。 簡潔な名前付けるの難しいね。いらん時間と脳内リソースを使ってしまう。
ローカルならiとかjとかsとかoとか。 プロパティにするようなやつなら、一般的なクラスについてるような感じか、 プロジェクト当初に作った用語集から持ってくるだけ。 そんなに大変?
475 :
デフォルトの名無しさん :2010/04/19(月) 23:53:42
慣れもあるんじゃね? コードいっぱい書いてるとそのうちこれでいいやとか慣れでぱぱっと決めちゃうけど 最初ってなんか妙にこだわってしまうときあるよ
>>472 ぎゃあああ
すまん言葉が足りなかった
「エンコードをかけなくても表示できるが、HTMLのリンクのコードを認識せず、webbrowserに文字列だけが表示されている状態になっている」
どうしたらリンクがかかるのだろうか
クラスとか、メソッドとか。 panelBaseの微妙さがわからんからこういう命名よくするわ。
478 :
デフォルトの名無しさん :2010/04/19(月) 23:58:13
>>476 晒せる範囲でそのhtmlを入れ込んでるコード見せて
>>477 まさか適当につけたpanelBaseを引っ張ってこられるとは思わなかったorz
デザイナーがつけたpanel1とかで十分なプロジェクトなんだからpanelBaseでも十分だろうにw
>>478 コードと言ってもこの1行だけなんだが・・・
webBrowser1.DocumentText ="<html><body><a href=\"test.html\">リンク</a></body></html>";
481 :
デフォルトの名無しさん :2010/04/20(火) 00:03:00
なんだその全角は。
483 :
デフォルトの名無しさん :2010/04/20(火) 00:05:31
2chの専門板もはてなのようにポイント交換で疑問解決とかいいかもな 時々そう思う
いらね。
>>481 うわぁ・・・
ありがとうございます
吊ってきます
F#とかC#とかなんでMicrosoftは 英単語一文字+#が好きなんだろう。
C++++ よりは C# の方がいい。
アップルのi+英単語みたいなもんだろ。
でも実際C#ってC++++というよりは Delphi++だよな
は? あんな"Visual Pascal"とは似ても似つかないと思うけど。
作った人一緒だしね。
492 :
デフォルトの名無しさん :2010/04/20(火) 22:17:24
C#はいろんな言語の集大成でしょ
似てるというなら、JavaというかJ++。
C# が受け良かったし、C# = .NET の代表の地位を確立したし、それに合わせてるだけかと。
DelphiとJ++とC#の設計者は同じ
J++も一緒なんだ。知らなかった。
Delphiのメイン設計者が、C#のメインチームにいる、が正しい。 Java, Visual Basic, C++の影響を受けている。 MSDNを通じて集積された無数の要求が反映された、完成度の高い言語。
COMオブジェクトをJSON.NETでJSONにしたいんだけど、なんだかだめみたい。 COMオブジェクトはシリアライズできないんでしょうか。 COMオブジェクトをシリアライズする方法があれば教えてください。
無理
>>499 回答ありがとうございます。
めんどくさいですが、ラッパー作ります。
COMオブジェクトのデシリアライズはできないとしても、
シリアライズくらいはさせて欲しいもんです。
JSONのシリアライズは外のライブラリ使わなくてもWCFでサポートされてるよ もちろんCOMは無理だけど
デシリアライズできないシリアライズに意味はあるのでしょうか
503 :
498 :2010/04/20(火) 23:18:06
>>502 永続化目的じゃないです。
JavaScript ⇔ COM の通信をやろうとしてるので、
COMのプロパティを送るのにJSON使うのが楽なんです。
そりゃ、メソッド呼び出し自体はCOMを通して行うますよ。
これという答えは無いけどさ、どうやってC#に詳しくなったの?
10年やってりゃ、そら詳しくもなるさ。
C#でなんかキャラクターがマウスポインタを追いかける マウスストーカーという類のを作ってみたいのですが サンプルプログラムが見つかりません。 何か紹介していただけるとありがたいです。 よろしくお願いします。
その程度ならタイマーとピクチャーボックス組み合わせて 短時間でピクチャ−ボックスのポジションをマウスカーソルんとこに入れ替える とかでいいやん。
508 :
デフォルトの名無しさん :2010/04/21(水) 01:15:56
いまどきそれをC#で書く人っているのかな?w いろいろやり方は思いついたけど ちゃんと動く物を書くのには時間が欲しいね 今頭の中にあるのを書くと ・アクティブにならないFormを用意 ・このFormのスタイルをNoneにして枠を消す ・タスクトレイから終了できるようにする ・画像を用意 あとは一番簡単な実装だとシューティングゲームのホーミングと同じで 自分の位置とカーソルの位置を計算してある一定以上離れてる場合は ベクトルの計算して少しずつよって行く感じか
509 :
508 :2010/04/21(水) 02:06:24
できたけどもう寝てるか?
起きてます。
おれは寝てます。
寝言は寝て言え
フォームアプリの基本だと思うんですが、質問させてください。 ウィンドウの大きさをmaxSizeとminSizeで挟みうちにして無理やり固定してるんですが、 それ以外に大きさを固定する方法ってないんでしょうか? そういうプロパティがあるんでしょうか?
514 :
506 :2010/04/21(水) 02:15:53
>>509 解答どうもです。
今寝るところでした
そんなに速く作れるなんてすごいです。
しまった タスクトレイにアイコンだしてねーわw
というかタスクトレイにアイコン出すのってアイコン画像が無いとできなくね?
518 :
508 :2010/04/21(水) 03:16:59
>>513 FormBorderStyleにFixedxxを指定すればサイズ変更できない
画像無くても動くバージョンできた
トレイから削除も可能
起きたらあげるわ〜寝る
フォルダやファイルの構成を保存しておきたいんですが どういうデータ構造がいいんでしょうか? TreeNodeCollectionみたいなものがあったら楽なんだけど
10年も使い続けなきゃ詳しくなれないのか
10年やってるが未だにどぼん見ながらやってる インテリセンスのせいなのかクラス名が長くて覚えられん
10年やってるやつってそれほど多くない。 2002年にVS.NETが出たんで、そこからだと8年。 10年やってる、ってのは、四捨五入したか、ベータからやってたやつだな。
プログラミングしない俺がC#2001stdが出た日に買っちゃったんだよね 雑誌で見たのかなんなのかなぜ買ったのかも思い出せない C++,VBと挫折してきたから新しい言語に飛びついたのかもしれん
なにそのパチもんw
525 :
506 :2010/04/21(水) 08:04:44
>>515 おはようございます。
サンプルどうもありがとうございます。
これをもとに色々頑張ってみます!
まだ3年くらいだぜ
>>519 どうって、普通にフォルダノードクラスのツリーにするんじゃね
どういう方向の回答を期待してるのか分からん
Treeのまんまだとシリアライズできねぇ死ねってことじゃね
最適化皆無でいいなら自前で作るのもそんな大変じゃないかと・・・
WPFならデータをそのまま全く加工することなくTreeViewに表示できるから超簡単
プログラマーは10年以上やってるがC#は初心者 仕事で2ヶ月だけやらされた Googleとヘルプとインテリセンスを活用してなんとかアプリ1本作った たぶんかなり非効率的なコードになってると思うけど客や上司にソース見せる訳じゃないから気にしない 納期を守るのが一番大切
こういう奴が最終的にチームに迷惑をかける
取りあえずDllImportだらけとかじゃなきゃいいんじゃね?w 10年もやってればオブジェクト指向は出来てるんだろうし ラムダやらLINQは別に使いこなせなくてもいいと思う まぁ俺は使うが
なんでハゲだとわかったんだ
男は皆心にハゲを持っているものだからさ
人よりちょっと薄いだけだ まだハゲちゃいない
男ははげる はげないやつはガンになりやすい
よし、女になるぞ
8年間C#やっていて今日初めてクラスライブラリを使用した これめちゃくちゃ便利じゃないか 毎回、同じクラスや参照を追加してたのがばからしい
今までどんなアプリ作ってたの?
そんな餌に俺様が釣られクマー
みんなも使った方がいいよクラスライブラリ プロジェクトに追加して編集したら ちゃんと元のクラスライブラリも変更されるんだよ 複数のプロジェクトで1つの汎用クラスを開発できるんだよ! めちゃくちゃ便利
>>541 いろいろ小物
>>542 釣りじゃないよ
昔のC#はクラスライブラリが作れなかった
作れてもコピペしなきゃならなくて面倒なだけなので
使わなかったんだよ
>昔のC#はクラスライブラリが作れなかった え?
>>546 そのまんまコピーした?
ちょっとでもいじってるならそっちを出さないと意味ないよ
>>547 あ、すいません
ブラウザのほうの不具合っぽいです
Ctrl+Cだと2重になりませんでした
クラスライブラリを使わなかったのか じゃあConsole.WriteLineも使わなかったし new Form()とかも使わなかったのか。 それどころかint x=10; とかも使わなかったなんてすごいな。 8年間どんなことをやってきたんだろう。
つまんねー揚げ足取るなよハゲ
XPでVistaや7のウィンドウスタイル (閉じるボタンとか最小化ボタン) のアプリケーションを作成することって できますか?
そりゃ別に機能が違うわけでもないし技術的には作れないわけはないが あ、でも勝手にその辺の画像使うのはライセンス的にまずいかもしれんな
いろいろやり方はあるがそんな無駄なことをするのか?
554 :
551 :2010/04/21(水) 21:36:03
例えば、Windows Live MessengerとかSkypeとかは XPでもVistaや7のようなボタンのスタイルなんですが C#とかVBの標準機能ではなくて独自に組んでるんですかね?
ウィンドウ枠を消してウィンドウの中に普通のボタンを置いてるんだよ
C# があって F#もあってJ#もあった D#とE#はどこいった。
559 :
551 :2010/04/21(水) 22:00:12
560 :
デフォルトの名無しさん :2010/04/21(水) 22:01:32
やり方は簡単なんだけどな
C#はUser32も使えるのか。 これは便利だな。
>>557 DとEiffelを.NETにしろ。(もうあるけど)
自分でアプリ単独でやらなくても、システム全体のデザインをVista風に変えるフリーウェアがあったはず
C#はアプリ内で完結できる事ならとてもやりやすいけど、 他アプリやシステムへの干渉とかになるととたんに大変になるね。 そういう用途はC++の方が向いてるかな
寝ぼけたことを
private uint? ID_; のように「?」記号が付いている型宣言を見かけたのですが、 private uint ID_; と比べて、この「?」記号にはなにか意味があるんでしょうか?
Nullable
Nullable
なるほど謎が解けました。ありがとうございました。
null許容型 値型にnullを許容した物 って調べれば直ぐ出てくると思うが
書き込む前にリロードしろよな
うんすまん
>>572 グーグル先生、記号使えないんでちょっと困っちゃったんです。今は反省している
しかしキーワードが?しかないと検索も難しい ヘルプのキーワード検索でも?でNullableは引っかからない
そういうときは、MSDNでキーワードを調べような。
うん
素直だな
まあ、
>>568 なんかは予め知っておくべきことだとは思うけどそもそも。
程度問題だけど、一々泥縄式に調べててら効率悪すぎるわけで、
普通は手を動かす前にこの程度の基本的なことは頭に入れておくでしょ。
ただNullable使ったことない…
俺も使ったことないし使いどころわからん
DB使うときとか便利よ。
参照型でnullに意味をもたせる場合と同様だと思いますが....
遅延評価が必要で、かつ初期値を入れられない時にbool使うのが嫌で使った気がする
DBは確かに
DBNullとかキモ過ぎ これのせいで何度はまったことか
VS2010日本語版も完成したか 胸が熱く財布は寂しくなってきたな
戻り値を2つ用意したい場合どうするんだっけ? 何か方法あったはずだけど
タプル
Regexでこういうパターンを使いたいんだけどうまくいかない "\"\." ドットのところで認識できないエスケープシーケンスとなる @つけると今度は"くくりがおかしくなるし どうすればいいですか?
タプル
>>597 >>598 なるほどそうすればいいのか
テキストボックスなんかで入力された文字列をパターンとする場合は
テキストボックスに"\"\."と書くだけでいいんですよね?
もっと@の機能を強力にしてほしいな
気を利かせて便利にするとそれが当たり前になって要求がエスカレートする典型例を見た
あの時代は夢があった
し〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜ん
斉藤由貴がCMしてたなぁ
機能を強力にする=マニュアル読まないでも使える
ざわわざわわ
画像ダウンロードするとき一定時間応答がなかったら キャンセルさせたいんだけど何か良い方法ないですか?
タイムアウトさせりゃいいじゃないか
connectionのタイムアウトは指定できなかったはずだから スレッドにして強制停止させればいいよ
既にスレッドにforeachで複数の画像をダウンロードするようにしているので ひとつのサイトが応答しないだけですべて中止になってしまいませんか? スレッドの中にスレッドを書くことってできましたっけ? 何か良い方法ないですか?
お前自分で答え書いてんだろが まず試せよ
ロジックを晒せよ。晒せる範囲でいいから 日本語で全部やり取りするの? 回答者がお前に合ったサンプルコードを全部かかないといけないの?
あとTcpClientはタイムアウト指定できるけど
>>616 馬鹿でもなんでもねーだろ
C#でダウンロードするプログラムっていくつか作り方があるぞ
それさえもわからねーのに回答したってしゃーねーだろ
>スレッドの中にスレッドを書くことってできましたっけ? できるよ はいおしまい
ガキかよw
do_work() { foreach() { wc.DownloadFiles(); } } 今やってるのこれだよ で、wc.DownloadFilesAsync();にするとキャンセルはできるが 多分、一つ目の画像がDLできてないのに次々DLされるはず 1個づつDLしたいんだよ。 はい、解答よろ
DownloadFilesという関数が見つかりませんでした
ID無いと相変わらずぐだぐだだな それを晒したとかw
答える気ないし、帰っていいよ
役立たず
うむ
>>506 のように日本語だけで質問したのに丸ごと答えがもらえる人と
>>609 のように回答をまともに貰えないどことかスレの空気を悪くする人の差ってなんだろうw
DownloadFileAsyncの中で ・別スレッドでダウンロード開始 ・そのスレッドのタイムアウト待ち をすればいいだけの話じゃん
難しくて答えられないと煽るカスがいるだけのこと
>>627 日本語で言われてもわからん
そうやりゃいいのぐらいわかってるんだよ
やり方教えろつってんのがわかんねーのかよカス
実例を提示しろ
ちなみにWebClientは複数のスレッドから呼び出そうとすると怒る使えない子
使えないクラスとかさ、同じような機能のクラスが多すぎるんだよ 整理しろよボケナスが! ArrayListとか一生残すのか?C#ある限り永遠にあるのか? クソッタレが
なので単純に別スレッド使えといってる人はアンポンタンです まぁn個の画像取得にn個のWebClientこさえて悪いってことはないが…
まだ日本語で続けるのか?
現実解として620に手を加えるなら フラグを用意する DownloadFileCompletedを受け取るようにしておく イベントが発生したら常にフラグを無効にする DoWorkの方ではフラグを有効にしてからDownloadFileAsyncにする フラグが有効な間はスピンロック方式でブロックする これでキャンセルにしろ完了にしろ1個ずつ落とせる
よかったやん
638 :
620 :2010/04/22(木) 14:50:46
また問題でたわ wcでダウンロード中 すでにDLしたファイルなのに削除しようとしてもできない なんでロックかかってるんだ?
disposeしろ
640 :
620 :2010/04/22(木) 14:58:56
disposeしたらforeachの中で何度もnewしてイベント追加しないといけないんだけど そうしろとおっしゃるの? てか、disposeしなきゃならないならそのように書いとけよな disする必要あったりなかったり、ほんとイライラするわこれ こんな中途半端なクラス作るなボケ
using使わないのが悪い
WebClient使うの止めればいいとは誰も言ってあげないのね
>>644 使い方次第だよ
所詮は道具
実現したいことにあわせてどれを使うか選べばいいだけ
道具が悪いんじゃなくて使い方を知らないのが悪い
知らないなら知らないなりにコードを晒して他人に見てもらえば
いいのにアドバイス無視して日本語でごちゃごちゃ騒いでるだけ
たぶんHttpWebRequestなんて分かるかボケって言われそうだからね。 AT車に乗っててMTみたいに変速できないって言われてるようなナンセンスさを感じる。
647 :
620 :2010/04/22(木) 15:24:04
>>643 おまえは全部のクラスにusing使うのか?
ヘルプにdisposeしないとファイルロックしたままになんて
説明どこにもないが?書いてあったらするわボケ
>>645 >>620 これ以上何を晒せと?
自分の無知を棚に上げて騒いでるボケ。
書いてあってもバカそうだからしないだろお前
すべてにおいて「コード晒せ」「日本語で全部やるな」に集約されてるよな コード見ればアドバイスとしてusing使った方がいいよとかでただろうに もしくは修正コードを書いた人がusing使うパターンを作ってくれたかもしれないのに
日本語で言われても分からんよね コード晒してもらわんと
WebClientがDispose必要ってどこで知ったんだよ
>>652 もうお前は喋らなくていいからクソして寝ろ
>>651 do_work()
{
foreach()
{
try{
wc=new();
wc.DownloadFileAsync();
while(){} //タイムアウト5秒
}
catch{}
finaly{wc.dispose();}
}
}
ほら書いたぞ
いろいろと痛いよね
Disposeすればいいに対していちいちDisposeしなきゃいけないの?って来るのが笑える。 常に最適解があると思い込んでるね。
スマートに書きたいんだよ
あれ、削除してないじゃん
659 :
620 :2010/04/22(木) 15:52:27
あのなー煽るカスは死ねよマジで お前このスレなんだと思ってるわけ? くだすれなんだよわかる? おまえ初心者煽るぐらいしか楽しみないのかよ? お前新入社員が初めて使うソフトをその日に習得できなければ煽るわけ? 結局初心者煽ってる奴なんて程度がしれてるわ おれはプログラマじゃないが、おれの得意分野のことができない奴に いちいち煽る気しないな。そんなの誰でも通る道だしw 同じスタートラインに立って同じ時間学習してそれで差ができたらまだしも 煽ってるお前らは一体何年プログラミングしてるんだ?え?カスが 俺はまだ2ヶ月目だ。2ヶ月の奴が10年やってる奴と同じことできないと煽るわけ? そんな気持ち悪い奴らばかりなのか?プログラマってのはよ
>2ヶ月の奴が10年やってる奴と同じことできないと煽るわけ? 最初の日本語の説明見てできると思ってないから コードを晒せと言ったんだよ こんなダウンロードコードなんて晒したところでどうってことないから心配しなくてもw どうしても晒しちゃまずい部分だけ書き換えるとかすればいいんだよ アドバイスも聞けないってことはプログラマー以前の問題
661 :
620 :2010/04/22(木) 15:56:10
do_work() { foreach() { try{ wc=new(); wc.DownloadFileAsync(); while(){} //タイムアウト5秒 catch{} finaly{wc.dispose();} File.Delete(); }
>>659 お前こそこのスレなんだと思ってるわけ?
いつもこうだよ
質問する場所を間違えてる
ずうずうしさは20年クラス
くだすれなんだよわかる?(笑)
665 :
620 :2010/04/22(木) 15:57:47
>>660 コードが長いんだよ
間にいろいろ詰めてるからな
デリゲート無駄に行取るし
てか、必死でコピペしたところでするーすんじゃねーだろーな?
別にいつも質問に対して回答が来ないわけじゃないけど、 香ばしいのに反応して煽る奴が常駐している。 逆に言うと、煽られた場合は平均以上に君は香ばしいの。
667 :
620 :2010/04/22(木) 16:01:56
お前らどうせ学校で同級生に差つけられてたから煽ることができず、 ケンカもできないから卑屈になったんじゃねーの? そして、目下の人間を煽ることでようやく自尊心を回復できるとでも妄想抱いているんじゃないの? もしかしたらおまえら俺のことライバルと思っているんじゃね? 俺みたいな才能ある奴が伸びてきたら自分の仕事取られるとでも思ってるのか? あのなーこんなスレ覗いているようなのは仕事でやってるわけないだろ 同僚に聞いた方が100倍効率いいに決まってるだろ だから心配せずに教えろ
うちで働きませんか?
凄いのはこの粘着は外れがないのな。 煽った奴は例外なく火病起こして伸びるんだわ。
?が多すぎて読む気にならないです^^
>>665 >>1-
>>3 を読めコード貼るためのサイト紹介してるだろ
直近でもそのサイト使ってサンプルコードがもらえてるだろう
すべてにおいて自分よがりすぎる
素晴らしい選球眼だな
久々にレベルの高い基地外が来たな。面白いからもっとやれ
674 :
620 :2010/04/22(木) 16:09:16
void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bw = sender as BackgroundWorker; string url = "", file = ""; int i = 0, count = (int)e.Argument; foreach (Item item in Items) { url = item.URL; file = item.FileName; Directory.CreateDirectory(Path.GetDirectoryName(file)); downloadFileAsync(url,file); if (File.Exists(file)) { if (!((new FileInfo(file)).Length > 10000)) File.Delete(file); } bw.ReportProgress(++i); if (bw.CancellationPending) { e.Cancel = true; break; } } } ほらよ
>>665 の中身なんて思い込みだもんな
コード多いんですが・・・って言えば
>>1 >>3 のサイトを知らなくても
スレ見てる人がこのサイト使えばいいよとアドバイスできるし
住人は冷たいわけじゃないよ?
いろいろちょっとやれば済む手続きをぬかしてファビョってるから
対処しようがないだけなんだよw
気が向けばぐぐってでてこないサンプルコード丸々書くようなお人よしも常駐してるんだしw
IDEの自動インデント調整機能がなければ無視するレベルだなw
678 :
620 :2010/04/22(木) 16:26:11
private static void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e){ done = true; } public static void DownloadFileAsync(string url, string file){ if (wc == null){ wc = new WebClient(); wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted); } try{ wc.DownloadFileAsync(new Uri(url), file); done = false; DateTime start = DateTime.Now; while (done == false){ if (DateTime.Now - start > timeout){ wc.CancelAsync(); wc.Dispose(); return; } } } catch { } finally{wc.Dispose();} return; }
679 :
620 :2010/04/22(木) 16:30:15
あほらし 面白そうなので独自設計でコード書いてたけどw
681 :
620 :2010/04/22(木) 16:42:40
なんだせっかく書いたのにシカトかよ あれだけ偉そうに言ってた奴はどこ行ったんだ? 早く評価くれよ もしかしてツッコミどころがないのかな?w
やっぱりよくわかってないようだねw
683 :
620 :2010/04/22(木) 16:46:11
じゃあ教えてよ
684 :
620 :2010/04/22(木) 16:47:04
いっとくがこのコードはおまえらが言うように書いたからな 間違いあるならおまえらが間違ってる おまえらの間違いはおまえらが修正しろよ で、まだかよ?
別に褒めて欲しくないからいい
686 :
620 :2010/04/22(木) 16:48:50
何だ口だけかよ 情けない奴らだな 煽るだけ煽りやがって 糞ったれが
ここまで来ておちょくられただけだったのを認めるのも
>>620 のプライドに関わるからな。
ほめて欲しいとは思ってないよなw ほめる気も報酬払う気も無いのはわかってるからw
ここは初心者の質問に便乗してクソが集まり勉強するスレ
690 :
デフォルトの名無しさん :2010/04/22(木) 16:52:34
timeoutのテストできねーな・・・
いらつくな
ある文字のUTF文字コードを取得するにはどうすればよいですか。 Encoding utf = Encoding.GetEncoding("UTF-8"); string word = "あ"; byte[] bytes = utf.GetBytes(word); で、「あ」のUTF-8は、E38182なのですが、 bytes[0] = 227 bytes[1] = 129 bytes[2] = 130 となります。
698 :
デフォルトの名無しさん :2010/04/22(木) 18:54:16
E38182これをバイト単位に分ける E3 = 227 81 = 129 82 = 130 16進数と10進数の違い
>>676 配列の中を16進数で表示させたらわかるよ
>>697 できてましたか…。
>>698 10進数を16進数にするには、どうすればいいんでしょうね。
>>699 それってどうやるんですか?
そうすると、
Encoding utf = Encoding.GetEncoding("UTF-8");
string word = "あ";
byte[] bytes = utf.GetBytes(word);
string utfcode = "";
foreach(byte b in bytes) {
string sixteen = bを16進数にする処理。
utfcode = utfcode + sixteen;
}
みたいに書く必要があるってことですか?
List<string> list=new List<string>(); ↑実際には別クラスの戻り値 string[] strs= list.ToArray(); これは内部でどんな処理しているのですか? foreachで回そうと思っているのですが List<string> list2=list; で回した方が効率的ですか?
後で読んだときに分かりやすいように書けばいいよ
>>702 意味がよくわからない。
foreach(string item in list) でいいんじゃないの?
何でforeachで回すために別変数に受けるの?
>>704 どこかで配列の方が処理が速いと書いていたのでそうしようと思いました
最初から配列なら速いかもしれないが 配列にコピーするのはメモリと時間を食うぞ
いいえ違います
>>707 配列の場合は参照渡しではないということですか?
>>709 いや参照でしょ
stringは参照だよ
なのでListが持ってるCountを元にstring配列を用意して
参照の張替えするだけでしょ
>>710 わかりました。参照の張替えやってみます。
えw 話がおかしくなってないか?w
>>710 その参照を張替を要素ごとにするから
要素ごとポインタ用のメモリを確保するということですか?
List<string> list2=list;
だと、1つ確保すればいいだけだからメモリを余り食わないという理解でいいですか?
メソッドの内容は10行以上書かないようにしているんですが、いいですか?
10行は流石に少なすぎると思う なるべく30〜50行以内にした方がいいとは思うが 100行くらいまでは許容範囲内
え?
関数分けすぎたらお前のコードは分からんと言われる
721 :
719 :2010/04/22(木) 21:38:36
結論から言うと参照じゃなくコピーを作ってることになるのかな? listをわざわざArrayにするのは止めた方がいいかもねw
722 :
719 :2010/04/22(木) 21:40:34
関数内は短くしたほうが見やすいと思ったけど 確かに短くするということは関数だらけになるわけで わからなくなりそうですね
クラスは、値のようにスタック上にメモリを確保するのではなく、動的にメモリを割り当て、 かつGC の対象となるため、こうした処理を多量に反復するような場合)、 メモリ確保の観点でオーバーヘッドの高い処理となる
725 :
719 :2010/04/22(木) 21:49:13
ああ,ぼけてた いいのか 新しく書き換える場合は参照も入れ替わるから 参照先が同じかどうかって確認する方法ってあったっけ? C/C++だとポインターの中身を表示すればよかったけど
ほんとあれだな ID無いと自演なのか成りすましなのか質問者なのかさっぱりわからんな
次のテンプレに質問者はトリップつけるように明記したらどうでしょう 数人の基地外がずっと粘着してるみたいだから
同意
そんな事をしなくてもいつのまにかスムーズにいくのがプログラム板
>>721 .NETの命名規約的に、ToXxx ってなってる類は要素のコピー作る。
ToArray() した時点で、配列側をいじっても List には反映されない。
コピーつっても参照情報のコピーだから
要素の中身を変更すれば元の側にも反映されるんだけど、
.NET の string は immutable に作ってあるから変更できない。
StringBuilder.ToStringは以後そのStringBuilderを使用しない限りはコピー作られないけどね
>>731 今はそういう実装かもしれないが、そうでない実装も出来るだろ。
WPFのC#でフォルダ内の画像をファイルから読みこんで表示するのは、どうしたらよいですか? フォルダ内の画像の数はわからないので、xamlでは指定できないと思うのですけど。 string[] jpgs = Directory.GetFiles(targetDirectory, "*.jpg"); foreach(string jpg in jpgs) { BitmapImage bmp = new BitmapImage(jpg); Image image = new Image(); image.Width = 200; image.Height = 150; image.Source = bmp; } これでなにが足りないのか、あるいはもっとこうしたらいいとか、アドバイスお願いします。
>表示するのは どういう風に表示したいの? サムネ?
WPFでできるかどうか知らんが、キャンバス用のデカイbmpを作って そこへサムネを並べるように転送するとかは? 他にも方法があるかもしれないが
まあ普通はListBoxとかつかってバインディング
>>738 そのListBoxのバインディング方法を教えてください。
先にBitmapImageで大きさを指定してImageに入れる方がパフォーマンスいいよ
簡単にコレクションコントロール作れて夢が広がりんぐだなぁ
>>743 ※重くなければ
.netもかなり嫌われてきたのにその上を行くからなあ
夢が萎みんぐ
>>745 WPFって表現の幅を広げるためにウインドウが今までのようなのじゃなく
ゲームとほぼ同じで動いてるからねえ
>>741 ありがとうございます。
そこで手に入れたWpfImageViewerApplicationをベースに、メインのイメージ(Image)を削除し、サムネイルだけにしてみました。
これだとサムネイルが小さすぎます。
ListBoxを使うと、サムネイルを拡大して表示することは無理ですか?
200×150ピクセル程度にしたいです。
>>742 ひょっとしてですが、ここをざっくり読むと、バインディングだと、ListBoxに表示(=スクロール型で、サムネイルが小さい)しかできないんでしょうか?
いわゆるエクスプローラー風に縦横にサムネイルを表示するのを想像してました。
そうするには、737の方法になっちゃうんでしょうか?
WPFってできないことは無いってレベルじゃないかな? 使いこなすのが大変なだけで 俺も勉強中なんだけどhtmlのCSSのような情報を書いておけば コントロールのスタイルをいじり放題みたいだし
>>748 はい。そっちでやってます〜。
Styleって、ViewerWindow.xamlでいいんですよね?
とりあえずこれの拡大縮小とか回転はいらないので、それを削って、ListBoxだけ表示してみました。
が、10枚くらい表示したら、サムネイルが小さくて。
ItemsPanelにWrapPanel使えばいい
しかしまぁよくVistaのときにWPFに完全移行しようとか考えたよね 今から思うと馬鹿じゃねって感じだけど 頓挫して当然だわ
>>754 おお。ほんとです。グレートすぎる!!!
大感謝。
>>752 DockPanelをWrapPanel
にしてみたら、ウィンドウのリサイズに追従しなくなっちゃったんですけど、
□□□□□|ウィンドウの外
でなくて、
□□□□□
□□□□□
みたいにするには?
>>752 いや、寝ぼけてました。ごめん。できました。いやできてないけど。
ItemsPanelをWrapPanel
を
DockPanelをWrapPanel
に間違えてました。
ItemsPanelをWrapPanelってどうやるんですか?
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
を、
<Setter Property="WrapPanel">
にしたら、値が不正とエラーです。
変えるのはそのサンプルのStackPanelの方
「ItemsPanelにStackPanelを使う」で Property="ItemsPanel"をProperty="WrapPanel"に変更するって発想はなかったわ
>>757 あり?
<DockPanel>
<StackPanel>
ボタン関係
</StackPanel>
<ListBox>
</ListBox>
</DockPanel>
ですけど、これを
<DockPanel>
<WrapPanel>
ボタン関係
</WrapPanel>
<ListBox>
</ListBox>
</DockPanel>
にしても、ListBoxには無関係な気がするんですけど。
試してみましたが、やっぱり関係なかったです。
ItemsPanelTemplateの中にあるだろ、StackPanel
http://codepad.org/PQR0i75N checkbox1にチェックを入れるとloadkashiClasses[0].check = true;でnullreferenceと例外を返されます。
21行目でちゃんと定義できてないんだと思うのですが何がいけないのでしょうか
WPFは慣れるまで苦労するなw
ttp://tsushima.2ch.at/s/news2ch60373.png つまり
ListBox.ItemsPanelというプロパティがあって
サンプルの方はC#風に書くとListBox.ItemsPanel = StackPanel ってことだ
ListBox.ItemsPanel = WrapPanel
にしてOrientation="Horizontal"以外に折り返し動作をする何かを指定すれば
所望の動作になると思う。WPFは知らんのでこの設定は不明
>>761 21行だけだとあくまでクラスの配列だけだよ
つまりクラスの参照の配列だけ
クラスその物も10個作らないと
クラス内部の初期化とかどうするのかわからんけどどこかのタイミングでこういう処理がないと駄目             for (int i = 0; i < loadkashiClasses.Length; i++)             {                 loadkashiClasses[i] = new kashiClass();             }
>>760 、762
詳しくありがとうございます。
だめもとで、
<WrapPanel Width="1000" />
としてみたらうまくいきました!
みなさんサンクスです。
>>763 >>764 回答ありがとうございます
ちょうど例外が出た40行目でloadkashiClasses[0].checkだけ初期化しようとしてみてたのですが
今回間違ってたのは初期化の仕方が間違えているということであってますか?
>>766 あれだとkashiClassが10個入る配列を初期化しただけなので、kashiClass[0]〜[9]には全部"null"が入ってる。→使おうとするとぬるぽ
という事で
>>764 みたいな感じでkashiClassのインスタンスを10個作って配列に入れてあげないといけない。
Formのサイズを保存しようと思ってFormのClientSizeを保存して Properties.Settings.Default.Reload(); とすると、サイズは反映されるけど中のコントロールの配置は変更されないんですが
Resizeイベント来てないのかしら
来てません・・・
じゃあ起こせ
C#のジェネリックデリゲートって C++のBoost::Bindみたいに引数や戻り値の数の差を吸収させるような書き方って出来ない? 具体的にはこう言うのが出来ないかなぁと・・・ var test = new List<string> { "test", "test2" }; test.ForEach( Console.WriteLine ); //OK test.ForEach(MessageBox.Show); //戻り値があるのでNG test.ForEach((e) => MessageBox.Show(e)); //もちろんこれはOK test.ForEach(System.Diagnostics.Debug.Print); //これはよくわからないが、条件付き属性なので作成できないやらのエラー ラムダ使えって話なんでしょうか
>>769 Resizeイベント無しでFormサイズが変えられている場合
どうすればちゃんとリサイズできますか?
というか、他にもっと良い方法がありましたら教えてください
最終的にAction<T>に変換できないなら無理
さらに言うとSystem.Diagnostics.Debug.PrintはDEBUGシンボル定義してないからエラーなだけだろう
むりか、諦めてラムダでかくお
>>775 それが定義してるんだ
あんがとよ!
糞ったれが バインドせずに手動でClientSizeに設定したらいけたわ お前ら知ってて教えなかったな
>>768 の情報だけだとお前がどうやってるかなんてわかるわけねーだろ
コード晒せっていってるだろ糞
ここの連中がバカばっかりで知らなかったのかもよ。 まぁ知ってて教えなかったのかもしれないけど。ここの連中は 「初心者バーカwww」と楽しむ人も多いし。
>>779 お金や仕事がもらえる客なら、どういうことで悩んでるか解決するために力を注ぐが
こんなところでの質問なんて不備があれば無視されるのは普通だろ
てかさーバインドするとResizeイベントが呼び出されないってなんで書いてないわけ? お前らこういうのどうやって知るわけ? こんなつまらないところで10時間もかかったんだけどwww まじで死ねよカス
>>782 頭固すぎ
>バインドするとResizeイベントが呼び出されない
じゃあ手動で設定してみよう->イベント起きた
で追求して調べてもいいし仕様なんだろうで置いておいてもいいし
WindowsFormsのプロジェクト作る FormのプロパティグリッドでApplicationSettingsのPropertyBindingのダイアログ開く ClientSizeに新規でSizeって名前のUserスコープの新規アプリケーション設定にバインド 雷アイコンからFormのResizeイベントにハンドラ作って上のSizeアプリケーション設定をDebug.Print 同様にFormのClickイベントでアプリケーション設定をReload デバッグ実行 適当にフォームのサイズをドラッグで変更 フォームをクリック うん、ちゃんとResizeは発生してるな
>>783 Properties.Settings.Default.FormClientSize
こういう風に個別にプロパティにアクセスできるってのがわからなかったんだよ
>>784 >Sizeアプリケーション設定をDebug.Print
これはどういう意味ですか?
Properties.Settings.Default.Save();
のことですか?
同じようにやってみたけど、
clickイベントに
Properties.Settings.Default.Reload();
Resizeイベントに
Properties.Settings.Default.Save();
クリックするとなぜが微妙にフォームが動く
(ちゃんとサイズが保存されてないってことじゃないの?)
フォームリサイズ後アプリを再起動すると
フォーム内のlistbox(anchorを縦横設定したもの)がサイズ変更されないままで
フォームだけがサイズ変更される
>>786 >クリックするとなぜが微妙にフォームが動く
このとき、listboxも微妙に動く
プロパティのセーブの仕方が悪いのか
ロードの仕方が悪いのか
とにかく上記のやりかただとまともに機能しない
だーかーらー コード出せって
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Resize(object sender, EventArgs e) { Properties.Settings.Default.Save(); } private void Form1_MouseClick(object sender, MouseEventArgs e) { Properties.Settings.Default.Reload(); } } }
>>788 その他は
>>784 と一緒
FormのプロパティグリッドでApplicationSettingsのPropertyBindingのダイアログ開く
ClientSizeに新規でSizeって名前のUserスコープの新規アプリケーション設定にバインド
てか日本語理解出来ない奴がいるな
どうせ答える気ないんだろ?邪魔なんだよまったく
>てか日本語理解出来ない奴がいるな >どうせ答える気ないんだろ?邪魔なんだよまったく せめて同じような状態のミニマムなプロジェクト一式だけでもだせよ 質問者がなるべく回答者の手を煩わせないような質問の仕方を するのも礼儀だぜ
>>792 ウザイなお前はお前が答える気がないのは見え見えなんだよ
そうやって俺が答えもらえないような状況作ろうってんだろ
気持ち悪いんだよお前
お前はここにずっと粘着してる基地外だろ
>Sizeアプリケーション設定をDebug.Print
これはどういう意味ですか?
Properties.Settings.Default.Save();
のことですか?
この質問に答えろよ
これにソースなんているのかよボケが
これさえも答えないのにいちいち条件出すんじゃねーようぜー
>>792 あのソース以上に何が必要なんだよ?え?
何がわからないんだ?え?入ってみろハゲ
プロジェクトなんて出すかよwwwアホかwww
>>792 お前おれのユーザー情報取得してずっと粘着してやろうって魂胆なんだろ?
お前の人間的にも人生においても終わってるから
お前は友達もいないんだろ?池沼めが
こうやっていつまでたっても解決しないのであった
はいはい、ソッスね。
何が768の琴線に触れたのか全く分からんかった
ここの連中の初心者いじめ連中がまた暴れてるのか
昔はもっとまともだったのになこのスレ なんでカスみたいな奴が常駐してるんだ? 他にやることないのかよ
>>799 日本語で説明されたってこの機能使ったこと無いけど
サンプルソース見ていじれば代案出せる人もいるはずなのに
コードださないんだからすぐに解決するわけもなく・・・
こんな質問程度にソース晒せだ プロジェクト晒せだ アホか
>>802 出しただろボケ
御託いらねーんだよわからないなら黙っとけ
機能使ったこともないだぁ? だったら黙ってろよ 何がソースだせだボケw ソース出して何がわかるっていうんだ? アホか
806 :
801 :2010/04/23(金) 20:28:04
で、同じようにこちらで再現プログラム書いたらリサイズイベントくるんだが・・・ どうしてくれよう
トリップ付けてくれてるとあぼーんし易くていいわ。
>>806 ちゃんとフォーム内にコントロール作ったか?
フォームのサイズ自体は変更されるが
中のコントロールがデザイナーのサイズのまま変更されてない
できたというならソース晒せ
追従するなあ・・・・ zオーダーとかDockの指定がおかしいんとちゃうの?
>>809 だからできたというソース晒せよ
俺と同じやり方でやったんだろ?
絶対無理だから
結局これだ ソース晒しても誰も答えないしなwww 糞荒しまじで消えろボケ
>>786 をちゃんと読めよ目盲
DockじゃなくてAnchorでやれ
できないだろ?な?できないよな?
anchorは使うなって?
Anchor使わないアプリがどこにあるんだよw
this.Invalidate(); この一行書くだけでええんとちゃうの?
お前ら荒らしの相手するなよ
768=loopy
C#でTwitterクローン作ってるサイトとかないですか?
Formの中の部分を300,200とかにして外枠をそれにあわせるようにするには 自分で計算するしかないのかな?
ClientSize
ありがとうございます
あるフォルダを監視して変化があったファイルを タスクトレイ付近からニョキニョキっと通知するようなソフト作りたいです
>>823 System.IO.FileSystemWatcherだな。
ありがとうございます
C#で3Dグラフィックスやろうと思ったらManaged DirectXというのをやればいいですか? ミドルウェア、ラッパーライブラリとかもあるんでしょうが、大本のAPIとしてはこれでいいですか?
大本はDirectX でそれを.NETから扱うライブラリとしてManaged DirectXとかSlimDXとかAPI Code Packとかがある
.NET Frameword 4.0ってベースは2.0のまま? なんか変わった?
設計は変わってないが実装しなおしたからバージョンを変えてある フォームの初期化タイミングが以前と違ってたりしてはまった
.NET Framework 2.0〜3.5までは共通言語ランタイムCLR 2.0の部分を変えずに,その上のライブラリを
改良および追加してきたが,バージョンを重ねるごとに構成が複雑になってきた。そこで.NET Framework 4.0
ではCLRを4.0にバージョンアップし,フレームワークの各種ライブラリを抜本的に作り直す。
CLRをバージョンアップしても互換性は最大限追求する。作成するプロジェクトのマルチターゲット機能を堅持し,
選択できる.NET Frameworkのバージョンとして,2.0/3.0/3.5と同様に4.0を含める。また,同一プロセス内のSide by Sideを
実現し,CLR 2.0と4.0の両方を同一環境でロード可能にする。アセンブリ(dll)ごとにロードするCLRのバージョンを決定できるという。
http://itpro.nikkeibp.co.jp/article/NEWS/20090127/323636/ けっこうかわってるみたいね
ランタイム結構変わっとるぜ。 まあ3.5SP1でも結構変わったけどな、SPってレベルじゃない変わり方だった。
Managed DirectXってもう開発終わったよな。 これ使うくらいならXNAが良いんじゃないか と思ったけど、XNAも9世代のだし古いな。 これからはWindows API Code Packだな。MS謹製だし
>>833 >Windows API Code Pack
また新しいの増えたのかw
DirectXはまだC++でやっといたほうがいいよなw
AoEのスタジオも潰したし窓のDirectX切る気満々だな
DirectXだのXNAだのなんでゲームはわけわからんライブラリ集使わなきゃいけないんだろうな。 スリーディーでグリグリ動くようなのならまだしも ファミコンのマリオやドラクエみたいなグラフィックの簡単なゲームならドトネトだけでいいだろ。
>>837 千人同時プレイできるマリオなんじゃないの
実際ファミコンレベルですら厳しい
2DならDXライブラリがいい
C#で使うと気持ち悪いからなあ 結局完全にラップしてしまって自前でDirectX叩くのとそう変わらなくなる
ユーザーコントロールってどういうときに使うのん?
自分でコントロール作ってコード再利用したいとき 複数のコントロールをひとつにまとめたいとき とか
他とは違う見た目のコントロールを作りたいとき、 要するにオーナードローをやりたいときに便利 VBでしかまだ作った事無いが、 デザイナにちゃんと見た目が表示されるし、 プロパティ作ったらそれが本当にデザイナのプロパティに表示されるし、 なかなか凄いぞ
>>844 それカスタムコントロール
WPFやればわかるけどカスタムコントロールは低レベルすぎて糞
でもイベント関連が結構面倒だね
WPF触るとOnPaintのオーバーライドとかアホらしくてやってられなくなる なんでちょっと見た目変えるだけのために大量のコード書かないといけないのか
WPFってWindows Formsをシコシコするより難しそう なんかXML?だか覚えなきゃいけないんでしょ グラボもきつそうだし
XAMLはともかくXMLわからないのはプログラマとしてやばい
既存にはない動作をするコントロール→カスタム 既存のを組み合わせたり、見た目を変える程度→ユーザー で判断してる
個々のタブページの中身を別々の開発者が作る事を想定して、 それぞれをユーザコントロールにして、作り始めたはいいが 結局自分一人でそれぞれのユーザコントロールを作って、 タブに貼り付けているという・・・orz。
>>851 まあ、フォームのコードがゴチャゴチャせずに済むわけだから
一人でやる場合でも十分意味はあるでしょ。
まさに
>>852 の目的でひとりで作ってた去年の今頃。w
普通タブのなかにフォームを開くよね
そんなことしない。
Visual C# Expressの日本版は4/27か 楽しみだのお
激重でメモリ食いまくり言われてたのは結局直ったの?
betaよりは遥かにマシになった ちょうど出たばっかりの頃の2005みたいな感じ
今は最低2GB搭載だから直るも何も問題ないだろ
vmware上で使うからあんま重いのは困る
やっべ俺1GBしかないいわ 明日アキバで1GBのメモリ買ってくる
1GBマシンじゃCPUも相当苦しいんじゃね。 俺も人の事は言えないけど。 PhenomIIマシン組むかな。
Xeon 5520*2 HT なPCで使ってるけど、2005/2008に比べてちょっと 重い感じ。
初心者フォーム1枚板プログラムから卒業して、複数フォーム使ったソフトをC#で作ってみたいんだけれど フローティングツールバーってどうやって作るの?
完全に外に出したい場合は動的にFormをこさえて 移動可能にしたいコントロールをそっちの配下にする
VS2008ProとSQLServer2008で簡単なデータの出し入れから始めたいのですが 初心者向けのサイトでお薦めはないでしょうか。 C#の基本的なことはわかっているつもりです。お金が無いので書籍ではなくサイトでお願いします。
ユーザーコントロールの内部コントロールのイベントをFormで取得しようとしたら イベントごとにデリゲート作らなきゃならないのか
>>870 コントロールが最初から容易してるデリゲートその物を
publicで公開しちゃうとか
C#にラベル付きbreakやcontinueはないのですか?
>>871 ああそうか
どっちみちpublicでデリゲート作るんだから同じことか
EventHandler<T>で済まそうよ。
public event EventHandler<HogeEventArgs> Hoge; EventArgs の派生クラスは必要だけど、対応したデリゲートを作る必要はない。
>>872 ないのでgoto使う
C#ではgotoに関しては「アホは何使おうがアホなコード書く」というスタンスなのでユーザ任せ
いくら文法用意しても goto が必要になるケースってあるしねえ きりがないって考えたのかね
Javaでも LABEL : { … continue LABEL; … } とかgotoと変わらん
別にgotoが悪だとは思わないけどなぁ。 どう使うかが重要なわけだし。
goto悪論なんて、未だにやっているんだ。
goto を使わない一番の理由は、反射で批判するアホにごちゃごちゃ言われるのがイヤだってのは秘密だ。
ダイクストラ信者なんでしょう
try-catch があると、ほとんどいらなくなるけどね。
ラベル付きbreakって下に飛ぶのにラベルが上にあってわかりづらい そんなものが必要になるループはだいたい長いので尚更 switchのgoto caseもフォールスルーを駆使するよりはずっとマシ
C#の参照とJavaの参照って 同じような意味と考えていい?
うん
参照はどこまでいっても参照だよ
万歳だよな
参照ってストーカーみたい
ストーキングして隙をみてゴミをあさります
オブジェクト指向で作ったプログラム内部のデータやメンバ関数の関連を 図にするとあちこちに線引かないといけないんだろうな
UML見ても線だらけだな
>>893 UMLだとメンバ関数なんかはクラスに込みみたいな表現になるけど
実際のプログラム内部だとクラスのインスタンスにはどこかに置かれてる
メンバ関数へのポインタしかもってないからもっとすごいことになりそうだよねw
ぱそこんさんがかわいそうです
>メンバ関数へのポインタ そんな馬鹿な実装はしないと思う。 むしろ、普通はメソッドがインスタンスハンドルを引数にとるだけだと思う。 いずれにせよ、コンパイラの実装方法なんか無関係の話じゃないのか
静的型で関数テーブル持ってるのはインスタンスじゃなくて型の方だ
>>896 多少そういう予備知識はあった方がいいんだけどね
じゃないと参照と値渡しのあたりを理解できないし
WPFって ただ、なんかかっこいいボタンとかを作れる だけか。かっこいいだけならいらんな
GUIはかっこよさが大事でしょ
WPFはバインディングがやたら強力 ある元のデータに対して対応するコントロールを動的に配置するようなことが 一切コードを書かずに宣言的にバインディングだけでやれる
プロレス団体みたいな名前が嫌
ワラタ
じゃあMicrosoft Windows FormsはMWFと呼びましょう
World Prowrestling Foundationってありそうだな
WPF使ったことない人は見た目の事しか言わないよな。バインディングが肝なのに
MS自身も入り口アピールは見た目押しの気がするけどなw
何もしなくていい と言うべき UI周りはほんとに全部バインディングで書けてしまう
>>874 >>876 //イベントのデリゲート宣言
public event EventHandler<UserControlsMouseActionEventArgs> UserControlsMouseDown;
public event EventHandler<UserControlsMouseActionEventArgs> UserControlsMouseUp;
使い方はこんな感じでマウス操作の種類だけ増やしていけばいいのでしょうか?
何でもできるって言われると胡散臭く感じるんだなあ 一般人がパソコンを魔法の箱だと思っていたみたいな感じで
何の根拠もなく胡散臭いって 一般人以下の感想じゃんそれ
だって胡散臭いじゃない
システム開発の業界では胡散臭いところはかなり多い いやならそういうところと付き合わなければよい 特に意味も無くC#での開発をゴリ押しするところは一番あやしい
具体的に何ができますか?と聞かれてなんでもできますなんて言う人は信用しません
なぜ相談室使わないんだ? 雑談したいならそっちいけよ
初心者ではないけど能力は初心者レベルだからです
>>914 現状、C#(.NET)とJavaの2択ではないか?
はぁ?
JavaとC++かCだろ
>>920 C#が指定されているところに、CやC++でいけるわけないだろ。
指定されてないんで
何か話が妙な方向に進み始めたなぁ。 次スレまで引きずらないでね。
前提条件がある程度絞られてる中で何でもできるというのは どこからどこまでかはわかるもんだけど、それすらもわからない人は 何でもできるという言葉ではできる範囲が想像つかないからな。
>一般人がパソコンを魔法の箱だと思っていたみたいな感じで WPFのListBoxは魔法の箱だと思う。
Windows7、IIS7.5、.net3.5で作って動いている簡単なWebサービスを XPで動かしたい場合はIISのversionが異なりますがそのまま動きますか?
>XP Mode
ListBoxなんてつかわん
WinFormsのListBoxと一緒にしてないか?
ソートとか実装がめんどい
View挟んでOrderするだけじゃね
そこまでして何ができるの? というか、それ以外のことが手間かかるからやる気がしない
>>931 をグループ化して好きなコンテナに入れて表示する のがコード書かずにすぐ出来ちゃう所とか
XAMLがものすごい蛇足に見えるからいらね
Button1.Width=200; とかやるほうがいいよな XAMLなら <Button Width = 200/> みたいにやるんだっけ?
>>935 <Button Width = "200"/>
こんな感じかな
まあ
<Button />
こうやっておいてコンストラクタでサイズしてもいいんだけど
WinFormアプリのForm1.Designer.csを置き換えたようなもんなんで
実はそんなに大したことはない
何だかんだ理由をつけて使わないんだから勧めるのを止めればいいのにな
>>937 適材適所なんだが、今のところ明確なメリットが見えないのが辛いね
WPFやSilverLightを使った良アプリがでれば作る方もイメージ変わるんだろうけど
個人的にはいまさらFlashの糞AS覚えたくないのでSilverLightは歓迎かな
WPFはイマイチ見えん
ちなみXAMLで書いても実際は表示されてないcsファイルが作られてるよ
そんなにXMLが好きならHTMLtoXMLのパーサ提供しろ糞MS
>>939 XAMLの後ろに生成される見えないcsファイルはXAMLをリソースからロードしてるだけ
>>941 ああ、すまん
そうだなw
というかこの関係はhtmlとブラウザって感じだよねw
嘘が嘘だと言われてもようわからんしな。 お前もプログラマの端くれならコードで示せよ。
Silverlightではなんと
>>935 の上よりも下の方が例外なく速い
Silverlightはほとんどアンマネージ側で実装されてるのでマネージコードを介すのが無駄らしい
>WPFなんかのXAMLって乱暴な言い方すれば紙芝居エロゲのスクリプトみたいな存在 すげーわかりやすい!と思ったので死にたい
XAMLで動的ってのがよくわからん。 あらかじめ別のXAMLファイルに定義しておいて、それをリソースとし、 トリガなんかを使って適用する感じかね。 必要なときに生成できるコードと違って、XAMLで宣言したのは アプリの起動時にはすでにインスタンスが生成されてることでいいの?
>>948 上で言ってるじゃん
htmlとブラウザの関係だって
C#で言えばwebbrowserにhtml食わせてナビゲート完了したあとできあがる
HtmlDocumentに対して操作したりってやってるだけだよ
僕はみんなのアイドルです(´・ω・`)
952 :
910 :2010/04/26(月) 04:09:03
>>951 俺のはメモらないほうがいいよ
誰も答えてくれなかったからわからないけど
あのやり方は動くけど多分間違っているし、普通にイベント作った方が簡単に書ける
public class UserControl
{
public event MouseEventHandler ControlsMouseDown;
private void pictureBox1_MouseDown(obj sender, MouseEventArgs e)
{
ControlsMouseDown(sender,e);
}
}
class Form1:Form
{
public Form1()
{
UserControl.ControlsMouseDown+=Controls_MouseDown;
}
private void Controls_MouseDown(obj sender, MouseEventArgs e)
{
MessageBox.Show(sender.ToString()+"\r\n"+e.Button.ToString());
}
}
こんな感じ
イベントハンドラジェネリックを使うことでどのようにコードがシンプルになるかはよくわからなかった
例えば、MouseDownなのかMouseUpなのかも通知するようなHogeEventArgsにすれば
イベントのデリゲート宣言が複数必要なくなりそうなんだけど、そうなると
どのMouseイベントなのか、どのマウスが押されたのか?の条件式を書かないといけなそうなので
普通のイベントでやることにした
よくわからなかった
>>910 >>874 は「publicでクラス内にデリゲート型のフィールドを作る」を
「新規に別のdelegate型を作る」と読み違えている。
だから新規にEventArgsとEventHandlerを作るよりも
EventHandler<T>を使ったほうがいいと言っていると予想。
以下個人的な好みだけど、内部コントロールを公開するなら下のやりかたが好き。
public class UserControl {
public event MouseEventHandler ControlsMouseDown; {
add { pictureBox1.MouseDown += value; }
remove { pictureBox1.MouseDown -= value; }
}
}
954 :
910 :2010/04/26(月) 06:01:10
>>953 それすごくいい!
使わせて頂きます
ありがとうございました
>>新規に別のdelegate型を作る
独自のイベントを作るならジェネリックが使えるというだったのですね
>>953 この記述最近できたのかなと思ったら
昔からあったんですね
知らなかった
eventが導入されたときからあるね
WPFのC#で、線を配列で引きたいと思っています。 Line[] line = new Line[10]; for (int i=0, i < line.Length; i++){ line[i].StrokeThickness = 8; line[i].Stroke = Brushes.Black; line[i].X1 = 10 + i*30; line[i].X2 = line[i].X1 + 20; line[i].Y1 = line[i].Y2 = 50; } } これで、 line[i].StrokeThickness = 8; の行で、オブジェクト参照がオブジェクトインスタンスに設定されていません、というエラーが表示されます。 設定するにはどうしたらよいでしょう? Line[] line = new Line[10]; では足りないんでしょうか?
配列すら理解せずにコードからWPFって時代なのね 配列をnewしても配列の各要素はまだnewされてない
デバッガの見方をまず教えるべき
>>958 ありがとうございます。
Line[] line = new Line[10];
for (int i=0, i < line.Length; i++){
line[i] = new Line();
line[i].StrokeThickness = 8;
line[i].Stroke = Brushes.Black;
line[i].X1 = 10 + i*30;
line[i].X2 = line[i].X1 + 20;
line[i].Y1 = line[i].Y2 = 50;
}
}
でできました。
コンパイルは通るようになったのですが、
線が表示されません。
どこがだめでしょう?
配列作っただけでLineを要素の子に追加してなかったりするんじゃねーの
>>961 どうやって追加すればよいですか?
xamlなら、
<Window>
<Grid>
<Line StrokeThickness = "8"/>
</Grid>
</Window>
のようになっています。
Grid.Items.Add(line[i]);
とかと思ったのですが、違うみたいです。
<Grid x:Name="grid1">と名前を付けた上でgrid1.Children.Add(line[i]) キリないからWPFもWinFormsも忘れて入門書から出直した方がいいよ
>>963 ありがとうございました。
きりがないなんてことはなくて、これでやりたいことができました。
おつきあいいただき感謝します。
初心者用スレなんだから温かいレスをしてあげてください
効率系質問 ふらっと:初心者はそんなこときにするな 姉妹スレ:自分でテストしろ
>966 なめんなよ
なめてないよぉ
System.Threading.Thread.Sleep(int.MaxValue);
System.Threading.Thread.Sleep(Timeout.Infinite);
while(1) {
プログラミング簡単だと思ったら難しいな 一本のソフト完成させるまでどれだけかかるんだよ・・・
難しいのを作るから難しいんだよ
どんなものを作りたかったのかしらんが なんで簡単だと思うのか・・・
すごい簡単にできるんだけど難しく考えてる事とかあったりする
画像ビューア作っているんだけど難しい 心折れそう
ピクチャーボックスはって 適当にフォルダ表示すりゃいいだけだろ!
使えるレベルに持っていくのがしんどいね。 俺もWPFでビューア作っててズーム機能で苦労してるわ。 任意の点を中心にしてズームさせるの。パンと組み合わせると 上手くいかないぜ。計算が間違ってるらしい。
どうせ作るなら既存のものより高性能なもの作りたいじゃない? そうなってくると途方もなく完成が遠いの
そりゃ作る前に設計しないからだ
結構JPEGって方言とかあるのか、標準のPictureBoxじゃ 開けなくて泣けるよ。
方言というより縦横のサイズじゃないの?
結局susie.apiとかに頼っちゃうことになるわけ?
君は設計の前にやる事があるようだね ちょうどGWにも入ることだ、本屋にでも行ってプログラムの作り方の本でも買うといいよ
986 :
デフォルトの名無しさん :2010/04/26(月) 22:00:52
今時susieは使いたくないけどやっぱりプラグインは豊富なのかな、PSDとか表示できたよね
本は何冊かあるけど、どれも文法の説明を小難しく説明しているだけで 実際ソフトウェアを作る場合どういう手順で作っていくかというのが書いていない だから、あっちこっちに手を出して、途中で大きな間違いに気づき 1から作り直しの日々 そこそこの機能を持ったソフトを開発する手順が書いてあるところとかないかな もしくは画像ビューアのソースを公開しているところとか
>>987 画像ビューワー程度ならそんな大したソフトウェアってわけじゃないでしょ
>>987 CodePlexやSourceForge.netに行けばいくらでもある。
甘えんじゃねエーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
書いてある本を買えばいいのにね
Enum.ToStringの注意書きがいつの間にか Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows CE向けになってる…。 結局モバイル環境でもなきゃ大した影響を及ぼすものじゃなかったってことでいいのかなー。
>>992 おまえ誰だよwww
オレがメモしたおかげだ!
u
m
e
産め
梅
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。