1 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 17:40:19.48 ID:oKXVP34zM.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part95 mevius.5ch.net/test/read.cgi/tech/1508180530/ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part136 mevius.5ch.net/test/read.cgi/tech/1520057345/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/ja-jp/library/gg145045.aspx https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
751 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 14:11:58.71 ID:35k9lSzB0.net] 値1、2個を渡すのは簡単なんですけど、 クラスのインスタンスを100個つくるためにその参照を配列にいれる 参照の入った配列をreturnで返す とかしてるとなんの値をいじってるのかわけわかめです。 これまで値と参照の区別をして思考してこなかったからなのかなぁ。
752 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 14:31:05.11 ID:m/ZPa8pNM.net] >>735 オブジェクト指向で参照を共有することは少ない 共有するとしてもイミュータブル、ステートレスにして共有によるデメリットを消した上で共有する 長時間生存するインスタンスがあちこち参照しあって状態を刻々と変化させていくような設計が最悪のパターン
753 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 15:29:17.89 ID:7BFPa/Jf0.net] >>724 それは君が経験値不足なだけ。>>702 である程度は想像できる。
754 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:13:13.77 ID:t/qQFhE80.net] 休みだってのに暇な奴ら
755 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:13:20.90 ID:35k9lSzB0.net] >>736 なるほどCを参照しているA1、A2はCと独立したオブジェクトじゃなくなってしまいますものね。
756 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:20:14.69 ID:35k9lSzB0.net] Target[] target = new Target[Constants.MaximumNumberOfTarget]; public Target[] InitializeTarget() { for (int i = 0; i < Constants.MaximumNumberOfTarget; i++) { target[i] = new Target(); target[i].x = 100; target[i].y = 100; } } こういうふうにForm1のクラスでターゲットの座標100個発生させて表示させます。
757 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:23:28.77 ID:35k9lSzB0.net] ターゲットをクリック出来たら消す 一定時間クリックできなかったら点滅させる ゲーム終了後にターゲットの座標をテキストファイルに書き出す などの処理がすべてForm1上に存在することになるのですが、 それでもいいのでしょうか? これらの作業を無理にクラスに分けようとすると ターゲットクラスインスタンスの参照100個を渡さなくてはいけなくなります。
758 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:41:59.05 ID:H4w+h7ji0.net] そんなミニゲームどう組んだっていいよ
759 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:44:12.66 ID:5aQMcYYW0.net] >>741 何が駄目なのかわからない 何か縛りプレイしているのならその前提から出してもらわないと たとえば特定のデザインパターンの勉強が目的だとか
760 名前:デフォルトの名無しさん [2018/05/19(土) 16:55:29.90 ID:uWI+Vuzc0.net] どうせこの人は一生治んないよ ただプログラムなんてちゃんと動けば目的達成できるんだし、まあ、これでも良いんじゃないの
761 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:56:47.37 ID:F+BrwfqWa.net] listやdictionaryを使ってないのかな だったらまだそのアプリを作る段階まで届いてない
762 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:10:27.25 ID:UwdEx54W0.net] まあ普通はエンジン部分だけ切り離すわな
763 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:20:42.40 ID:35k9lSzB0.net] target class にx,y,timeなどメンバ変数7個程度を入れてます。 このターゲットを表示するためForm1上にクラスのインスタンスを参照する配列を置くと、 表示とゲームのコントロールすべてがForm1上におくことになって見苦しいのかと思いました。 でもテトリスとか他のミニゲームみても同じような設計になってるんですね。 無理して別クラスにするよりもtargetクラスの配列に関連した、表示、ゲーム処理はForm1上に置いてみます。 (というか実際に配列を別クラスに切り分けたら、余計読みづらくなった・・・)
764 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:22:57.84 ID:35k9lSzB0.net] >>743 縛りはなかったのですが、見やすいコードということを考えすぎてました。 まずは動くコード書いて、人の書いたプログラムも見ながら勉強していきます。
765 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:23:58.19 ID:35k9lSzB0.net] >>745 最初Dictionay使うつもりだったのですが、 構造体かクラスに変数をまとめたほうがよさそうだったので今の形になりました。
766 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:27:35.68 ID:9OoA3M8l0.net] >>741 何故そのような結論になるかわからない提示された仕様からだとテキスト出力クラスを作ろうって気になるかな targetの渡し方はコンストラクタやメソッド引数にするかは自由 Hoge hoge = new Hoge(); bool Output(){ hoge.Set(target); return hoge.Output(); }
767 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:28:05.32 ID:m/ZPa8pNM.net] >>747 複数のTargetを管理する専用のクラスを書くんだよ Formが全てのTargetを管理するのはオーバーワークだろ
768 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:30:56.31 ID:TbcarOIZ0.net] >>734 貴様にはpublicを禁止する呪いを掛ける
769 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:45:50.05 ID:m/ZPa8pNM.net] それは呪いではなく祝福であった
770 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:52:30.85 ID:F+BrwfqWa.net] そしてinternalを使い始めた! ゴミグラマの出来上がり
771 名前:デフォルトの名無しさん [2018/05/19(土) 18:14:06.88 ID:RoboUWmL0.net] と、すでに出来あがったゴミグラマが申しておるようですが
772 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:20:19.09 ID:35k9lSzB0.net] >>751 はい。 それやってみたのですが、フォーム2から初期設定値を初期値格納クラスに入れていて、 初期値格納クラスの参照、Targetクラスの参照、Targetクラス管理クラスの参照が入り乱れて書いている自分でもわけわかめになりました。 二つのプログラムを見比べた結果Form1でTarget管理させたほうがまだましなのかと・・・。 もっと規模の大きなプログラムだと違ってくるのかもしれないのですが。
773 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:39:40.28 ID:H4w+h7ji0.net] >>756 小さいの組み合わせてでかいの作るんだから でかいと組み方が変わるなんて言ってるやつは そもそも下手クソなんだよ
774 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:44:17.10 ID:m/ZPa8pNM.net] >>756 入り乱れないよ
775 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:44:51.84 ID:t/qQFhE80.net] 素人が責務に応じたクラスの分割を理解するなんて 一朝一夕どころか数ヶ月単位の時間が掛かると思うが、このやり取りそこまで続けるの?
776 名前:デフォルトの名無しさん [2018/05/19(土) 18:46:55.05 ID:RoboUWmL0.net] >>759 素人でも初心者でもわかる奴は最初からわかってるけど? むしろ数ヶ月も時間をかけてわかって気になってるおまえが何もわかってないよ
777 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:48:37.83 ID:m/ZPa8pNM.net] >>759 理解しやすい構造になるわけだから素人も安心
778 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:49:08.43 ID:t/qQFhE80.net] >>760 猿には聞いてねえから飼育員さんとママゴトしてな
779 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:51:06.08 ID:t/qQFhE80.net] >>761 んでいつまで続けるの? ウザくなってきたからスレ潰しするのもいいかなと思ってる
780 名前:デフォルトの名無しさん [2018/05/19(土) 18:54:14.32 ID:RoboUWmL0.net] バカ、スレ潰し宣言wwwww これはさすがの俺も意表をつかれた度と超えたバカwwwww
781 名前:デフォルトの名無しさん [2018/05/19(土) 20:59:50.70 ID:gCADl0W/M.net] C#のスレだと思ったのに。
782 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:13:55.60 ID:35k9lSzB0.net] リストボックスの値を取得するのって string Gender = this.Gender.SelectedItem.ToString(); の一文だけじゃだめなの? なぜか値が取得できない。
783 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:17:27.89 ID:BEl4Etk9a.net] あたまがくらくらする
784 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:28:02.54 ID:sYzD4mGA0.net] >>766 まず「Gender」が2つ出てくることに違和感はないのか ListBoxは使ったことないけど https://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.selecteditem(v=vs.110).aspx string GenderStr = this.Gender.SelectedItem.ToString(); にでも変えれば動かないか?
785 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:30:21.29 ID:35k9lSzB0.net] >>766 すいません。 自己解決しました。 大分疲れてきたようです。 寝ます・・・。
786 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:32:29.68 ID:35k9lSzB0.net] >>768 すいません。 ご親切にありがとうございます。 値を出力するクラスにwriteline書き忘れてました・・・。 値の取得は上のコードでOKでした。 朝から一日プログラミングして悪い頭が限界を超えているようです。 今日はもう寝ます。
787 名前:デフォルトの名無しさん [2018/05/19(土) 21:34:12.28 ID:RoboUWmL0.net] 教えたがりのバカ>>768 の立場wwww
788 名前:デフォルトの名無しさん mailto:sage [2018/05/20(日) 16:52:01.54 ID:O/HF5kqh0.net] >>719 いろいろ調べてみましたが、私が探している解決策とは異なったようです 一番知りたいのは、埋め込みリソースに対し、通常のファイルアクセスのように アクセスする方法はないのか、という点です (XLWorkbookのコンストラクタには、ファイルパスを与えますので) 今回のデータは参照のみ必要ですので、リソースとして埋め込んだ場合に 変更が効かなくなっても問題ないと考えました 712で書かれた内容は、「自分でファイルフォーマットを定義して、それを読んで 切り貼りするコードを自分で書くべし」、ということでしょうか そのために有用なのが714のAPIということですか
789 名前:デフォルトの名無しさん mailto:sage [2018/05/20(日) 18:41:56.82 ID:9fk8EC6VM.net] ないよ 一回テンポラリファイルに出力すればいい 使いたいライブラリがストリームを受け取るバージョンをサポートしてるならそっちを使ってテンポラリファイルは要らない
790 名前:デフォルトの名無しさん mailto:sage [2018/05/20(日) 19:32:08.73 ID:QOdmSKaj0.net] やったことないけど これは動かないの? https://support.microsoft.com/ja-jp/help/319292/how-to-embed-and-access-resources-by-using-visual-c
791 名前:デフォルトの名無しさん mailto:sage [2018/05/20(日) 19:59:07.95 ID:O/HF5kqh0.net] >>773 ありがとうございます 少し調べてみた限りですと、closedXMLはストリームからの読み込みはサポートして いないようなので(当然の気もしますが)、テンポラリファイル等別の手段を考えます >>774 「リソースにアクセスしたい」ではなく、「ファイルにアクセスするメソッドにリソースを 渡したい」でした 768のおかげでそのまま実現するのは無理とわかりましたので、疑問としては解決です
792 名前:デフォルトの名無しさん [2018/05/21(月) 08:06:02.24 ID:yxdsvVjy0.net] Json保存すると漢字が化ける。なぜばけるの? Jsonの問題なのか、StrreamReader の問題なのか、StrreamWriterのもんだいなのか? 取り合えず、Read、Writeともに shift_jisでEncode指定したら化けないようになったが、意味がよくわからない。 普通に考えるとStringにShift_JIsが入っていて、それを認識しているなら、Read WirteにShift_jisを指定する必要はないと思うのだ。だからStringにはそういう情報は 入ってない筈だ。ファイルにSHiftJIsの属性がはいっているなら、Write側だけに指定 すればよいはずだ。ReadにもSHIFT_JISを指定しなければならないということはファイルにも その属性は保存されていないということだ。Stringに属性を保存しておけばすべて丸く 収まるとおもうのだが、なぜそうしないのだろうか?
793 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 09:30:17.64 ID:HN6x0Zrba.net] 文字列の実装には内部的にUnicodeで扱うものとバイト列として扱うものとがある。 前者は入出力時にそれぞれバイト列->UnicodeとUnicode->バイト列をどのようにマッピングするか(i.e. エンコーディング)を指定する必要がある。 後者であればその必要はない。 一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。 後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。 一長一短だからどっちの実装もあり得るが.NETは内部Unicodeが標準的だということだ 文字列自身に自分のエンコーディング情報を埋め込むのはやめておけ 禄でもないことにしかならん
794 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 10:54:12.62 ID:wG0UA8oX0.net] JSON はJavaScript だから、UTF-8 Ruby, Python もそう。 ネット上に流れるテキストも同じ SHIFT_JIS を使う言語は、まずない。 PowerShell も、UTF-16 ここ数年は、Unicode に統一された。 それ以外の、SHIFT_JIS, EUC-JP は使わない
795 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 12:22:48.67 ID:ZMitaTGGM.net] >>778 何言っても通じないとは思うが、お前の愛するRubyの文字列の扱いは他と異なっている Rubyの文字列は内部的にはエンコーディング情報を持ったバイト列だ 特にWin環境では非常にトラブルの原因になりやすいゴミ仕様である
796 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 12:34:00.26 ID:wG0UA8oX0.net] Ruby は各文字列に、エンコードを持てるから、すごい 例えば、文字列a がSHIFT_JIS で、b がUTF-8 として、 a + b みたいに、文字列を連結すると、エンコードエラーになる
797 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 12:36:23.24 ID:ZMitaTGGM.net] >>780 うん。何一つメリットのないカス仕様だね。
798 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 12:50:56.22 ID:0W5b/XyUM.net] >>775 ClosedXML.Excel.XLWorkbookコンストラクタにはStream取るのもあるんだけど
799 名前:デフォルトの名無しさん [2018/05/21(月) 13:22:41.39 ID:yxdsvVjy0.net] >SHIFT_JIS を使う言語は、まずない。 エクセルファイルをCSVにEportしたファイルだけど、 var sr = new StreamReader(fs, Encoding.GetEncoding("shift_jis")) これでなら正常に読める。ということはエクセルはshift_jisだと思うが、、
800 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 14:04:00.83 ID:hRf5uVYXM.net] とりあえずそのRubyアスペに触るのを止めて
801 名前:デフォルトの名無しさん [2018/05/21(月) 15:12:20.28 ID:yxdsvVjy0.net] >一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。 >後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。 前者はDefault unicode 後者はDefault bytecode ということであれば、shift_jisなど他にもたくさんの文字コードが来る可能性があるのだから、コードを意識することにあまり違いはない と思うが、、 >>780 その考え方の方が正しいと思う。 そもそもunicoeをディフォールトにするんだったら、漢字はそのまま表示できるんじゃないの? 其れなのにXcelは何でわざわざSHIFT_JISをつかうんだろ。
802 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 15:24:30.40 ID:wG0UA8oX0.net] Windows も内部的には、UTF-16 だろ。 PowerShell, ブラウザも、UTF-8 保守費用が掛かるから、MS も、SHIFT_JIS を辞めたいはず Excel など、長年使っている人が多いから、やめられないだけ
803 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 15:43:54.89 ID:s3jYOwAha.net] >>785 Stringのエンコーディングが固定なら、IOのときだけ文字コードを意識すれば済む 素人のちょっとしたツールのレベルならともかく、一般的にはIとOの間(P)の部分がプログラムの殆どを占めるんだよ Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ
804 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 21:17:05.23 ID:83cG7/bYM.net] ビルドしても、ファイルできなくて意味わかんねえ
805 名前:デフォルトの名無しさん [2018/05/21(月) 22:02:39.74 ID:o82N7H0r0.net] >>783 Excelは言語じゃない。 日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。 ちなみにBOMが付いていればUTFのCSVでも読み込める。
806 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 22:04:28.66 ID:ZCJ7EsPBa.net] 漢字が文字化けするのは保存した文字コードと読み込んだ文字コード指定が違うから それだけ つまりやった側の間違い どこで間違えたか手順を順に見直すべし
807 名前:デフォルトの名無しさん [2018/05/21(月) 22:11:44.14 ID:KnpxsRSU0.net] やった側ってどの側だよw
808 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 00:01:50.29 ID:1gACj0o60.net] sqliteとの連携に関して質問です なんらかのクライアントで先にテーブルを作り、レコードもinsertしておいて、それを読み込むプログラムを作りたいのですが、既存のdbファイルはどこに配置すればよいのでしょうか デバッグしてみたらno such tableと言うようなエラーが出たので、どうやら実行時に新たにdbファイルを作ってそれを読もうとしてしまっているようです
809 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 00:20:52.78 ID:V2R/cizEa.net] >>792 どこもクソも決めるのはお前 SQLiteはDBのファイルパス指定して開けるだろ SQLiteは普通のDBMSと違って、システムのどこかに共通のデータストアがあるみたいな考え方をしないんだよ ファイルを名指しするのが基本
810 名前:デフォルトの名無しさん [2018/05/22(火) 03:32:12.88 ID:MRvdbbs3M.net] Accessのmdbみたいな感じかいな?
811 名前:デフォルトの名無しさん [2018/05/22(火) 06:38:16.66 ID:GCRmPVlZ0.net] >>790 「文字コードなんて意識する必要はない。機械に任せたほうがいい。」とは考えないのだろうか? そもそもテキストとは文字コードによって表現された文字の集合体だ。テキストを保存するIOに たいしてわざわざ文字コードの情報を削除して保存するのは何故なのだ。正気の沙汰とは思えんな。
812 名前:デフォルトの名無しさん [2018/05/22(火) 06:43:45.86 ID:GCRmPVlZ0.net] >Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ 文字コードなんて本質的なことじゃない。だから混在してもかまわない。 それを人手でやろうとするから「混在する悪夢」が発生する。 そういう場合にこそ機械に自動的にやらせるべきだろう。
813 名前:デフォルトの名無しさん [2018/05/22(火) 06:51:24.64 ID:GCRmPVlZ0.net] >日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。 >ちなみにBOMが付いていればUTFのCSVでも読み込める。 互換性のためならもっとほかの方法がある。アプリのためにコードを弄るなんて最悪の方法だろう。
814 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 07:58:03.61 ID:j6MjsmBId.net] >>793 あざすぅ
815 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 09:20:46.86 ID:uYoKmc1Q0.net] ここにきて.NET CoreがWPF, Windows Formsを救済ってか
816 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 09:31:30.78 ID:7LgkrdmnM.net] >>795 >>796 >>797 屁理屈言っても誰にも認められない x=x+1は式としておかしいと言い張ってプログラムが全くできなかった人がいたけど その人と同じ 文字コードがいろいろあるのは仕方ない それぞれの都合で整数に文字を割り当てる方式がちがうので文字化けする 文字コードの情報というものがそもそもないので削除なんてしてない 自動判定は単なる憶測にすぎない その自動判定だって誰かが書いたコードが判定してるんであって 機械に任せると言うのは言ってることがおかしい
817 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 10:37:32.58 ID:svO22mue0.net] public double Re { get; set; } ってプロパティを省略して書くと見やすくていいんですが、 他クラスから参照するだけの変数だと、 Reは使用されていませんって警告がずっと出てうっとうしい。 何かいい手はないでしょうか?
818 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 10:37:46.91 ID:np9ncSKga.net] 別に文字列を文字セット/エンコーディングごと抽象化するライブラリとか作ってくれて良いのよ? 既存文字列と互換性があって使い勝手, 拡張性と統一性と性能が担保されるなら普及もするだろう でも曲がりなりにもそれ続けられてるのってRubyくらいで他に思い浮かばない なんで無いのかと言うけど試されてないわけないんだよ, 現実的じゃないから普及してない
819 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 10:58:36.99 ID:sxJmXMb80.net] >>801 { get; private set; } とか?できないんだっけ?
820 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 11:14:09.28 ID:7Riaak3V0.net] WPFで WindowStyle="None" AllowsTransparency="True" Background="#01FFFFFF" でほぼ透明だけどマウスイベントを受け取るウィンドウを作ったのですが これとおなじことをFormでやりたいのですがやりかたがわかりません どのようにすればいいですか?
821 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 11:23:07.15 ID:svO22mue0.net] >>803 できると思います。 データ格納フォルダB:Aフォームから値を取得 Cクラス:Bから値を取得 となってるのでsetもpublicでないと困るんですよね。 データ格納フォルダBの値はAから値取得した後なにも処理がないので、 「Reは使用されていません」って正しい警告なんですけどねぇ。 格納しているデータが10個あって警告10個もでるとさすがにうっとうしい。
822 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 12:14:32.87 ID:CqasDiEMM.net] >>795 BOM付きのUTF以外は、文字コードの情報なんてものは最初から存在しない。 また、文字コードの自動判別も完璧ではなく、場合によっては全く判別出来ない。
823 名前:デフォルトの名無しさん [2018/05/22(火) 12:16:10.65 ID:O9GDwfVPM.net] BのコンストラクタにAからの値を受け付けて public readonly double Reに渡すとかじゃだめなんね?
824 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 12:36:59.84 ID:2EZjLjzja.net] >>804 Formはウィンドウ全体のアルファはOpacityで指定できるけど、 背景だけ透過させるとかは簡単にはできなかったような yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php >>805 そもそも>>801 みたいな告なんか出ないと思うけど... 何か盛大に勘違いしてる予感...
825 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 13:05:58.78 ID:7Riaak3V0.net] >>808 WPFだと簡単にできたけどだめですか。。 背景透明なウィンドウとOpacity≒0で全体をほぼ透明化したウィンドウを重ねて代用します
826 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 13:21:14.65 ID:svO22mue0.net] >>808 勘違いなのかなぁ・・・。 すいませんもうちょっといろいろ実験してみます。
827 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 13:55:20.14 ID:svO22mue0.net] もともとスタートアップだったform1からform2にスタートアップを変更したいと考えています。 Program.csの static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new InitialSettingForm1()); } のForm1をForm2に変更したのですがどうもうまくいきません。
828 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 14:00:09.60 ID:svO22mue0.net] form1が出てからform2が表示されているような…。 試しに public ExaminationForm1() { InitializeComponent(); MessageBox.Show("a"); } と入れてみると メッセージボックスが表示→okをクリック→form2が表示 となります。 他にも設定しなければいけないところがあるのでしょうか・・・。
829 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 14:01:17.37 ID:svO22mue0.net] また変なことやってるのかなぁ・・・。
830 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 14:48:09.94 ID:oCYWBo6GM.net] InitialSettingなのかExaminationなのかどっちだよ ExaminationForm1のコンストラクタにブレークポイントおいて実行 ブレークしたら呼び出し履歴を確認する
831 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:11:30.57 ID:svO22mue0.net] >>814 Debugで確認していったらどうもインスタンスの参照を渡せていないようです。
832 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:12:13.75 ID:svO22mue0.net] public partial class Form1 : Form { Form2 form2; Class1 class1; public Form1() { InitializeComponent(); form2 = new Form2(); form2.Show(); class1 = new Class1(); form2.Pointer = class1; } }
833 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:12:47.68 ID:svO22mue0.net] public partial class Form2 : Form { Class1 class1; public Class1 Pointer { set { class1 = value; } } public Form2() { InitializeComponent(); int i = class1.fuga(); MessageBox.Show(i.ToString()); } }
834 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:13:21.01 ID:svO22mue0.net] public class Class1 { public int hoge = 2222; public int fuga() { return hoge; } }
835 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:16:54.99 ID:svO22mue0.net] Form2で int i = class1.fuga(); みたいなclass1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。 Form2にclass1の参照をきちんと渡せていないようなのですが、どこが悪いんでしょう・・・。
836 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:33:33.27 ID:2EZjLjzja.net] >>819 みたいな、じゃなくて問題を再現可能な最小コードをIdeoneにでもあげる 何で>>816-818 まで書いおいて一番肝心なところを書かないんだ それじゃやってること荒らしと同じ
837 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:34:55.39 ID:oCYWBo6GM.net] 806から811で全然別物の質問になってるんだけど Form1のコンストラクタの先頭とForm2のコンストラクタの先頭にそれぞれブレークポイントおいて ブレークしたらF10キー1行ずつステップオーバーしていって どういう順番で実行されてるか確認
838 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 20:59:34.16 ID:36NNq4u4M.net] うるせーな一度答えると決めたら最後までニコニコヅラで相手しろよクソハゲ
839 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 21:22:06.95 ID:sZHy65Kr0.net] >>782 返信遅くなりました ありがとうございます、確かに存在しました やってみたら問題なくアクセスできました
840 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 21:56:59.84 ID:nVwte2qB0.net] >>816 Form2のコンストラクタ内でclass1を使用しようとしているのに、 form2.Pointer(class1)がその後で設定されてる。
841 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 00:14:46.31 ID:IEWpo6Tg0.net] >>824 ありがとうございます。m(__)m その通りでした。 一個づつ追っていけば分かるはずなんですけど、 自分では思い込みがあって気づきませんでした。 本当に助かりました。 ありがとうございました。
842 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 00:17:07.19 ID:IEWpo6Tg0.net] >>820 すいません。 文章の書き方が悪かったです。 812の下から4行目のように Form2で int i = class1.fuga(); class1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。 と書くべきでした。
843 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 00:18:47.23 ID:IEWpo6Tg0.net] >>821 これまたすいません、ブレークポイントで見て言ったら画面の生成順は問題ないことが分かって、 インスタンスの参照が渡っていないことが原因と分かり。811-813みたいな最小コードで実験してました。
844 名前:デフォルトの名無しさん [2018/05/23(水) 10:08:41.93 ID:N3UaVe1J0.net] 中学生ぐらいだったら教えてやってもいいけど、あんたいくつよ?
845 名前:デフォルトの名無しさん [2018/05/23(水) 10:10:09.13 ID:QWeWgJFJ0.net] 不安なメソッド内じゃ全部TryCatchで囲っちゃった方が良いです?
846 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 10:18:50.74 ID:Mh8q82UX0.net] catch内で例外を握りつぶせば完璧
847 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 13:00:21.42 ID:mO/AejLg0.net] メインの処理全体をtry〜catchで括るだけさ。
848 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 18:48:37.98 ID:hVcgEIrnM.net] ジェネリクスのListやHashSetを良く使うのですが、これで用が足りてしまうので自作までしたことありません 出来る企業や個人はバリバリ自作するのでしょうか
849 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 19:00:48.43 ID:iQ1n/QEKM.net] >>832 できる人はそんな無駄なことに時間をかけたりしません 視野狭窄な無能ほどそういうことに拘って工数をドブに捨て、結果的に全体のクォリティを上げる時間が失われるのです
850 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 23:29:00.27 ID:l9NA/114M.net] ありもの使う方が良いと思うよ
851 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 00:22:57.92 ID:Pwy3p0jE0.net] ありものでどうしても駄目な理由がある場合のみ、仕方なく自作だわね
852 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 00:28:40.71 ID:crQGHj+ea.net] >>835 それも注意が必要だけどね 視野狭窄な小手先の技術に拘るプログラマは、くだらない問題に拘って「どうしても駄目だ」と思い込む(思い込もうとする)傾向がある 大抵そういうケースでは、視野を広げるとそもそも無理に手間をかけてまで解決する必要のない問題であることが多い
853 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 00:36:35.91 ID:O9jHVcOl0.net] Dictionary クラスを継承して使いたくて、 これの各種インターフェイスを実装した中身 Dictionary クラスのラッパーを作った事あるなあ。 今思えば若かった。
854 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 07:54:06.51 ID:YzRB3Rzod.net] >>836 プログラム以外でもあてはまる話だわな。 それ
855 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 14:34:00.01 ID:q7DgX+HL0.net] たいていは英語力の無さに原因があるんだよな。 その機能を見つけられないとかだからさ。
856 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 15:02:55.06 ID:AHiLgPdDM.net] コンソールアプリです。 今までに自分が吐き出した標準出力を自分で取得する事は可能でしょうか? このアプリ(A)は主に他のアプリ(B)から実行されることを想定しています。Aは普通にConsole.WriteLineで出力し、BがProcess.StandardOutput.ReadToEndで取得、ログを残します。 A単体で実行してログも残したい要求があります。 Console.WriteLineと同時にファイルに出力すればいいのですが、最後に一括で取得できればスマートかなと思ったのですが、いかがでしょうか?
857 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 16:59:57.59 ID:B2m5C+ouM.net] >>840 ウィンドウアプリです
858 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 17:02:19.57 ID:q7DgX+HL0.net] 両方に出力する関数作って、その関数に置き換える事すら出来ない無能に何をアドバイスしろと?
859 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 17:11:45.68 ID:iQu+wqIP0.net] Windowsで使えるteeコマンド探した方が早いんじゃねえか
860 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 17:19:25.14 ID:EdBeTbDkM.net] PowerShellならデフォルトで用意されてるよ!>tee
861 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 17:19:52.49 ID:AHiLgPdDM.net] >>841 ??? すみません、よくわかりません >>842 書き方まずかったですかね。 そう言うのも含めて、2つの処理を同時にするという意味だつたのてすが。 他にはなさそうですね。
862 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 19:35:28.68 ID:MnVBsXE4d.net] TraceSource
863 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 20:33:40.60 ID:hof73DG2a.net] 正直何言ってるのかよく分からんけど、普通にリダイレクトするだけのような... っていうか、普通はコマンドライン引数で出力先を切り替えるように作ると思うんだけど...
864 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 23:35:59.30 ID:iQu+wqIP0.net] >>844 へえ知らなかったな
865 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 00:27:44.75 ID:j/dB1L1+0.net] PowerShellはもっと流行るべき
866 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 00:39:09.38 ID:N3c6aWbUa.net] PowerShellとか罰ゲームだろ インタラクティブシェルとしては悪くないけど、まとまったスクリプト書こうとすると大嫌いになる Add-TypeでインラインでC#書いたほうがマシだわ 特にC#erはソースの見た目がなんとなく似てるだけに地獄を見るんだよ
867 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 12:59:33.01 ID:RzxaIECOd.net] >>847 名前付パイプでOkだよな
868 名前:デフォルトの名無しさん mailto:sage [2018/05/26(土) 00:52:48.69 ID:grpyMBkE0.net] アプリ側で完結してないと、スクリプト操作とか変なバッチ叩かせてアプリ起動とか怪し過ぎるだろ。 業務アプリじゃねーんだw
869 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 00:24:44.02 ID:2eqT73MR0.net] if (-100 <= clickPointXTemp && clickPointXTemp <= 100) { clickPointX[clickNumber] = clickPointXTemp; MessageBox.Show(clickPointX[clickNumber].ToString() + "%"); MessageBox.Show(clickPointX[0].ToString() + "%"); MessageBox.Show(clickPointX[1].ToString() + "%"); MessageBox.Show(clickPointX[2].ToString() + "%"); clickNumber++; }
870 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 00:29:53.74 ID:2eqT73MR0.net] クリックしてカーソルが-100<=clickPointXTemp<=100の位置にあるときに配列にその値を代入させているのですが、 クリックするとその場で配列に代入できても次のクリックで0になってしまいます。 1回目クリック clickPointXTemp=10 [0]=10 [1]=0 [2]=0 2回目クリック clickPointXTemp=30 [0]=0 [1]=30 [2]=0 2回目クリック clickPointXTemp=100 [0]=0 [1]=0 [2]=100 なんでだろ・・・。
871 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 00:30:12.40 ID:2eqT73MR0.net] 5時間ぐらい悩み中。。。
872 名前:デフォルトの名無しさん [2018/05/28(月) 00:33:24.89 ID:SRIgyUF4a.net] データベースを使わないで、インデックスが共通する複数のデータ配列を作りたいときってどういう風な実装が最適なんでしょうか var A = new int[x] var B = new int[x] var C = new int[x] ・ ・ ・ var E = new int[x] みたいな感じです
873 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 00:33:25.48 ID:MfVpzBU40.net] スコープが原因だろうから全体のソース出さないとエスパーだらけの回答になるよ
874 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 01:08:05.78 ID:dlEIDhlNa.net] >>856 struct Hoge { int A; int B; int C; int D; int E; } .... var hogeArray = new Hoge[100];
875 名前:デフォルトの名無しさん [2018/05/28(月) 07:52:50.79 ID:Mf7CKKuIa.net] >>858 ありがとうございます 助かりました!
876 名前:デフォルトの名無しさん [2018/05/28(月) 12:27:04.88 ID:YifI+gJdr.net] 誰か>>857 のエスパーたのむ
877 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 13:02:33.05 ID:PWPrnTKxM.net] >>853-854 へのレスだろ
878 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 13:47:49.05 ID:i/nkRhbIM.net] >>860 https://youtu.be/mKrYRsENA-I
879 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 15:55:38.64 ID:W2eXy6T5M.net] エスパー能力ないと5chはこなせない
880 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 20:32:45.18 ID:0z7zyrSed.net] 複数のクラスで共通の変数定数を外出しして、 その変数クラスを継承するのって良し悪しで言うとどうでしょうか is aなのかちと微妙な感じです 内臓名クラスを継承して動物クラスを作ってるような has aなのでオブジェクトとして渡すべきですか?
881 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 21:46:19.79 ID:rs0fZbm/M.net] >>864 共通の変数などという低い抽象度でクラス設計を考えるのがそもそも間違ってる 実装からクラスを考えると必ず破綻するから、君の今の考え方のまま進む限りはいかなる選択肢も不正解 とはいえ最初から抽象度を上げて設計しろといっても初心者には無理な話だから、気にせず自分の思うように作ればいい 一通りモノ作れるようになったらオブジェクト指向モデリングの書籍を読むことをお勧めする
882 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 21:51:33.12 ID:I0m/gtVC0.net] オブジェクト指向プログラミングしない方がいいもの作れるよ 関数で組む方法を極めた方がいい
883 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 21:56:33.33 ID:dVAXJXVu0.net] >>865 >オブジェクト指向モデリングの書籍 例えばどんな本がありますか?特におすすめ、とかじゃなくてもいいです どういう本が該当するのかよくわからないのです
884 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 22:18:11.40 ID:rs0fZbm/M.net] >>867 王道はエリック・エヴァンスとかダグ・ローゼンバーグとか 今読んでも実際のコーディングに対しては何の参考にもならないと思うよ
885 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 22:21:17.59 ID:dVAXJXVu0.net] >>868 キーワード提供、感謝しています
886 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 12:48:47.90 ID:dUPfr/v4M.net] どのプログラム言語を選ぶかでオブジェクト指向モデルの実現方法がかなり違う
887 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 12:57:47.07 ID:Xt8fAcdVa.net] >>868 の本くらいの抽象度になると実装方法にはほとんど依存しないよ それどころかオブジェクト指向モデルすらも方法論全体の中では下層の方に位置付けられる
888 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 19:04:25.63 ID:QoecqRn60.net] とりあえず入門レベルが終わったんだけど次はeffective c#4.0っての読めばいいですか?
889 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 19:05:12.69 ID:upesQ40yM.net] 6.0 7.0のでてるからそっちでいいよ
890 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 19:28:28.39 ID:QoecqRn60.net] more effective C# 6.0 7.0ですか? moreとついてるので前の本を読む必要があるかと思っていたんですが大丈夫そうならそちらを購入しようかと思います
891 名前:デフォルトの名無しさん [2018/05/29(火) 21:07:37.85 ID:FUNbZ4ty0.net] フォーム間でのデータのやりとりはどうするのが一般的なのでしょうか? 例えば、Form2の表示と同時に、Form1に入力済みのデータをForm2に表示させる場合、今は以下のようにしています。 class Form1 { public object Data{get; set;} var form2 = new Form2(); form2.Parent = this; } class Form2 { public Form Parent{get; set;} Load() { this.Data = Parent.Data; } }
892 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 21:31:23.00 ID:T0OOxyUA0.net] >>875 一般的と
893 名前:かいいやりかたって聞かれると逆に難しいんで自分のやりやすい形で https://dobon.net/vb/dotnet/form/accessanotherformdata.html コンストラクタやメソッドの引数でも渡せるし [] [ここ壊れてます]
894 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 22:26:37.07 ID:LfCUNSAB0.net] >>874 Apressお勧め
895 名前:デフォルトの名無しさん [2018/05/29(火) 22:58:12.01 ID:G7p9dius0.net] >>874 言語仕様とか環境の変化で不要になった部分をバージョンアップしてるから 今からかうなら最新だけでいい 初版と4.0と最新で内容は被っている
896 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 23:11:52.08 ID:5CF0lkGw0.net] ビジュアルスタジオでC#使ってると、どんどんコードスタイルが簡略化されていくんだよな。
897 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 13:41:56.71 ID:Bf3z8rw50.net] SocketクラスのBeginConnectとかBeginReceiveとかに渡すコールバック関数を staticで書いてあるのとそうでないのと両方見かけるんですけど どっちが良いんでしょう?
898 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 14:44:18.44 ID:LltEUg5c0.net] まあ、C#ならコールバックは登録解除を明示的に行うからスタティックである必要は無いけどな。 でもこれがイベントハンドラからのデリゲートなら話は別だ。
899 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 14:47:38.89 ID:WVM+AecNM.net] >>880 そのSocketオブジェクトに合わせるのが正解 Socketを生で使うサンプルってスキルの低い業務ドカタが書いてたり書かれた時代が古かったりすることが多いので、 C#をよく理解してなくてCやVBの感覚でstaticにしないといけないと思ってるようなのが多い
900 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 15:03:40.50 ID:Bf3z8rw50.net] >>881 イベントハンドラからのデリゲートとはどういう状況でしょう? >>882 なるほどありがとうございます!
901 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 15:19:11.21 ID:AbqPsR3A0.net] TextBoxか、MaskedTextBoxに単位をつけたい。 小数点有りや無し、-の数値を入力できたりするものってできますか? -2℃ 14℃ 25.5℃ 2.5℃
902 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 18:15:14.92 ID:Zw7Yk0+cM.net] テキストボックスの横にラベルで単位でも書いておこうぜ □㌕
903 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 18:16:46.93 ID:Zw7Yk0+cM.net] 小数点は □.□㌕ な
904 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 19:19:02.19 ID:0ajP7AA9a.net] >>884 TextBoxクラスを継承
905 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 20:26:49.48 ID:9/5XjJFR0.net] >>884 入力支援・単位の入力補完・数値⇔文字列の変換 何でもできるけどホントにしたいことがそのレスでは分からない
906 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 21:28:20.09 ID:ygkZdVXVM.net] >>878 え、more付いてないのと付いてるのって同じ本なん? 独習C#と言い、命名がわけわからんな…
907 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 09:05:55.18 ID:azdekr4p0.net] 説明不足ごめんなさい。 出力ですが、最終的にはTextBoxの枠ごと印刷したいと考えております。 883の言う単位の入力補完だと思います。 MaskedTextBoxのマスクに####℃と記入し、 「-24.4」等のデータをデータベースから取り出して、入れたところMaskedTextBox.Textが244℃となってしまいました。 このテキストボックスを小数点有りの場合、なしの場合、負の符号が有りの場合なしの場合、「----」の場合、 1桁から5桁+「℃」としてTextBox.Textに出力したいと考えております。 できますか?
908 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 09:13:09.12 ID:gkm5sPLjM.net] TextBoxクラスを継承して自前で実装すればできる
909 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 09:47:05.22 ID:czZmZo8za.net] TextBoxクラスを継承してTextプロパティを上書き 書式とか単位を属性に持たせれば汎用的に使える。 コピペされたときの場合も考慮すること
910 名前:[879] mailto:sage [2018/06/01(金) 09:58:02.26 ID:azdekr4p0.net] ありがとうございます。 なんと
911 名前:なく、それっぽいものが作れそうです。 [] [ここ壊れてます]
912 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 10:22:08.86 ID:XLd38QjBM.net] ユーザーコントロールでボーダーなしテキストボックスとラベル並べた方が楽な気がする
913 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 18:06:59.69 ID:TnI3eVXu0.net] テキストボックスの描画や挙動を弄るの面倒くさいから汎用性を求めるんなら InputMan 買った方がいいよ
914 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 18:10:44.74 ID:UBye49NJM.net] ライセンスとかテクリスとか面倒だから買わない
915 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 18:21:51.24 ID:S7DUtxKdM.net] NuGetで参照できるオープンソースのWinFormsリッチコンポーネントって何が有名なの?
916 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 20:17:26.63 ID:dZV2tAFxM.net] nugetは俺の鬼門
917 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 21:28:02.83 ID:naL+ZRGN0.net] 僕の半蔵門
918 名前:デフォルトの名無しさん [2018/06/01(金) 23:18:54.61 ID:fWGAwsr30.net] 前門の虎 肛門の狼
919 名前:デフォルトの名無しさん [2018/06/02(土) 00:25:46.86 ID:A4SZL/oE0.net] 寒っ
920 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:06:40.82 ID:QJbZaU5f0.net] c#で穴ぼこメモリにしないように組むのって不可能?
921 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:27:51.87 ID:nL4AUV2I0.net] 可能だが、規模によっては現実的でない パフォーマンスを気にするなら、別にボトルネックが存在していないかを見直す方が先
922 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:30:12.89 ID:rvy10L9Oa.net] OSの仕事 どうしても嫌でデカいbyte配列確保して中に文字や数字全部入れても無駄
923 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:40:30.36 ID:QJbZaU5f0.net] >>904 それでも駄目なの? もうサービス部分はC言語で組んだほうが良さげ?
924 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:42:11.98 ID:1ZPJADB4M.net] GCが勝手に詰めてくれるから気にしなくていい ただし巨大なオブジェクトは専用の領域があって移動されないので断片化されやすいから注意
925 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:05:50.81 ID:msgJi+IZM.net] Spanとstackallocで我慢しなさい
926 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:10:29.54 ID:rvy10L9Oa.net] >>905 Cだって確保管理はOSの仕事だろ 何のためにメモリの管理をOSに任せたくないんだ?
927 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:12:27.29 ID:msBkLZBc0.net] DMAが僕を呼んでいるから
928 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:18:59.70 ID:J1HVezEsH.net] >>908 Cだってオブジェクト毎の領域をそれぞれ全てOSが管理しているわけじゃない mallocが効率化のためにだいぶ仕事してる
929 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:42:21.94 ID:gRqFSsBQa.net] OSでメモリはブロックなどで管理されていて要求があったら 要求サイズに合わせてそのブロックの中のさらに細かいブロックなどを払いだしてる こっちがどうしようとOSでブロックを作ってその中でやりくりしてる 例えそのブロックの中で断片化していて何か不都合あるのか?
930 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 14:08:09.74 ID:65ghWvPg0.net] 使う予定の最大量の倍の空きメモリーあれば大体は気にならない。 いまどきのパソコンはアプリが使いたいメモリーサイズの数百倍は有るから気にするな。
931 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 14:25:15.68 ID:QJbZaU5f0.net] リークしてると1ヶ月ぐらいで死ぬじゃん 現状自分でメモリ管理しないとどこで何が確保されてるのかわからないわけで そういうの確実に管理したいときはc言語のがいいのかなぁ?と
932 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 14:34:09.78 ID:gayBoTaI0.net] 極めて厳密に管理したいならC/C++でアロケータを自前で書くというのはあり得る しかしリークという点ではC#よりC/C++の方が遥かにやっちまい易いので, メモリ安全を確保する目的でC/C++で書くのは本末転倒のように思う
933 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 14:39:58.23 ID:I3vJQFJE0.net] リーク前提
934 名前:とかバカでしょ [] [ここ壊れてます]
935 名前:デフォルトの名無しさん [2018/06/02(土) 15:01:44.21 ID:fV6b9MUi0.net] List#Containsの重複判定基準をEquals以外にすることはできないでしょうか? ListにしたいクラスのEqualsが、別の目的用にオーバーライドされている為、Equalsを使うことができません。
936 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 15:43:20.19 ID:QJbZaU5f0.net] >>914 c#は現在実行中のアプリのインスタンスを確認する方法はあるの?
937 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 15:47:01.32 ID:XUNevU9ma.net] >>916 >Equalsが、別の目的用にオーバーライドされている 常識的にはそっちの方が解消すべき「問題」のように思うけど...
938 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 15:54:54.04 ID:XUNevU9ma.net] まあ、Exists使うだけだよね
939 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 16:03:39.22 ID:nL4AUV2I0.net] >>913 Webサービスか何かを想定してる? だったらコーディングで対応するんでなく、ロードバランサで複数のアプリケーションサーバに振り分けて サービスが止まらない様にしつつ、一部のサーバをオンメンテでリブートすべし
940 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 16:05:51.99 ID:wt7oIb0Vp.net] C#スレでメモリーリークを心配するとか、どんだけ無能なんだよ。
941 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 16:12:14.89 ID:5ltA6BNw0.net] 普通はリークで死ぬ前にGen2GC連発して性能ガタ落ちになるんじゃ どんだけ握ってんだよと
942 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 18:04:04.45 ID:QJbZaU5f0.net] 実際にメモリリークが起こらないように気をつける術は昔ながらの方法しかない? プロジェクトでnewするときはインスタンスマネージャー的なのを通して 可能な限りインスタンスを監視するとかそんなの?
943 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 18:17:48.36 ID:msgJi+IZM.net] マトモなコードを書くだけ
944 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:01:19.50 ID:pCnJrSzQd.net] メモリリークさせようと思わないとなかなかできんよ
945 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:11:03.61 ID:1ZPJADB4M.net] >>923 一時的なオブジェクトはもう必要ないなら握りっぱなしにしないで即座に使い捨てること 中途半端に握りっぱなしにしてるとGCの世代か昇格してメモリ使用量の増加やGCのパフォーマンス低下の原因になる 一方、単寿命オブジェクトのGCは爆速なので、newしたら積極的にすぐ放置すべき
946 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:16:06.36 ID:1ZPJADB4M.net] >>916 Any
947 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:21:44.73 ID:I3vJQFJE0.net] C#でメモリリークさせるコード書く奴がC/C++で無くせるとは到底思えないわ
948 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:25:12.19 ID:QJbZaU5f0.net] >>926 うーん 爆速ではないなぁ 3分に1回動かしてる処理があるんだけど 強制GCせずにずっと動かしてるとき メモリ使用量がかなりあがった状態でGCが動くと 3分に一度の処理のタイミングがズレちゃうんだよね そこで強制GCも十分に一度ぐらいの頻度で動かしてる状態
949 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:29:07.89 ID:pCnJrSzQd.net] だめだこいつ
950 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:31:42.56 ID:QJbZaU5f0.net] >>930 なんかいい方法あるんですか?
951 名前:デフォルトの名無しさん [2018/06/02(土) 19:37:34.74 ID:KX6MAuAea.net] ちゃんと設計してればC#でメモリーリークなんて気にすることなんてあるか? そんなガバガバ設計してるやつがCだったら大丈夫なんだけど、って馬鹿な話誰が信じるよ
952 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:45:14.53 ID:msgJi+IZM.net] >>931 簡単だよ マトモなコードを書くだけ
953 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:14:13.22 ID:fh+k246w0.net] 以降放置でお願いいたします
954 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:28:22.93 ID:iRadbqpq0.net] >メモリーリークなんて気にすること ページフォルトを気にしないヴァカっていたな。 リークしていないが累積しすぎたページフォルトがOSを殺す
955 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:30:41.21 ID:+/nRHGaPa.net] C#でリークやらかす奴がC/C++でやらかさない道理がない
956 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:31:22.14 ID:eSvYHUXNM.net] こいつもトンチキなので放置でいいです
957 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:50:00.44 ID:wt7oIb0Vp.net] まあ、でもC#はメモリー管理を隠蔽しちゃったから、実はCやC++よりメモリー管理
958 名前:オにくいんだよな。 [] [ここ壊れてます]
959 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:58:18.57 ID:msgJi+IZM.net] C++出身のC#初心者にありがちだね
960 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 21:10:12.98 ID:u/NNd5OV0.net] 未確認飛行のSpan説明みてサンプルコード動かそうとしたんだけど using System.Memory;すると CS0305ジェネリック種類 'Memory<T>' を使用するには、1 型引数が必要です。 って叱られるのなんで? VSもCoreも最新
961 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 21:20:59.23 ID:msgJi+IZM.net] SpanはSystem.Spanだ
962 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 21:33:12.83 ID:u/NNd5OV0.net] System.Spanにしてもでてきおる using static System.Memory<string>; ってするとエラーは消えた
963 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 17:57:54.97 ID:nwnHFAsS0.net] フォームアプリでマウスクリックでイベントをはっせいさせているのですが、 ある処理ループの実行中はこのクリックイベントの割り込み発生を禁止させたいです。 マウスクリック割り込みイベントを無効化、有効化する方法ってないでしょうか?
964 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:03:05.41 ID:acSSis/XM.net] >>942 そうじゃないusing System;ってこと
965 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:05:10.81 ID:5sPxkTAt0.net] >>943 イベントの購読とその解除 ufcpp.net/study/csharp/MiscEventSubscribe.html
966 名前:デフォルトの名無しさん [2018/06/03(日) 18:07:49.08 ID:qpwWeWwga.net] >>943 -=、+= デザイナーみればわかると思うよ
967 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:08:39.42 ID:imVGa92Ya.net] >>943 Control.Enabled どうでもいいけど、「割り込みイベント」って表現は間違ってるから他所では使わない方がいいよw
968 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:26:12.78 ID:y7bK61pJa.net] 処理中フラグ持っておいて クリックイベントの入り口で処理中ならreturnするのでよくない? bool 処理中=false; クリックイベントの頭 if(処理中)return;
969 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:33:27.61 ID:3EuqECGs0.net] lockで囲めば
970 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:43:15.37 ID:acSSis/XM.net] ボタンからしか起動しない処理だと保証されてるなら-=+=でもフラグでもいいが そうでないなら真面目に並列処理管理しないとね
971 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:59:01.85 ID:4vwgZnFjp.net] はあ? クリックイベント自体を抑止したのか? 意味あるの?
972 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 19:18:23.10 ID:bhcyF/oUa.net] 処理ループの中でメッセージループを実装してGetMessage()でマウスイベントをフィルターかな?或いは読み捨てる
973 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:09:50.51 ID:pjD3SZS60.net] え、連打対策してないの?
974 名前:デフォルトの名無しさん [2018/06/03(日) 20:15:38.36 ID:OWt1glR4a.net] 非同期で実行した場合とかの抑止とか?とエスパー
975 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:19:01.20 ID:S4J0YpoT0.net] >>944 つまりSpanを使うのにusing System;さえすればいいってこと? ごめんな、クソ素人過ぎて質問がまずいのか ufcpp.net/study/csharp/resource/span/ の var s = "abcあいう亜以宇"; var sub = s.Substring(3, 3); var span = s.AsReadOnlySpan().Slice(3, 3); for (int i = 0; i < 3; i++) { Console.WriteLine((sub[i], span[i])); // あ、い、う が2つずつ表示される } を試したいんだけど、できないって話なんだ
976 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:26:16.06 ID:klvCZP9p0.net] >>938 やっぱりそうだよね 厳密にやろうと思ったら昔ながらの方法でやるしかないんだよね
977 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:50:59.76 ID:H2Gh+VvdM.net] >>955 現時点ではAsReadOnlySpanが存在しないっぽいね Stringはもともと読み取り専用だからAsSpanでReadOnlySpanになるってことだと思うけど 過渡期の記事はそのまま鵜呑みにしない方がいいぞ
978 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:25:48.86 ID:
] [ここ壊れてます]
979 名前:nwnHFAsS0.net mailto: >>945 全く知らない概念でした。 勉強してみます。 [] [ここ壊れてます]
980 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:26:28.88 ID:nwnHFAsS0.net] >>948 これうまい手ですね。 使える場所ありそうですので試してみます。
981 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:27:58.09 ID:nwnHFAsS0.net] >>953 おっしゃる通りで、連打対策必要だったんですね。 フォームアプリだと必須の対策なんですね。 他で少し変な挙動してたのは連打対策してなかったことが原因のようです。 連打対策してみます。 というか、どうやればいいんだろ。 また、お勉強しなければ。
982 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:42:26.87 ID:0r68Qt9D0.net] >>960 いま質問した答えをイベントメソッドに組み込めば連打対策は終了 そっちを先に覚えるのが普通だと思ってた
983 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:51:01.95 ID:imVGa92Ya.net] >>959 全然うまい手じゃないw PC-98の時代じゃあるまいし、フラグって言葉を聞いたら眉に唾して聞かなきゃダメwww それを好むのは可読性に感心がないダメグラマの可能性が高いw
984 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:56:36.02 ID:imVGa92Ya.net] そもそもUIのデザイン論なんて大げさな話じゃなくても、 ユーザーの捜査に反応できない文脈では何らかの方法(通常はグレイアウト)でそれを ユーザーに対して明示しないUIは問題あるでしょうww そんなことにも思い至らない回答者は無視していいよw
985 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 22:53:07.14 ID:S4J0YpoT0.net] >>957 ありがとう、そういうこともあるんだな 勉強になった 10Gくらいの固定長テキストファイルから一行ずつ読み取って 最初の1-10文字はUSER ID、11はSEX・・・って分けてdbに突っ込んでるんだけど StringBuilderでLength=0しつつappendするくらいじゃ、stringでsubstringするのとあまり変わらなかったんで Span使えばマシになるのかなと思ったんだ
986 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 23:00:15.10 ID:8gLBE5WNa.net] そんなもん丸ごとDBにロードしたほうが速いだろ 固定長ファイルのロードはどのDBMSでもコマンド一発でできる
987 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 23:12:33.52 ID:S4J0YpoT0.net] >>965 それなw tempのカラムに一行まるごと突っ込んで、クエリでsubstrするやり方やってみる https://stackoverflow.com/questions/12423991/import-fixed-width-text-file-into-sqlite
988 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 23:35:40.25 ID:iikfdxhC0.net] 10GBのデータだと読取よりDBMSへの書き込み方法がネックになりそう
989 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 06:33:56.69 ID:mxEQUVjg0.net] >>967 細かくなるとdbスレ行きなんだろうけど 実際に書くところはC#なわけで、どこがボトルネックになってるのかザコ過ぎてわからんw とりあえずsqliteつかってメモリ上dbにinsertでトランザクション管理しっかりやってってして30分くらいだったからまーいいかと sql server expressだとbulk insertはわからんけどselectで並列処理されるみたいだから乗り換えてみる予定
990 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 11:04:17.43 ID:MivBMbBxa.net] sql server expressはひっくるめたDBサイズが最大10 GBまでだったと思うが
991 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 11:06:49.27 ID:UeJV2JW90.net] メモリしこたま積んでRedisかな
992 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 14:26:59.71 ID:pPavJvQvM.net] Postgresでいいよ ロード時に固定長レコードのフォーマットを指定できるから一時テーブルもC#もいらん
993 名前:デフォルトの名無しさん [2018/06/04(月) 16:33:35.32 ID:7NrmQXKK0.net] MonoのLinux版のインストールの仕方、ご教示いただけますと有難いです。宜しくお願い致します。
994 名前:デフォルトの名無しさん [2018/06/04(月) 16:
] [ここ壊れてます]
995 名前:48:48.54 ID:aK/XyO250.net mailto: 米Microsoftが米GitHubを買収することで合意 http://www.itmedia.co.jp/news/articles/1806/04/news058.html [] [ここ壊れてます]
996 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 20:38:58.19 ID:UeJV2JW90.net] >>972 ちょまど神を信仰すると天啓が降るぞよ
997 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 20:43:37.91 ID:CVKZewtza.net] >>972 Monoなんか今時もう誰も使ってないし誰もメンテしてないでしょ 今は.NET Coreの時代 GUIが目当てなら諦めなさい
998 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 20:52:46.96 ID:spHrXgPF0.net] UbuntuでもCentOSでもコマンド一発で入るがな
999 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:35:01.82 ID:ztrCxIDM0.net] >>975 何言ってんの?
1000 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:48:02.60 ID:9+XsYcyB0.net] Windows.Forms で WndProc を override して自分のコードを加えているのですが デバッガで進めていくと、その中に突入してしまいます。 InitializeComponent の中みたいに、デバッガが入らなくする宣言みたいなものなかったですか?
1001 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:49:06.62 ID:BHtXacEqa.net] >>978 debuggerstepthrough
1002 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:56:07.60 ID:Uz3WpYRO0.net] >>975 Mono Releases | Mono www.mono-project.com/docs/about-mono/releases/
1003 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 23:32:00.59 ID:054Q3E4O0.net] メインクラスとシリアル通信クラスの2つを使っています シリアル通信の受信完了でイベントをメイン側に発生させることら可能でしょうか。受信完了したらメイン側から受信データを取りに行くようにしたいのですが。
1004 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 00:07:28.69 ID:jE9yEXCCa.net] >>981 何でそうなるのw 発想が逆だってw そのシリア通信を担当するクラスSがデータ受信を通知するイベントを発生させて 受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw ついでに言えば受信データもEventArgs使って渡してしまえばいい
1005 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 00:33:25.52 ID:liKML/cX0.net] しょうがねえだろ初心者なんだから
1006 名前:976 mailto:sage [2018/06/05(火) 07:18:51.35 ID:ByFVOB9IM.net] >>982 やりたいのことはそれなんですよw 説明が下手ですいません 厳密にはデータを受けた事が分かったらメイン側は受信データの内容を解釈するクラスに送って処理分岐という形にしようかと思ってます。 用語や処理の知識がおいついてきてないので、あれを応用しようという感じにならず、調べるためのキーワードも出てこないです。 >>クラスSがデータ受信を通知するイベントを発生させて受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw ここが具体的にどういう構文になるのでしょうか。
1007 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 08:07:17.14 ID:D4M8TybKa.net] Signalを使っても作れるな。
1008 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 09:11:21.09 ID:GjVlFAo70.net] >>963 PCをあまり使い慣れてない人とか、ボタンはシングルクリックでいいのをダブルクリックしちゃったりとかあるんだよなこれが・・・
1009 名前:デフォルトの名無しさん [2018/06/05(火) 09:29:57.56 ID:nr/+sOXHa.net] 非同期じゃないならボタンイネーブル切ればいいだけじゃね
1010 名前:デフォルトの名無しさん [2018/06/05(火) 09:32:16.99 ID:nr/+sOXHa.net] すまん。忘れてくれ
1011 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 10:35:58.82 ID:l/0/VM/ma.net] 状態をGUIだけに持たせておくのはおかしいといつか思うはず
1012 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:11:20.04 ID:vCTdp4Eha.net] >>984 class FrameReceivedEventArgs:EventArgs { public byte[] Frame{get; private set;} .... } class CommunicationPort { public even EventHandler<FrameReceivedEventArgs> FrameReceived; .... } class FrameDecoder { public FrameDecoder(CommunicationPort c} { c.FrameReceived +
1013 名前:= CommunicationPort_FrameReceived; } private void CommunicationPort_FrameReceived((object sender, FrameReceivedEventArgs e) { .... } .... } [] [ここ壊れてます]
1014 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:44:05.86 ID:eGZjT6RJM.net] >>990 引数に渡されたものを弄るのは行儀の悪い設計 IReceiverインターフェイスみたいなのを用意してport.AddReceiver(decoder)とするか、 >>984 の言葉通りにいったん双方のクラスの外でイベントハンドラで受けて仲介したほうがいい
1015 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:51:41.81 ID:eGZjT6RJM.net] >>990 がなぜ行儀が悪いか補足しておこうか 普通、オブジェクトを別のクラスのコンストラクタに渡すとき、プログラマは 受け取った側→引数側 の向きの参照ができることを期待する ところが、>>990 だとそれが逆なんだよ new FrameDecoder(this.port) としただけで、portがGCされないかぎり作り捨てたはずのFrameDecoderがGCされないという、非直感的なコードになるわけ
1016 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:55:30.14 ID:vCTdp4Eha.net] 何言ってるのかさっぱりわからん よくわからん思考回路だな...
1017 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 13:09:28.12 ID:GjVlFAo70.net] 言い回しがようわからんが >>990 みたいなのするのが解放されないオブジェクトを量産するっていうのはなんとなくわかる
1018 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 13:11:38.32 ID:vyKZFDS5a.net] >>993 分からないならイベントというものを正しく理解してないんじゃないかな ボタンのクリックイベントをフォームが受け取れるのは、ボタンがフォームへの参照を(実際には間にデリゲートが入るので間接的にだが)持ってるから 基本的に、引数に渡ってきたものに自分自身を登録するのは避けたほうがいい オブジェクトのライフタイムが非常に分かりにくくなるから
1019 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 13:53:28.61 ID:UBCugO63M.net] reactive extensionsって.NET発祥なのに使う人少ないよね
1020 名前:デフォルトの名無しさん [2018/06/05(火) 15:23:49.06 ID:n583dJR10.net] >>974 ちょまど神って???状態でしたので調べてみました。 一つ知識が増えました。ありがとうございます。
1021 名前:デフォルトの名無しさん [2018/06/05(火) 15:24:19.24 ID:n583dJR10.net] >>975 そうなんですか。。。 NET Coreっての調べてみます。どうも有難う御座います。 ちょど昨日 GUI って何だ??って検索したばかりでした。 3日前からプログラムの勉強をはじめたばかりで。。。
1022 名前:デフォルトの名無しさん [2018/06/05(火) 15:24:34.93 ID:n583dJR10.net] >>980 ありがとうございます。TRYしてみます。 この掲示板すごーい!!皆様に感謝です。
1023 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 16:15:32.44 ID:vCTdp4Eha.net] >>994 ないないw イベントの購読解除はリークの原因になるのはその通りだけど、 それは>>991 が主張するように、イベントを発生するオブジェクトを引数で受け取ったかどうかと無関係。 >>995 俺は理解してないのは君の方だと思うよw その君のいう俺様ルール、何が悪いのかさっぱり分からない そもそも今はそんな話をしてるんじゃないw 単に質問者の参考になるかもしれんコードの骨組みを示しただけw
1024 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 16:16:25.51 ID:vCTdp4Eha.net] あ、 × イベントの購読解除 〇 イベントの購読解除忘れ
1025 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:31:17.11 ID:70UTtyrn0.net] 次スレたててみる
1026 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:33:22.39 ID:70UTtyrn0.net] ふらっと C#,C♯,C#(初心者用) Part138 https://mevius.5ch.net/test/read.cgi/tech/1528194762/ たった 議論は他のところでよろしく
1027 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 00:18:56.95 ID:+J9HGVUKa.net] >>1000 想像力のない人だなあ >>990 だと、イベントハンドラの登録を解除しない限り、FrameDecoderが不要になっても 登録先のCommunicationPortよりも先にGCされることは絶対にない。 じゃあ不要になったらイベントハンドラを登録解除できるようにしよう。いつ解除する? それはFrameDecoder自身には分からない。知
1028 名前:っているとしたら、それは>>981 のいうメインクラスだろう。 登録解除するにはFrameDecoderクラスのDisposeメソッドを呼べ、という仕様にするか? 結局、985のFrameDecoderを正しく扱うには、メインクラス側がそういうクラス外から見ただけでは想像できないFrameDecoderの気難しい仕様を理解した上で、 必要に応じて明示的な解放を行わなくてはならない。 そんなことをするくらいならメインクラス側で明示的に登録・登録解除をやったほうが遥かに素直で分かりやすい。 [] [ここ壊れてます]
1029 名前:デフォルトの名無しさん [2018/06/06(水) 00:26:33.34 ID:D75pa1n0a.net] 質問いいですか?
1030 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 60日 6時間 46分 14秒
1031 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています