ふらっと C#,C♯,C#(初心者用) Part137at TECH
ふらっと C#,C♯,C#(初心者用) Part137 - 暇つぶし2ch322:デフォルトの名無しさん
18/05/03 22:02:53.69 nzAwdXFB0.net
大して変わんねーよ
そんなに処理分けたきゃ
別exeにしてキックしろよ
後はできるならOSがうまくやるし
OSがうまくできなかったらそりゃできないんだろうよw

323:デフォルトの名無しさん
18/05/03 22:05:27.65 WY9OnNQR0.net
どうした発作か

324:デフォルトの名無しさん
18/05/03 23:06:32.43 L6Rknns90.net
>>315
いや、>>313の言う通りと言ったつもりなんだが・・・ふらっと怖いな

325:デフォルトの名無しさん
18/05/03 23:38:41.22 aADwc6210.net
おバカwebを鵜呑みにしない有望な>>313なんやからもう少し優しくレスしてやれよw

326:デフォルトの名無しさん
18/05/04 00:16:38.85 Xm9CVOioa.net
この例だとForよりAggregate使ったほうがいいな

327:デフォルトの名無しさん
18/05/04 00:37:22.14 pvqh60Bra.net
>>319
自分の日本語に疑問を持たない君の方が怖いよ
「これ(A)」でいいのか、Bじゃないのかって質問に「それ」で正しいと答えたら
質問した方は普通は正しいのは「これ」の方だと理解する

328:デフォルトの名無しさん
18/05/04 02:08:40.41 DbHU5BaK0.net
C♯でJavaScriptで生成されてるチャットサイトからコメントビューアを作りたいのですが、JavaScriptが生成したHTMLを取得するのに適したライブラリってどれでしょうか?
Formアプリで作る予定ですが
webBrowserコントロールが一番手軽でしょうか?

329:デフォルトの名無しさん
18/05/04 02:10:39.64 DbHU5BaK0.net
>>323
追記
使う.Net frameworkは4.6.1です
Nugetで公開されてるライブラリ等でも問題ありません

330:デフォルトの名無しさん
18/05/04 02:53:44.45 JYHlDWX6M.net
javascriptで生成といっても生成元になるデータを何処かでリクエストしてる筈
そっちを解析して直接的にHttpClientでgetしたほうがええよ

331:デフォルトの名無しさん
18/05/04 04:15:13.73 DbHU5BaK0.net
ありがとうございます
単純にセッションが必要っぽそうだったのでHttpClientでもいけそうです
使い方調べ直します

332:デフォルトの名無しさん
18/05/04 16:58:55.69 wDfbuSiA0.net
おバカwebと言えば↓みたいに日本語と英語で全く逆のことが書いてあったりする
基本的にwebに書いてあることは疑ってかかったほうが良さそうね
日本語
URLリンク(docs.microsoft.com)
> 比較のために文字列を正規化する場合は、String.ToUpperInvariant メソッドではなく String.ToLowerInvariant メソッドを使用します。
英語
URLリンク(docs.microsoft.com)
> Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison.
(グーグル翻訳) 比較のために文字列を正規化するときは、String.ToLowerInvariantメソッドの代わりにString.ToUpperInvariantメソッドを使用します。

333:デフォルトの名無しさん
18/05/04 17:22:00.73 0gwAiFk4d.net
>>327
X:webに書いてあることは
○:日本語訳は

334:デフォルトの名無しさん
18/05/04 19:43:22.77 RYlEGIXb0.net
グラフィックの扱いについて教えてください
panelに複数の画像イメージを貼り付けたいと思います
(トランプのカードを任意の枚数置くような感じです)
WidthとHeightをpanelのサイズに合わせて、Bitmapオブジェクトを
作ってそこに必要な画像を貼り付けて、最後にPaintイベントでその
ビットマップを Graphics.DrawImage で表示すれば良さそうだ、という
認識です
問題はBitmapオブジェクトに画像を貼り付けることで、メソッドを
調べても、Bitmapオブジェクトの任意の場所に任意のイメージを
貼り付けるものはなさそうです
そもそも用意した画像は Image.FromFile で準備しているのですが、
Imageオブジェクトを貼り付けられるのは Graphics.DrawImage
メソッドになるので、そもそも Bitmap オブジェクトを用意すると
いう発想が間違っているような気もします
多分いろいろ間違って認識しているので、どこから考え直せばよいか
教えていただけると嬉しいです

335:デフォルトの名無しさん
18/05/04 19:54:32.04 EvkA5vHv0.net
>>329
ベースの画像のいくつかの任意の位置に画像を貼り付ける描画ならそれで間違っていないけど
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
どこを勘違いして悩んでいるのかいまいちわからない
とりあえずBitmap オブジェクトはImageオブジェクトの一種
他にMetaFileとかあるから
そしてGraphics.DrawImageメソッドを使って貼り付けてもベースのBitmap オブジェクトはBitmap オブジェクトのまま

336:デフォルトの名無しさん
18/05/04 20:25:52.55 RYlEGIXb0.net
>>330
私の認識は、最終的に描画したいビットマップを用意して、それを Paint イベントで
描画するというものです
Panel1_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawImage(canvas, 0, 0);
}
で、上記の例で Bitmap canvas; とでもして用意したビットマップに、任意の画像を
貼り付ける方法を知りたいのです
例えば256x256ピクセルのサイズで用意したビットマップに、32x32ピクセルの
画像を3個位貼り付けた canvas を用意したいというものです
「そうではなくて、最終的に描画したいものはGraphicsオブジェクトで用意して、
Paintイベントで毎回描画するのだ」というのが正なのかもしれません
Panel1_Paint(省略) {
e.Graphics.DrawImage(image_1, image_1_x, image_1_y);
e.Graphics.DrawImage(image_2, image_2_x, image_2_y);
...
}
といった感じで
でもなんだか、毎回Paintイベントハンドラに描画処理を全部書くのは変な感じがして、
描画したい画像を用意するのと、実際に描画するのは別の処理ではないかと思っている
次第です

337:デフォルトの名無しさん
18/05/04 20:30:54.11 Ad2tmUBO0.net
描画したい画像を用意するのと、それを描画するのは当然別の処理だ。
でもアニメーションさせたいとか画像の変更を即座に描画に反映させたいとかなら、用意した足で再描画させるしかないだろ?

338:デフォルトの名無しさん
18/05/04 20:36:30.50 EvkA5vHv0.net
>>331
何でイベントでやるのか知らないけど複数の描画を同時にやるメソッドはなかったと思うよ
URLリンク(dobon.net)
Bitmap canvas=new Bitmap(x,y);
Graphics g = Graphics.FromImage(canvas);
Graphics.DrawImage(image_1, image_1_x, image_1_y);
Graphics.DrawImage(image_2, image_2_x, image_2_y);

339:デフォルトの名無しさん
18/05/04 20:38:50.67 EvkA5vHv0.net
あ、ごめん
Graphics g = Graphics.FromImage(canvas);
g.DrawImage(image_1, image_1_x, image_1_y);
g.DrawImage(image_2, image_2_x, image_2_y);
だった

340:デフォルトの名無しさん
18/05/04 20:49:55.24 RYlEGIXb0.net
>>332
アニメーションさせたいとか、そういう意図はないです
単に、描画したい画像を用意するのに、Bitmapオブジェクトにさらに画像を
貼り付ける方法がわからなくて悩んでいます
>>333
イベントでやってるのは、単に参考にしたサイトで「Paintイベントハンドラで
処理する」と書いてあったので、それを鵜呑みにしただけです
URLリンク(dobon.net)
これを見て気づきましたが、そもそもパネルに直接描こうとするのが間違いで、
パネルにPictureBoxを貼り付けた上でそこに置けば良いのかな?

341:デフォルトの名無しさん
18/05/04 20:54:32.05 EvkA5vHv0.net
>>335
どっちでも同じだと思う
Graphics g = Graphics.FromImage(panel1.BackGroundImage);
でやれば直接パネルに書き込めるし
ただ大きい画像を表示して画像の表示位置をスクロールさせたいのならパネルの上にPictureBoxが基本
とりあえず書いて動かしてみたら

342:デフォルトの名無しさん
18/05/04 21:05:17.61 aP3h8uSia.net
>>335
実現したい要件だけを明確に書いた方がいいと思うよw
そこが明確じゃないのに「俺が考えた実装方法」ばっかり詳細に書くから
答える方も何を返答していいのか分からないw

343:デフォルトの名無しさん
18/05/04 21:11:39.38 RYlEGIXb0.net
>>337
実現したいことは、「任意の画像を任意の場所に配置したイメージを、panelに描画したい」です
これは明確で、それを実装するための方法でどう悩んでいるかが正しく伝わらないと、答える方も
こちらのレベルがわからなくて困るかと思ってました
実現したいことがちゃんと伝わっていませんでしたか
それ以前の問題でしたね。。。

344:デフォルトの名無しさん
18/05/04 21:43:04.80 pJ6Zbbxdp.net
ファイル読んでバインドするだけちゃうのか?

345:デフォルトの名無しさん
18/05/04 22:52:54.89 IMcj9GIN0.net
>>338
dobon.netにあるじゃん

346:デフォルトの名無しさん
18/05/05 01:53:47.84 US1Viqbq0.net
bmp1が配置先のイメージ、
bmp2がbmp1に配置したいイメージだとしたら以下になる
Graphics g = Graphics.FromImage(bmp1);
g.DrawImage(bmp2, x, y); // bmp1の(x, y)にbmp2を書き込む
g.Dispose();
pictureBox1.Image = bmp1;
これだけでパネルにbmp1が表示される

347:デフォルトの名無しさん
18/05/05 01:54:36.93 US1Viqbq0.net
あ、パネルにPictureBox貼ってる前提ね

348:デフォルトの名無しさん
18/05/05 05:38:36.94 LRJiKh0v0.net
>>341
ありがとうございます
思っていることが問題なく実現できました
できるようになってみると、一体何を悩んでいたのか、自分でもわからなくなってしまいました
多分、DrawImage で書き込む先がVRAMだと思い込んでいたのでしょう

349:デフォルトの名無しさん
18/05/06 01:21:02.23 dl2mQyCb0.net
private void Form1_ResizeBegin(object sender, EventArgs e)
{
  leftEdge = this.Left;
  rightEdge = this.Right;
  topEdge = this.Top;
  bottomEdge = this.Bottom;
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
 if ((rightEdge < this.Right) && (topEdge > this.Top))
 {
   // 処理に入らない
 }
}
このコードでフォームを右上にドラッグして拡大した場合に処理に入らないのですがどこがおかしいでしょうか

350:デフォルトの名無しさん
18/05/06 01:31:51.93 HfMj07lt0.net
右上にってことは事後の方が top の値が小さくなってるからじゃないの?

351:デフォルトの名無しさん
18/05/06 01:32:20.44 HfMj07lt0.net
ああ、そう書いてあるのか。失礼。

352:デフォルトの名無しさん
18/05/06 01:40:54.74 LGFxrhOP0.net
>>344
イベント有効になっている?
Form1_ResizeEndのメソッドに処理が入っているかそこから確認
  int leftEdge, rightEdge,topEdge ,bottomEdge;
public Form1()
{
InitializeComponent();
this.ResizeBegin += Form1_ResizeBegin;
this.ResizeEnd += Form1_ResizeEnd;
}
private void Form1_ResizeBegin(object sender, EventArgs e)
{
this.Text = "start";
leftEdge = this.Left;
rightEdge = this.Right;
topEdge = this.Top;
bottomEdge = this.Bottom;
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
this.Text = String.Format("{0}:{1}", (rightEdge < this.Right), (topEdge > this.Top));
if ((rightEdge < this.Right) && (topEdge > this.Top))
{
this.Text = "OK";
}
}
これで動いた

353:デフォルトの名無しさん
18/05/06 01:45:28.35 mBsERy4z0.net
private void DataGridViewFilter()
{
BindingSource objBind;
DataTable objData;
string strFilter;
objData = (DataTable)DataGridView1.DataSource;
if (IsNothing(objData) == false)
{
objBind = new BindingSource();
objBind.DataSource = objData;
strFilter = "Color like '%" + txt_Condition.Text + "%'";
objBind.Filter = strFilter;
}
}

354:デフォルトの名無しさん
18/05/06 02:05:39.13 dl2mQyCb0.net
>>347
ご回答ありがとうございます
イベントは有効です
左や上や左上への拡大縮小ドラッグは正常なのですが左下や右上がおかしいです
提供していただいたコードを試したのですが、何故かは分からないのですが rightEdge < this.Right がfalseになっています
もう少し調べてみます

355:デフォルトの名無しさん
18/05/06 02:22:41.56 xovvhFEya.net
申し訳ないけど、問題を再現できるそのまんまのコードを提示していない時点で
確実に原因はあなたの勘違いにあると断言できる

356:デフォルトの名無しさん
18/05/06 05:58:39.10 CBGkbUql0.net
Listを値渡しすべき所が参照渡しになってたせいで
くっそハマったんだけど
こういうのって、C#の解説本1冊読めば
注意しろって書いてあるもんなの?
参照渡し云々って単語はかろうじて知ってて
↓のサイトをたまたま見つけて、偶然解決出来たけど
URLリンク(webbibouroku.com)
エラーや例外にならないバグが怖すぎる・・・

357:デフォルトの名無しさん
18/05/06 06:08:47.32 994JP5I00.net
そんなものここで聞けば3秒で解決するし

358:デフォルトの名無しさん
18/05/06 08:39:03.59 j24ysXtO0.net
c#って物体X(?)は全部参照渡しになるよね

359:デフォルトの名無しさん
18/05/06 08:48:15.69 6gN3mvyQ0.net
>>351
それ値渡しじゃない

360:デフォルトの名無しさん
18/05/06 09:09:18.32 9GXSG5IC0.net
イメージの配置はできるようになりましたが、いろいろ触っていると、チラツキが
気になるようになってきました
テストしてみたところ、下記のレベルでもチラツキが発生します
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = Graphics.FromImage(canvas);
g.FillEllipse(bg_brush, x, y, radius, radius);
x += 5;
g.FillEllipse(fg_brush, x, y, radius, radius);
count++;
g.Dispose();
pictureBox1.Image = canvas;
if (count == 10)
{
count = 0;
timer1.Stop();
}
}
timer1.Intervalは100msにしてあります
チラつきを押さえるには、フォームの DoubleBufferd を true にすると良いと見ましたが、
true にしても false にしても変わりないようです
そもそも PictureBox は内部処理でダブルバッファリングを行っているとも見ました
まだなにかできることはあるのでしょうか

361:デフォルトの名無しさん
18/05/06 09:36:21.79 9GXSG5IC0.net
書いてませんでしたが、bg_brushは背景色の、fg_brushは前景色のブラシです
Brush bg_brush = new SolidBrush(SystemColors.Control);
Brush fg_brush = new SolidBrush(Color.Black);
で定義しています

362:デフォルトの名無しさん
18/05/06 09:54:38.21 RTzVBomo0.net
canvasはどんな風に設定しているの?

363:デフォルトの名無しさん
18/05/06 10:06:54.11 9GXSG5IC0.net
canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);
として定義しています

364:デフォルトの名無しさん
18/05/06 10:36:38.03 RTzVBomo0.net
DoubleBufferdとか触らずともこっちではちらつかないけどなあ
ちらつくってのはどういうふうに見えることを言ってるの?
panelやpictureBoxのサイズやradiusの値もさらしてみては?

365:デフォルトの名無しさん
18/05/06 10:50:11.40 IbwjU9Qn0.net
どこで何やってんの不明瞭だから当てずっぽうだが
下手に自前描画してるチラつくなら大体OnPaintBackgroundのせい

366:デフォルトの名無しさん
18/05/06 10:55:03.54 9GXSG5IC0.net
URLリンク(ideone.com)
これが全コードです
空のWindowsフォームアプリケーションで生成されたフォームに、ボタンとパネル、
PictureBoxを配置しただけの状態です
パネルとPictureBoxは、DockをFillにしてウィンドウサイズに合わせてあります

367:デフォルトの名無しさん
18/05/06 10:56:51.16 9GXSG5IC0.net
これで、timer1のIntervalを50msにすると、はっきり分かる程度にちらつきます

368:デフォルトの名無しさん
18/05/06 13:14:55.43 gzoDeGmX0.net
垂直同期しろ。

369:デフォルトの名無しさん
18/05/06 13:31:21.62 o/aLqSU5a.net
>>362 やってみたけとちらついたりはしないねw ただフレームレートが低いから滑らかに見えないだけ



371:デフォルトの名無しさん
18/05/06 15:35:36.42 MOQB+J+Ha.net
解決のヒントにはならないだろうけど
ちらつきって何かということについて
すでに表示されてるものが一瞬透明に見えるから表示がおかしく見えること
たとえば半径100の円が横に5ドット動くとする
普通に考えたらほとんどの円に背景は隠れたままだけど何も考えないで適当にやると
背景が一瞬見えてしまう
一度円を消してなにもない状態を表示して
次に円を書いてるから問題がある
何もない状態を表示しなければいい

372:デフォルトの名無しさん
18/05/06 18:19:28.93 9GXSG5IC0.net
>>364
環境の問題ですか・・・
一応ディスプレイのリフレッシュレートは60Hz、タイマー設定が50msだと20Hzあれば
十分ですので、あまり関係ない気がするのですが
でも私の環境でしか出ないのであれば、環境依存かもしれません
>>365
これを避けるためにダブルバッファリングをするわけですし、書き換えた後のビットマップを
PictureBoxに貼り付けるようにして、描画途中では貼っていません

373:デフォルトの名無しさん
18/05/06 18:22:22.08 gzoDeGmX0.net
だからハードの違いだって言ってんだろw

374:デフォルトの名無しさん
18/05/06 18:25:15.44 w10wIaHya.net
>>366
いやいや何でそういう話になるのw
たぶん環境の問題なんかじゃなく、あなたが低フレームレートに起因する
カクカクした動きをちらつきだと誤認してるだけだと思うよw

375:デフォルトの名無しさん
18/05/06 18:30:35.56 gzoDeGmX0.net
アホばっかり。

376:デフォルトの名無しさん
18/05/06 18:55:10.27 9GXSG5IC0.net
>>368
カクカクした動きとチラつきを同一視しているわけではありません
>>365
が書いたように、今回の例だと黒い円が一瞬消えているような感じがします
移動量の x += 10; をもっと少なくすれば目立たなくなりますが、それでも
なんとなく嫌な感じがします
でも言葉で説明するのは難しいですね
低フレームレートの認識を誤解していたようですが、インターバルを100msとか
50msとかだとディスプレイのリフレッシュレート(あるいは人間の認識力)に比べて
低すぎるので、かえって目立ってしまうということでしょうか?
確かに、インターバルを思い切って5msとかにしてみると、チラつきは軽減されてきた
気がします

377:デフォルトの名無しさん
18/05/06 19:33:59.43 7/UIZFPx0.net
ちょっと改変して逆にチラツキをわかるようにしてみた
URLリンク(ideone.com)
WinFormプロジェクトを新規で作って元のソースを全部消したうえで、このソースを既存の項目として追加
上がPictureBoxで下がPanel
>>370
PictureBoxのダブルバッファがデフォルトで有効なのは知っているのを確認したので
その上でPanelはデフォルトでダブルバッファが有効だというのを念頭に入れてコードを実行してほしい
同じオブジェクトの動きだが、うちで確認する限りは下はあきらかにチラツキがあって上は目立たない
>>365
>何もない状態を表示しなければいい
というわけで先に描画して動いた部分だけを消すという動作を実現してみたつもり
だったんだけど、移動量を大きくするとカクツキがどうしても目立ってしまってうまくいかない。ギブアップw
>>370
もっとGDI+の動作を把握するとかゲームなどでの実装方法を探すかした方がいいと思う
残念ながら俺の知識ではここまで

378:>>370
18/05/06 19:37:36.72 7/UIZFPx0.net
ごめん
>Panelはデフォルトでダブルバッファが有効だというのを念頭に入れて
Panelはデフォルトでダブルバッファが無効だというのを念頭に入れて
の間違い

379:デフォルトの名無しさん
18/05/06 20:17:55.74 LW3/RgRJa.net
うーんw
>>361のコード自体がダブルバッファリングの実装なので、
少なくともGDI+を使う限り、これで本当にちらつくなら何をやってもちらつき回避は不可能。
何度も言うけど、少なくとも俺の環境では低フレームレート特有の不自然さはあっても
フリッカーは確認できない
しつこいようだけど、俺は質問者がちらつき(フリッカー)がどういう現象か
理解してないだけのように思う

380:デフォルトの名無しさん
18/05/06 20:20:58.90 j24ysXtO0.net
まあ、unity使ってもDirectX使ってもスクロールとかなめらかにならないしね
グラボも汚いってのも考慮に入れる
市販のゲームでもスクロールしてるときはカクカクグシャグシャはデフォ

381:デフォルトの名無しさん
18/05/06 20:21:41.45 9GXSG5IC0.net
>>371
ありがとうございます
私が確認しても、確かに上下で明らかにチラつきが違い、下ははっきりとわかります
上はほとんどわからないレベルですね
PictureBoxもPanelも、どちらも出来上がったビットマップを貼り付けているのですから
同じ表示になりそうな気がしますが違いますね
これをちゃんと理解できれば解決できそうです

382:デフォルトの名無しさん
18/05/06 20:36:30.01 LW3/RgRJa.net
>>371のコートだとたしかにフリッカーが確認できるねw
>>373は撤回します

383:デフォルトの名無しさん
18/05/06 20:39:37.09 9GXSG5IC0.net
>>373
私が「チラツキ」と表現しているのは、>>371が上げてくれたプログラムの
下側、panelで発生している現象です
私の理解では、>>371でなぜ表示に違いが生じるのかがわかりません
どちらも、加工後のcanvasを貼り付けているはずなのに
>>371でやっていることは、ダブルバッファリングではないのでしょうか?
>>371のプログラムを実行してみて、違いはPictureBoxをウィンドウに直接
貼り付けているか、panelを置いてその上に貼り付けているか、です
私のテストプログラムでは、panelを置いてその上にpictureBox1を置いてます
これが影響するのでしょうか

384:デフォルトの名無しさん
18/05/06 20:49:20.18 7/UIZFPx0.net
URLリンク(ideone.com)
蛇足だろうけどnew BitmapじゃなくPictureBox.Imageを直接描き変えるもの
>>377
370で何をしたかったかというと「ダブルバッファリングではこれ以上改善できない」事の証明
>panelを置いてその上にpictureBox1を置いてます
それは多分関係ない。panelに背景を設定すると話が変わると思うけど
実際に改善するには移動量を少なくして滑らかに見せるくらいしかおもいつかない
消える側の方でなく進行方向側でカクついているんだよなあ・・・

385:デフォルトの名無しさん
18/05/06 21:02:31.57 9GXSG5IC0.net
>>378
試してみました
>>371と変わらない感じですね
これまで質問してきた趣旨とは変わってしまいますが、
Graphics g = Graphics.FromImage(pictureBox1.Image);
これでビットマップを書き換えた後に pictureBox1.Image を書き換えていないと
いうことは、いちいち canvas ビットマップを用意して細工しなくてもよかったと
いうことでしょうか
で、本質ですが、ご提供いただいたテストプログラムでは明らかにチラつきの
改善が見られるということはダブルバッファリングは機能している、これ以上
気になるのであれば、それは滑らかさの問題であってチラつきの問題ではない、
と認識するのが良さそうですね

386:デフォルトの名無しさん
18/05/06 21:19:50.71 IbwjU9Qn0.net
下PanelはBackgroundImage使ってるのが悪いんじゃねえかなあ
canvasはPanelのPaintで描画するようにして
PanelのDoubleBufferedをtrueにするかOnPaintBackgroundの無効化でチラ付かなくなったよ
あとチラつきとは関係ないけどお行儀的には再描画はTickで
Invalidate(true)呼び出してPaintのタイミングはフレームワークに任せるべし
Tick毎に無駄にImage/BackgroundImageに突っ込んでるから結果的に自分で再描画してるけど

387:デフォルトの名無しさん
18/05/06 21:52:55.18 LW3/RgRJa.net
ああ、やっぱり俺の認識で合ってるねw
何だかおかしいと思ったが
>>377
フリッカーを誤解してないのは分かったけど、>>361のコードでフリッカーなんか
発生しないってだから

388:デフォルトの名無しさん
18/05/06 23:08:48.35 s/HjZ7Qd0.net
>>351
それは参照渡しになってたわけじゃない
C#の参照渡しはhoge(ref list)のようにrefがつく
あなたがハマったのは参照の値渡しでインスタンスは複製されないということ
ぺらぺらの入門書とかだとわからんが、ジェネリックやクラスをちゃんと学べる程度の本なら載ってるはず

389:デフォルトの名無しさん
18/05/06 23:23:27.04 gzoDeGmX0.net
グラボの性能差だから、ちらつき。

390:デフォルトの名無しさん
18/05/06 23:49:17.66 5astaXB20.net
>>351
List固有の問題ではなく、classは全て参照型だからだ。
だから、=で代入しても同じオブジェクトを指すだけ。
ちなみにstructは値型。こっちなら=で代入したらオブジェクトが複製される。

391:デフォルトの名無しさん
18/05/07 01:29:04.63 inVQGvpaa.net
>>361をFPSと速度を変えられるようにしてみたけど
思ったより面白くもないし動作も滑らかじゃないなw
どっちにしろやっぱりフリッカーは発生しない
URLリンク(ideone.com)
ところで、タイトルバーをドラッグしたりすると画面の更新が止まる問題を
回避する方法ってなかったっけ?

392:デフォルトの名無しさん
18/05/07 01:32:11.28 inVQGvpaa.net
ああ、今思ったけど、FPSは本当は実測した値を表示すべきだねw
>>385はタイマーのインターバルから計算した理論値で実測値じゃない

393:デフォルトの名無しさん
18/05/07 01:32:57.05 3karsGmmp.net
グラボやドライバーの違いで発生する問題を自分のところじゃ発生しないからって頭ごなしに否定する奴はどうして生きてるんだろうな?

394:デフォルトの名無しさん
18/05/07 01:42:18.83 inVQGvpaa.net
>>387
それは君が勝手にそう思ってるだけw
そんな問題はWin9xの時代だって存在しなかったよ
っていうか、言っちゃわるいけどフリッカーが発生する原因を理解していればそんな間抜けな台詞は
出てこない

395:デフォルトの名無しさん
18/05/07 01:43:57.94 inVQGvpaa.net
なんか垂直同期(笑)とか書いてるのもいたけど、
頭の中80年代で止まってるんじゃなかろうかw

396:デフォルトの名無しさん
18/05/07 04:32:44.15 S2Y5gzQd0.net
DataGridViewで、複数のカラムを基準にソートするにはどうしたらいいでしょうか。
以下のようなイメージです。
元データ
------
4   2
1   4
2   1
5   4
6   7
1   3
1   6
これを、カラムのヘッダーセルのクリック操作だけで、以下のように出来るようにしたいです。
------
1   3
1   4
1   6
2   1
4   2
5   4
6   7

397:デフォルトの名無しさん
18/05/07 06:24:03.69 SlIACPlK0.net
プロパティだけでは無理
各列のSortModeはAutomatic以外にして
ColumnHeaderClickイベントで自分でソートする必要がある
実際にどうやってソートするかはDataGridViewに表示してるデータをどうやっているか次第
ところで下の状態で1番目の方のカラムヘッダをクリックしたらどうなるの?
とか色々場合があってUIというかUX?を決定するのが結構面倒

398:デフォルトの名無しさん
18/05/07 06:43:05.39 UbBhnDZYM.net
さすがに垂直同期はネタだろ
釣られる奴がいるとは思わなかったけど w

399:デフォルトの名無しさん
18/05/07 07:18:03.31 3karsGmmp.net
ググって事実を知ったんだな。そんなに悔しいのか?

400:デフォルトの名無しさん
18/05/07 08:25:49.50 H7YotaIo0.net
>>390-391
複数列でのソートは、Kotlin なら、
配列.sortedWith(compareBy({ 列1 }, { 列2 }))
C# は、よく知らないけど、こういう感じ?
配列.OrderBy(列1).ThenBy(列2)

401:デフォルトの名無しさん
18/05/07 14:38:50.30 iApxgodj0.net
教えてください
キャストが上手くできずに困っています
具体的には、VisualStudioでデバッグのウォッチウィンドウに
Enumerable.Empty<int>() is IEnumerable<object>
と入力するとtrueと表示されるので少なくとも条件が整えば
IEnumerable<int> は IEnumerable<object> に
キャストできるとおもうのですが、プログラム上で安直に
Console.WriteLine(Enumerable.Empty<int>() is IEnumerable<object>);
を実行すると画面にFalseと表示されてしまいます
ウォッチウィンドウ


402:上とプログラム上で何か条件の違いがあって このようなことが起こっているのだとは思いますが、理解が不十分で解決方法が分かりません そもそもIEnumerable<T>のTは共変なのでintがobjectにアップキャストできる以上 IEnumerable<int>も無条件でIEnumerable<object>にキャストできると 思っていたのですが、この部分に何か誤解があるのでしょうか VisualStudio15.6.7、コンソールアプリ、ターゲットフレームワーク4.7.1でテストしています よろしくお願いします



403:デフォルトの名無しさん
18/05/07 18:57:27.81 cAXvX5WKa.net
>>395
値型は不変だったような
URLリンク(ufcpp.net)
イミディエイトだとs演算子がtrueを返す理由は分かりませんw
何でしょうね

404:デフォルトの名無しさん
18/05/07 21:52:56.92 iApxgodj0.net
>>396
レスどうもありがとうございます。その後色々と試してみると、プログラムで
Console.WriteLine((Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184);
を実行すると画面には184と表示され、教えていただいとことと辻褄が合うように思います
また、これまでの結果から考えてウォッチウィンドウで
(Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184
の値を調べれば4649と表示されるのかなと思いきや「メモリを読み取ることができません」と表示されたので、
こちらの挙動はおっしゃる通り分からない(バグ?)と考えるしかなさそうです
ジェネリックでないIEnumerableはLINQが使えないのでこれまで
if (x is IEnumerable<object> enumerableObject)
{
  ...
}
と書く場面があったのですが、これではIEnumerable<値型>が拾えなさそうなので
if (x is IEnumerable enumerable)
{
  var enumerableObject = enumerable as IEnumerable<object> ?? enumerable.Cast<object>();
  ...
}
とでも書いておこうかと思います(今のプログラムではxがジェネリックでないIEnumerableになることはないのですが)
もっと良い方法があれば教えてもらえると嬉しいです

405:デフォルトの名無しさん
18/05/09 00:08:06.32 98vw71AM0.net
名前空間A と名前空間A.B がある場合に、A.B内からAのクラスを扱うにはどうすればいいのですか?

406:デフォルトの名無しさん
18/05/09 01:14:34.94 KTiGjU5t0.net
>>322
Aをusingすればよい

407:デフォルトの名無しさん
18/05/09 01:15:21.71 KTiGjU5t0.net
なんかすげーレス間違えたけど
>>398

408:デフォルトの名無しさん
18/05/09 01:47:53.29 lSrhXmV/0.net
そもそも名前空間ってどうやって扱うのが正しいの?

409:デフォルトの名無しさん
18/05/09 02:09:09.87 98vw71AM0.net
>>400
クラスとは違って、やはりそうやって使うものなのですか

410:デフォルトの名無しさん
18/05/09 02:25:39.99 PD0iDBLsp.net
完全表記しても良いんだよ?

411:デフォルトの名無しさん
18/05/09 17:57:38.22 8iDq54Sd0.net
嫌なら全部同じ名前空間内に入れ込んでしまえ
悩まなくて済むぞ

412:デフォルトの名無しさん
18/05/09 18:15:06.67 GFIhYWfG0.net
別に名前空間分ける意味ないよな。

413:デフォルトの名無しさん
18/05/09 18:19:36.14 nbiQ9nbF0.net
分業の為の仕組み

414:デフォルトの名無しさん
18/05/09 19:48:53.19 lSrhXmV/0.net
>>406
逆に無駄な混乱が起きない?
同じ名前のクラスとかあるとちょっと面倒じゃない?

415:デフォルトの名無しさん
18/05/09 19:49:33.69 D7X0frHnM.net
C#好きだけどnamespaceでネスト一つ深くなるのはあかんわ

416:デフォルトの名無しさん
18/05/09 20:08:50.17 4zjT3ksId.net
>>407
全て自分で書くコードならいいんだけどね。サードパーティのライブラリのクラスと衝突する可能性なんていくらでもあるから。

417:デフォルトの名無しさん
18/05/09 20:10:07.14 QZYGN7xi0.net
>>407
書き分けのために命名が歪むのは良くない
NM1.Class/NM2.Class
NM1Class/NM2Class
単にプリフィクス付けるだけなら
名前空間があろうとなかろうとやってる事は同じ

418:デフォルトの名無しさん
18/05/09 20:22:37.87


419:SavMNDDu0.net



420:デフォルトの名無しさん
18/05/09 20:54:59.54 EkWsGx0u0.net
やたら長い名前付けて重複を避けるのさ。
ダイビングがかったるいって?
最初のusingに書くだけだから大丈夫。

421:デフォルトの名無しさん
18/05/09 21:00:22.54 EHFfoX53a.net
>>407
自分(同じチーム)で同じ名前の違うクラスが必要になるケースは
少ないが(ないことはない)他人が書いたライブラリで既に使われているのと
同じ名前が必要になるケースなんかいくらでもあるよw
例えばSystem.Drawing.Point以外のPointが使えなかったら困るでしょ
あと、名前空間の目的は名前のバッティングの回避だけじゃない。
むしろ一番の目的は分類と整理でしょ。
名前空間が使えないライブラリは全部のファイルをデスクトップに置くできない人と同じ
適切に命名され適切な階層構造をもった名前空間は索引の機能を持つし、
コードのコンテキストを明確にする。
System.Drawing.PointがPointだけで2Dグラフィックの座標だと分かるのは、
プログラマはそれがSystem.Drawing内の型だと知っているから

422:デフォルトの名無しさん
18/05/10 00:36:27.80 yXMj8vMdM.net
using エイリアス ディレクティブ でggr

423:デフォルトの名無しさん
18/05/10 01:45:10.65 m/SOSTAZ0.net
>>413
普通にdrawingのcolorとmediaのcolorがバッティングしてるじゃん
それと自作のcolorとこれまた別の奴の作ったcolorがバッティングするだけでもう面倒臭くて死にそうになる

424:デフォルトの名無しさん
18/05/10 01:55:25.02 m/SOSTAZ0.net
もっというとwpfでも別のcolor作ってんじゃん
バッティングうぜぇんだよ
こんな簡単なクラスでもう再利用効かないんだから名前空間まで作って管理するなよバカっタレかよ
当のMSからもうまともなことやってねぇっていうかできないんだから
いい加減ファンタジー設計はやめるべき
いや、もうファンタジーじゃないな
メルヘンの領域まで入ってる

425:デフォルトの名無しさん
18/05/10 02:19:31.02 di97fd/ta.net
>>415-416
何を言ってるのか意味がわからねいよ。

426:デフォルトの名無しさん
18/05/10 02:30:05.52 yIfUPK8/0.net
この程度で死ぬほど面倒臭がってたら、プログラミング自体が向いてないな。

427:デフォルトの名無しさん
18/05/10 04:06:02.42 R4f/WJPq0.net
C#8.0のpreviewきましたねえ
URLリンク(github.com)

428:デフォルトの名無しさん
18/05/10 07:27:01.34 1WB9uyi8M.net
>>417
バカじゃん
何でwinformにcolorあるのにwpfでも作ったの?
再利用できてないじゃん
役に立たないじゃん
名前空間分けてそれで?
新しいもの作ったら元気一杯に捨ててるじゃん
ってとこに集約する

429:デフォルトの名無しさん
18/05/10 07:37:29.76 CKE2Ak/10.net
Color構造体とColorsクラスの事かな?

430:デフォルトの名無しさん
18/05/10 07:48:33.05 M9xdMPFN0.net
こいついつものアレだろ
触るな

431:デフォルトの名無しさん
18/05/10 08:08:52.60 1WB9uyi8M.net
>>422
反論できないならcolorクラスはもう作らせないぞ

432:デフォルトの名無しさん
18/05/10 09:17:58.68 l4uhHAvqa.net
全く話題になってないけどC#7.3も正式リリースされたぞ
念願の where T : Enum

433:デフォルトの名無しさん
18/05/10 09:36:24.91 EV77m/Hv0.net
>>423
> それと自作のcolorとこれまた別の奴の作ったcolor
> バカじゃん
> 何でwinformにcolorあるのにwpfでも作ったの?
え、なんで自分でcolor作ったの?

434:デフォルトの名無しさん
18/05/10 09:51:09.75 2wmh3oy2M.net
>>425
触るなって言ってんだろテメーマッチポンプか?
それとも別種の頭かわいそうな生ゴミか?

435:デフォルトの名無しさん
18/05/10 10:30:56.59 Yjx9MaDJp.net
つか、同じ名前で違う用途に割り当てる方が難儀だろ普通は名前変える。

436:デフォルトの名無しさん
18/05/10 12:33:21.16 kan/O/6Ed.net
>>427
だから世の中にどんだけクラスが存在すると思ってんの?

437:デフォルトの名無しさん
18/05/10 12:51:46.30 YLAKf1v1a.net
普通の初心者だったらSystem.IOのPathとWPFのPathが競合することが気になると思う

438:デフォルトの名無しさん
18/05/10 12:53:40.23 YLAKf1v1a.net
イギリスだったらつづりはcolour

439:デフォルトの名無しさん
18/05/10 19:43:14.60 M5rAF93d0.net
コロワァ

440:デフォルトの名無しさん
18/05/10 20:53:17.15 Yjx9MaDJp.net
>>428
自前クラスを組み込むクラスの組み合わせだけ考えりゃよかんべよ。

441:デフォルトの名無しさん
18/05/10 22:10:03.44 R4f/WJPq0.net
>>432
日本語で

442:デフォルトの名無しさん
18/05/11 00:30:31.25 F4aYSsq30.net
>>425
WPF「WinFormなんて爺さんのクラスなんて使えるかよ」

443:デフォルトの名無しさん
18/05/11 00:58:40.04 TW3IXpUfa.net
>>434
WinFormsが定年間近の爺さんだとしたらWPFは35歳無職童貞だな

444:デフォルトの名無しさん
18/05/11 13:52:55.21 sq5ITweXM.net
drawimageって自分でクリッピングしないとはみ出たら遅い?

445:デフォルトの名無しさん
18/05/11 14:13:09.38 NZxgVNkdp.net
formとwpfで、似て非なる部品ってどうにかならんの?
ネットで使い方調べる時、紛らわしいんだよな。

446:デフォルトの名無しさん
18/05/11 14:36:21.57 SfoScckv0.net
>>434
UWP「そろそろWPFさんにはご退場願おうか」

447:デフォルトの名無しさん
18/05/11 15:23:07.83 oUtXC/5od.net
>>438
メーカー「そろそろUWP用のコントロールつくっか?」

448:デフォルトの名無しさん
18/05/11 16:30:16.71 DPTi05MZM.net
親フォームからnewした子フォームは親とは非同期ですか?それとも同期処理となりますか?

449:デフォルトの名無しさん
18/05/11 16:50:42.60 Kz4/xaqBM.net
正しい言葉の使い方では非同期だけど、たぶん君が言ってるのは同期か非同期かではなくて同じスレッドかどうかだろう
それでいえば同じスレッド

450:デフォルトの名無しさん
18/05/11 17:48:49.51 n/c4W3DX0.net
つか、聞きたいのは、モーダルかモードレスかじゃね?

451:デフォルトの名無しさん
18/05/11 17:56:35.27 +Mrz0iyE0.net
ここで質問するときは自分が何をやりたいかを書いてもらった方がいいな
>>440
>>442の意味なら
方法 : Windows フォームをモーダルおよびモードレスで表示する
URLリンク(msdn.microsoft.com)(v=vs.110).aspx

452:デフォルトの名無しさん
18/05/11 19:52:53.18 7YPYpwobM.net
>>441
同じスレッドなら同期ではないのですか?
>>442
モーダルとはなんぞやレベルなので出直してきます
>>443
参考サイトありがとうございます

453:デフォルトの名無しさん
18/05/11 20:39:18.87 A7KRRugp0.net
ポータブルアプリの設定ファイルを扱うなら何がスタンダードですか?
XmlSerializer使ってxmlファイルにするか
Win32API経由でレガシーなiniファイルにするか。
やっぱ前者ですかね?

454:デフォルトの名無しさん
18/05/11 20:42:59.37 H5+wAeJBM.net
>>445
今時はJSON

455:デフォルトの名無しさん
18/05/11 21:30:53.62 wYle0Ioy0.net
>>445
セオリー通りappsettings.jsonやろ普通

456:デフォルトの名無しさん
18/05/11 21:55:14.15 F4aYSsq30.net
>>445
人の手で編集するかどうか
するならcsvファイルかxlsがええで
Excel使えるから
xmlもiniもjsonも編集ツールが無くてゴミ

457:デフォルトの名無しさん
18/05/11 21:57:27.82 wYle0Ioy0.net
>>448
キチガイ

458:デフォルトの名無しさん
18/05/11 22:04:41.45 F4aYSsq30.net
>>449
ほう
じゃあ、編集ツール出して見ろよ
そんな誰も編集できないフォーマットで設定とか言ってたって全く説�


459:セ力ないよ はい、論破



460:デフォルトの名無しさん
18/05/11 22:08:27.43 KxM4SNOx0.net
yamlとかtomlもまぁアリだな
jsonはtailing commaがちょっと煩い

461:デフォルトの名無しさん
18/05/11 22:08:43.32 wYle0Ioy0.net
ごめんキチガイに触ってしまった

462:デフォルトの名無しさん
18/05/11 22:09:55.64 o64e7/8Ad.net
>>451
C#ならappsettings.jsonで良くね?IOptionとの相性いいし

463:デフォルトの名無しさん
18/05/11 22:11:29.14 KxM4SNOx0.net
>>453
JSONが標準だとは思うし, まぁJSONにする
が, リスト末尾のカンマは許して欲しい

464:444
18/05/11 23:25:00.79 A7KRRugp0.net
なるほど、今時はJSONですか。
ただ、少し調べて見たところweb系の構成ファイルとして使う?みたいで自分の思ってるのとは違うのかなと感じました。
後出しになってしまって申し訳ないんですが、自分のイメージしてるのはFormアプリで例えば「最前面に表示する/しない」だとか「昇順/降順で並べる」みたいな、チェックボックスやラジオボタンの選択内容を起動時に読み込み、終了時に書き込みする想定です。
appsettings.jsonは読み込みしかなさそうだったのですが、書き込みってありますか?自分でjson形式にコンバートしてベタに書き込みしろってことですかね?

465:デフォルトの名無しさん
18/05/11 23:28:06.24 gh5GwZAv0.net
>>455
その用途ならアプリ外からエディタで編集させることなんて無いだろうから、正直なんでも良いと思う

466:デフォルトの名無しさん
18/05/11 23:31:25.65 fVy+Ps+50.net
jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ?

467:デフォルトの名無しさん
18/05/11 23:31:53.13 fVy+Ps+50.net
jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ?

468:デフォルトの名無しさん
18/05/11 23:33:44.23 KxM4SNOx0.net
>>455
JSONで読んだり書いたりするなんてどうとでも出来る
まぁXML以外ならなんでもいいと思うけどね

469:デフォルトの名無しさん
18/05/12 00:31:10.54 wbfjgNFba.net
前も書いたけど騙されたらダメwww
.NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり
あえて外様を使うとか頭の悪い中学生じみてる

470:デフォルトの名無しさん
18/05/12 03:56:46.76 ek+Myn8j0.net
var exts = {".jpeg", ".jpg", ".png", ".gif"};
var f = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories)
.Where(c => exts.All(extension => !c.EndsWith(extension)))
.ToArray();
extsの拡張子以外のファイルを抽出したいんだけど
大文字小文字区別せずに拡張子だけを比較する方法ないですか?
もっと効率いい方法ある気が・・・

471:デフォルトの名無しさん
18/05/12 04:18:13.81 ek+Myn8j0.net
!c.ToLower().EndsWith(extension)
で対応します

472:デフォルトの名無しさん
18/05/12 05:18:29.02 V3QYZkJA0.net
>.NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり
>あえて外様を使うとか頭の悪い中学生じみてる
いくつもあるの? どんなのがあるのか三つくらい教えてください。
ビルドするごとに消えるのでは使いにくいというか何度もビルドするのは普通だとおもうので
それでは使い物にならないので、ビルドしても消えないものがいい。

473:デフォルトの名無しさん
18/05/12 05:48:54.31 d7ZTDjaEu
過去スレで以下でアルファチャンネルつき32bitビットマップで保存できると書いてたけど
どのソフトで開いても黒くて透過してません。どうしたらいいでしょうか?開いたソフトが対応してないだけ??
Bitmap bmp = new Bitmap( 32, 32 );
using( var g = Graphics.FromImage( bmp ) )
{
 using( var sb = new SolidBrush( Color.FromArgb( 128, Color.Red ) ) )
 {
  g.FillRectangle( sb, new Rectangle( 0, 0, 16, 16 ) );
 }
}
bmp.Save( @"C:\Users\ハゲ\Desktop\test.bmp", ImageFormat.Bmp );

474:デフォルトの名無しさん
18/05/12 06:12:38.61 Qc7Beiuka.net
>>460
今時その認識は正直ヤバい
今の.NETの標準のシリアライザはJSON.NET
Core系では完全に標準シリアライザとしてフレームワークで使われてるし、MSDNにもJSONならJSON.NET使えと書いてる

475:デフォルトの名無しさん
18/05/12 06:16:13.33 9vavBtpKM.net
>>463
URLリンク(msdn.microsoft.com)(v=vs.120).aspx

476:デフォルトの名無しさん
18/05/12 06:20:19.72 9vavBtpKM.net
>>465
DataContractJsonSerializer でなくJson.net のソースは?

477:デフォルトの名無しさん
18/05/12 06:29:12.76 hwxaPbIq0.net
設定ファイルは、csv, yaml, json。
Java系のant, maven などは、XML。
Mac系は、property file
chef, vagrant では、Ruby。
Gradle では、Groovy
Haxe のserializer は、数個のプログラミング言語に渡って機能するし、
json, xml みたいに型情報が無くなったりしない
もちろん、Ruby, Groovy も、
プログラミング言語自体が設定ファイルだから、そのまま使える

478:デフォルトの名無しさん
18/05/12 07:13:07.72 Qc7Beiuka.net
>>467
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
なんか勘違いしてるみたいだけど、DataContract系は通信に使うもので
ファイルの読み書きに使うことを想定されているもんじゃないよ

479:デフォルトの名無しさん
18/05/12 07:21:14.10 UP+Hygq+M.net
DataContractSerializerは絶対にファイルに書いちゃダメってわけではないけど、データのスキーマがあらかじめ決まってる場合には使えない
あくまで書く側と読む側とで解釈が共通でありさえすれればよくて、その中身を人間は気にしないよ、ってときに使う

480:444
18/05/12 07:26:10.70 4i84e4IV0.net
調べが足りずすみません。
NewtonsoftのJSON.NETというのを使えばいいみたいですね。
.NET標準のXmlSerializerと同じような感じの使い方ですね。
ちなみに、XMLはやめた方が良いと意見ありましたが、
どういった理由からでしょうか?

481:デフォルトの名無しさん
18/05/12 07:35:16.58 Qc7Beiuka.net
XMLは全世界共通の汎用データ交換フォーマットであることが採用する唯一の理由であり、
JSONが主流になった時点で既に存在意義が失われているから

482:デフォルトの名無しさん
18/05/12 07:45:11.57 hwxaPbIq0.net
XML は、JSON よりも可読性が高いから、人が見る・書く設定ファイル。
例えば、アプリのフォームのデザインの設定ファイルに使う
人が見ない、単にコンピューター間のデータの受け渡しには、JSON
XMLを使うと、ややこしい

483:デフォルトの名無しさん
18/05/12 07:52:19.68 yKmgHprg0.net
>>473
高くねーよ
タグの対応が外れたら素人に発見できんのか?
プログラマならともかくパンピーじゃ無理

484:デフォルトの名無しさん
18/05/12 08:08:53.44 V3QYZkJA0.net
XMLは可読性がわるい。つまり直観が効かない。機械向きで非人間的だから設定ファイルには不向き。
たしかに寄ってたかってよく考えてあるのは解る。それには感心するが、寄ってたかって考えすぎると
たいていは失敗する。その代表的な例としてはXMLもっとも良い例のひとつだろう。つまり駄作だなとおもう。

485:デフォルトの名無しさん
18/05/12 08:28:20.91 YrlOJuyZ0.net
jsonはいい加減コメントの使用を本家が認めるべきだわな

486:デフォルトの名無しさん
18/05/12 08:45:40.67 tydT0Seq0.net
>>473
XMLが読みやすいってwサヴァン症候群なんおまえ?w

487:デフォルトの名無しさん
18/05/12 08:49:00.82 KCIDKf2Q0.net
コメントがあると独自スキーマを作り始


488:めるからわざと外したと言っているけど病的だわ これだから実務屋でない奴は



489:デフォルトの名無しさん
18/05/12 08:50:11.44 KCIDKf2Q0.net
そいつC#スレとPythonスレでよく見かけるが
サヴァンかどうかはともかく発達障害は煩ってるぞ

490:デフォルトの名無しさん
18/05/12 08:52:02.93 Y49XSW9o0.net
>>461
EndsWithの第二引数は使えない?

491:デフォルトの名無しさん
18/05/12 08:57:27.63 vhGL8v7ea.net
>>478
悪名高いJSONライセンス(Good, not Evil)も作ってるからなぁ

492:デフォルトの名無しさん
18/05/12 09:22:58.61 9vavBtpKM.net
>>469
THX

493:464
18/05/12 15:24:16.94 Mhan8b8Mj
だれか…

494:464
18/05/12 16:52:37.99 Mhan8b8Mj
すいませんでしたぁあ~~!
自分の作った別のC++のプログラムで読み込んだら普通に透過してましたぁ!!
やっぱフォトショやその他のソフトがアルファチャンネル無視してただけでしたあ~

495:デフォルトの名無しさん
18/05/12 09:36:45.26 15xgRckc0.net
>>455
その用途ならこれで十分かと
URLリンク(docs.microsoft.com)

496:デフォルトの名無しさん
18/05/12 09:37:39.20 btyZbm2S0.net
XMLのタグの対応って言うけど
JSONも例えば}が数階層のどっかで一つ消えたら人間に対応できなくなるよね

497:デフォルトの名無しさん
18/05/12 09:45:59.03 iloBjJ0sM.net
データの規模が大きくなったらXMLのほうが断然有利
JSONとXHTMLを等価変換するスクリプトを書いてJSONだけでウェブサイトを構築する実験を社内でやった事があるがJSONのスコアは酷いものだった
JSONはネストが深くなると使い物にならん

498:デフォルトの名無しさん
18/05/12 09:49:55.91 15xgRckc0.net
>>487
どんな点で有利なのかすら書けないクズ

499:デフォルトの名無しさん
18/05/12 09:51:04.77 56F0arFd0.net
何のデータも示さずjsonは使い物にならないと言われてもねー

500:デフォルトの名無しさん
18/05/12 09:56:29.74 iloBjJ0sM.net
データは自社の資産だから常識的に勝手には公表できない
実験方法は簡単にだけど示したのだからデータが欲しければ実験して検証すればいい
逆にJSONが優れていると言うなら
根拠無しではなくデータなり検証方法を示してほしいね

501:デフォルトの名無しさん
18/05/12 09:58:57.02 yKmgHprg0.net
>>490
だったら発言すんなよ
消えろクズ

502:デフォルトの名無しさん
18/05/12 10:00:05.00 vhGL8v7ea.net
URLリンク(www.infoq.com)
同じくらいのパフォーマンスというならまぁ納得出来る
クソみたいなパーサ使わにゃネスト深さでパフォーマンスが悪化するわけねーだろ

503:デフォルトの名無しさん
18/05/12 10:00:18.08 56F0arFd0.net
>>490
再現可能なサンプルぐらい作れ
今のままだと説得力ゼロで誰も納得しねーよ

504:デフォルトの名無しさん
18/05/12 10:00:46.67 My8LWy2ka.net
XHTMLって死んだ技術だと思うが
10年ぐらい前の世界かな?
xmlが見やすいって人は初めて見た

505:デフォルトの名無しさん
18/05/12 10:08:59.85 iloBjJ0sM.net
>>493
5chに書き込むためだけに実験費用払いたくねえよ
こういう実験はサンプルとして人を雇わないとできないんだよ
思考停止ノータイムでボタン押さずに常識的に少し考えてからレスしてくれ頼むから

506:デフォルトの名無しさん
18/05/12 10:10:42.69 vhGL8v7ea.net
再現するJSONとXMLを一個ずつ用意すれば終わるのに自分以外の人間が必要か?
プログラ�


507:~ングやったことありますか?



508:デフォルトの名無しさん
18/05/12 10:19:11.86 iloBjJ0sM.net
>>496
あんたは論外
パフォーマンスの話なんて誰もしてない
今はみんな生産性、可読性、保守性の話をしてるんだよ
それを測るためにJSONとXHTMLを等価変換するツールを作った
グループAの人達にはJSONでタグ打ちさせてそのJSONをツールでXHTMLに変換した
グループBの人達にはXHTMLで直接タグ打ちさせた
完成するまでの時間や完成したXHTMLのバグ密度など様々なメトリクスを計測したら直接タグ打ちしたグループBのほうがスコアが高かった
グループAとグループBのスコア差はネスト数が深いほど大きくなった
そういう話な
パフォーマンス比較なんてくだらん話は他所でやってくれ

509:デフォルトの名無しさん
18/05/12 10:21:37.68 My8LWy2ka.net
>>497
人間のやることじゃないことを人間にさせて比較する意味がよくわからない

510:デフォルトの名無しさん
18/05/12 10:22:19.67 7mnYG5Gia.net
>>497
無駄な変数が多すぎて何を比較したいのか分からなくなってるな
仕事できなそう

511:デフォルトの名無しさん
18/05/12 10:22:47.54 vhGL8v7ea.net
>>497
人間がやる意味が分からん

512:デフォルトの名無しさん
18/05/12 10:25:26.75 FqtFYlf30.net
流石にこれは擁護できんわw

513:デフォルトの名無しさん
18/05/12 10:25:55.10 My8LWy2ka.net
テキストデータをバイナリエディタで書かせるような意味不明な実験を
やって悦にいる会社に勤めてかわいそうとしか思えない
上が暗愚だと下が苦労する

514:デフォルトの名無しさん
18/05/12 10:26:11.54 iloBjJ0sM.net
馬鹿しかいないのか
人間がやる意味がないとか言ってる連中は実験の趣旨を全く理解してない
だから思考停止してノータイムでボタン押すのやめろって言ってるんだよ
ほんと馬鹿の相手するの疲れるな

515:デフォルトの名無しさん
18/05/12 10:28:00.46 vhGL8v7ea.net
こいつはなかなか面白いな, 素でこのコミュ力ならなかなかの逸材だし作っているならよく理解している

516:デフォルトの名無しさん
18/05/12 10:30:21.85 My8LWy2ka.net
>>493
上が暗愚たと下も思考停止で伝染するんだな
バイナリデータでutf8の入力しづらさも検証したか?

517:デフォルトの名無しさん
18/05/12 10:31:58.09 My8LWy2ka.net
いや面白いな
どこかの技術系のサイトでネタにしてくれないかな

518:デフォルトの名無しさん
18/05/12 10:32:26.46 yKmgHprg0.net
結局、手動で設定するファイルであるなら
jsonもxmlもゴミだろ?
なんの話してんの?

519:デフォルトの名無しさん
18/05/12 10:36:00.72 My8LWy2ka.net
>>507
そうでもないよ
VScodeでjsonの各種設定ファイルを手で変えたりするけど
あれがXMLだととんでもないことになる

520:デフォルトの名無しさん
18/05/12 10:37:02.56 vhGL8v7ea.net
深くて3階層程度でそんなに行数多くないならJSONは苦痛は少ないかな

521:デフォルトの名無しさん
18/05/12 10:37:30.03 yKmgHprg0.net
>>508
そういう無意味な比較意味ないじゃん
xlsで設定できるアプリに使い勝手で勝てるの?

522:デフォルトの名無しさん
18/05/12 10:38:25.47 15xgRckc0.net
>>510
それが無意味に思えるなんて幸せなやつだな

523:デフォルトの名無しさん
18/05/12 10:39:01.19 yKmgHprg0.net
>>511
だってjsonもxmlもいらねーもんよ

524:デフォルトの名無しさん
18/05/12 10:39:07.44 PQYWGVmCd.net
>>510
xlsとかwwwバージョン管理システム使ったことすらなさそうだな

525:デフォルトの名無しさん
18/05/12 10:39:44.13 vhGL8v7ea.net
残念だけどXMLはクソオブクソだけどXLSとかCSVはそれをはるかに上回るクソなの

526:デフォルトの名無しさん
18/05/12 10:39:58.36 yKmgHprg0.net
>>513
csvでもいいよ

527:デフォルトの名無しさん
18/05/12 10:40:08.84 15xgRckc0.net
>>512
C#やめた方がいいよ

528:デフォルトの名無しさん
18/05/12 10:40:21.22 yKmgHprg0.net
>>514
理由は?

529:デフォルトの名無しさん
18/05/12 10:40:23.88 NuxM0Gnx0.net
せめてxlsxにしてくれ

530:デフォルトの名無しさん
18/05/12 10:41:06.38 PQYWGVmCd.net
>>515
反論する気すら起きんわ

531:デフォルトの名無しさん
18/05/12 10:41:21.27 yKmgHprg0.net
db(Sqlite)もあるぞ

532:デフォルトの名無しさん
18/05/12 10:41:32.86 wBO8DWf8M.net
>>497の実験は「XHTMLのデータはJSONで記述するには適さない」ということを示しているだけだな
そりゃXHTMLのスキーマはXMLで表現しやすいように設計されてるんだから、
JSONだと属性とコンテンツの区別がなかったりして記述しづらいのは当たり前だ
JSONにはJSONに適したスキーマ設計がある

533:デフォルトの名無しさん
18/05/12 10:41:52.87 15xgRckc0.net
やっぱGitすら使えなさそうだな

534:デフォルトの名無しさん
18/05/12 10:43:33.27 yKmgHprg0.net
>>522
gitでcsvの差分見れないの?

535:デフォルトの名無しさん
18/05/12 10:44:43.29 15xgRckc0.net
>>523
Gitでsqliteの差分見るのかい?

536:デフォルトの名無しさん
18/05/12 10:45:36.20 vhGL8v7ea.net
>>517
XLS: バイナリ, 標準化されてない(されてるかも知らんが概ねExcelないと読めん)
CSV: not well standarized
XLSX: zip圧縮されたXMLじゃん

537:デフォルトの名無しさん
18/05/12 10:45:58.87 yKmgHprg0.net
>>524
dbの比較は簡単
バージョン管理の機能にはないけど

538:デフォルトの名無しさん
18/05/12 10:46:25.99 iloBjJ0sM.net
>>508
VSCodeのセッティングはネストが浅くて比較的読みやすいし、VSCodeによるコード生成がうまく機能してるからね

539:デフォルトの名無しさん
18/05/12 10:47:06.15 15xgRckc0.net
>>526
もはや何を言っているのかわからん

540:デフォルトの名無しさん
18/05/12 10:47:34.43 yKmgHprg0.net
>>525
ビジネスでExcel入ってない環境とかあるの?

541:デフォルトの名無しさん
18/05/12 10:47:44.90 kT5GzpcRa.net
エクセルからマスターや設定をインポートするようになってるシステムは壊しそうで怖いわ
うっかりレイアウトがズレてて正しくデータが取れなくなるとかよくある
バージョン管理の問題にも関連するけど、再現性が乏しいんだよエクセルは

542:デフォルトの名無しさん
18/05/12 10:47:54.11 WIOr5zBad.net
>>526
おれsqliteのバイナリをテキストエディタで書き換える能力ないのよ

543:デフォルトの名無しさん
18/05/12 10:48:23.30 yKmgHprg0.net
>>528
DB同士のデータの比較したことねーの?

544:デフォルトの名無しさん
18/05/12 10:48:28.96 My8LWy2ka.net
>>521
そこの会社の内部の抗争があるんだと思う
いまどきxhtmlを使ってる派閥がいて
そいつらが不利になったので意味不明なテストでxhtmlすげーをやって
何も考えないやつがそれに賛同したと
エジソンが高圧送電は危険だと言って動物を殺す実験をしたようなもの

545:デフォルトの名無しさん
18/05/12 10:48:32.15 15xgRckc0.net
>>529
いくらでもあるよ

546:デフォルトの名無しさん
18/05/12 10:48:32.71 vhGL8v7ea.net
>>529
開発は仮想のLinux上とか普通にあるから

547:デフォルトの名無しさん
18/05/12 10:49:49.02 15xgRckc0.net
>>532
json vs xmlの比較とは全く異なる次元のものを持ち込んで比較しようとするクズ

548:デフォルトの名無しさん
18/05/12 10:50:39.51 yKmgHprg0.net
>>535
openoffice入れろよ

549:デフォルトの名無しさん
18/05/12 10:51:17.57 15xgRckc0.net
>>537
こいつdotnet newすら打ったことなさそうだな

550:デフォルトの名無しさん
18/05/12 10:51:39.21 yKmgHprg0.net
>>536
そっちは完全に編集するツールがないじゃん
あってもゴミみたいなのしか

551:デフォルトの名無しさん
18/05/12 10:51:42.38 vhGL8v7ea.net
>>537
開発用システムでXLS読むために入れるとか本末転倒

552:デフォルトの名無しさん
18/05/12 10:52:47.54 yKmgHprg0.net
>>540
お客さんに何で編集したいですか?
って聞いてみろよ
Excelでできるって言ったら大喜びするぜ

553:デフォルトの名無しさん
18/05/12 10:53:32.62 15xgRckc0.net
>>539
専用ツールがないと編集できないものなんてイラネ

554:デフォルトの名無しさん
18/05/12 10:53:45.26 iloBjJ0sM.net
>>510
Excelの場合はそもそもツリーデータ構造を表現するためのスタンダードなフォーマットが無いので比較する以前の段階
まずはツリー形式のデータ構造を表現するためのフォーマットのデファクトスタンダードを業界全体で決めてくれ
比較はその後に回していいんじゃないかな

555:デフォルトの名無しさん
18/05/12 10:54:09.51 15xgRckc0.net
>>541
Linux使ったことないやろ

556:デフォルトの名無しさん
18/05/12 10:55:07.24 NuxM0Gnx0.net
vscodeのsettings.jsonとか見せたら発狂しそう

557:デフォルトの名無しさん
18/05/12 10:55:50.61 vhGL8v7ea.net
>>541
客は会社のシステム部門なんで別にExcel喜ばれないですむしろ殴られそうです

558:デフォルトの名無しさん
18/05/12 11:00:04.65 vhGL8v7ea.net
あとXLSXはともかくXLSをC#から弄ったことないんだけどExcelなしで読めるの?
COM使って読むとか言わないよね?

559:デフォルトの名無しさん
18/05/12 11:08:10.26 iloBjJ0sM.net
>>521
やっとちゃんと読んでレスしてる人が来た
確かにもともとXMLをベースに考案されたデータ構造なのでXMLに有利と言えるかもしれない
しかしそれを認めると議論の発端である「jsonはxmlより優れている」という命題を「対象次第ではxmlのほうが有利である」という命題で最初から否定することになってしまう
本当に「jsonはxmlより優れている」なら対象がXHTMLだろうとなんであろうともjsonのスコアが高くなっていなければおかしい

560:デフォルトの名無しさん
18/05/12 11:23:55.86 P5sx5scC0.net
なんでもかんでもExcelでやりたいVBAer()さんはVBAスレにおかえりください
事務員さんの常識はプログラマには通用しません

561:デフォルトの名無しさん
18/05/12 11:30:46.95 15xgRckc0.net
>>547
ExcelCreator使って、Excelのインストールされてない環境で読み書きしてた
昔々ね

562:デフォルトの名無しさん
18/05/12 11:33:52.89 5EDA9IkjM.net
>>467
横から失礼。マイクロソフトの人もそう言ってるよ

563:デフォルトの名無しさん
18/05/12 11:34:13.72 FqtFYlf30.net
>>547
OLEDB使えばExcelインストール無しでも読めるで

564:デフォルトの名無しさん
18/05/12 11:34:57.85 5EDA9IkjM.net
>>471
一言でいえば古い。

565:デフォルトの名無しさん
18/05/12 11:36:20.02 FqtFYlf30.net
この手の議論はUI入力とデータ保持を同一のものとして考えちゃうから平行線だわな

566:デフォルトの名無しさん
18/05/12 11:40:59.55 My8LWy2ka.net
>>548
キミが変なこと言ってるだけ
業務での作業性、操作性においてスマホよりPCがすぐれてるという人に対して
PCではタッチ入力できないとかそんな難癖つけてるだけ

567:デフォルトの名無しさん
18/05/12 12:09:17.30 iloBjJ0sM.net
>>555
残念だけど君には話が通じないね

568:デフォルトの名無しさん
18/05/12 12:44:54.52 ek+Myn8j0.net
>>480
EndsWithに第二引数とかあったのか
いけるわ!ありがとう

569:デフォルトの名無しさん
18/05/12 12:51:51.95 XqIGE8bt0.net
デザインパターンのブログ(ヤフーブログ)・・・・なかなか良い。
URLリンク(blogs.yahoo.co.jp)

570:デフォルトの名無しさん
18/05/12 13:25:14.58 UZR1Ryt2a.net
>>554
それ以前の話でしょw
設定データをユーザーが編集したいなんてかなり特殊な前提でありかつ質問者も
そんな要件を一言も上げてないのにアホかと、
.NET標準のシリアライザではなくあえて外様を使う理由はと聞いて、返って来た明確な答えは
結局「そっちの方が目新しいから」だけ。
中学生じみてるよと言ってるそばからこれだ。
プログラマ板みたいな話になっちゃうけど、本当今じゃプログラマって知能指数が低い奴が
やる仕事になってることを実感するよ

571:デフォルトの名無しさん
18/05/12 13:26:52.97 My8LWy2ka.net
json,.netを使うのは早くて使いやすいからだと思う
使いやすいと書くとまた難癖つけられそうだけどw

572:デフォルトの名無しさん
18/05/12 14:59:39.27 d5Fp40ymM.net
>>560
どういう観点で見たときの使いやすいなのか説明が無いよね?

573:デフォルトの名無しさん
18/05/12 15:01:04.84 15xgRckc0.net
>>559
Microsoftの基本的なライブラリもJSON.netに依存してる
URLリンク(www.nuget.org)

574:デフォルトの名無しさん
18/05/12 15:05:00.44 AEXJFe1f0.net
自分が json を使うとしたら、
・周りが使ってるから
・xml と比較して見た目が好み
って程度の理由だなあ。
どっちが優れてるかの比較なんてそれ自体がズレてるような。

575:デフォルトの名無しさん
18/05/12 15:35:45.32 KCIDKf2Q0.net
暇そうだな
同じヒマでも俺は運動してたけど

576:デフォルトの名無しさん
18/05/12 15:49:43.76 F4kLnVK3p.net
シリアライ�


577:Y出来れば何でもいいよ。



578:デフォルトの名無しさん
18/05/12 16:47:10.12 ek+Myn8j0.net
結局Windowsのフォームアプリの設定ファイルは何が適してるんだよ
jsonでもxmlでも大差ないよ好きな方どうぞって結論でいいの?

579:デフォルトの名無しさん
18/05/12 16:54:33.55 gqffA4Jja.net
>>566
そもそも今時フォームアプリなんか採用する時点で全力で時代に背を向けてるんだからどうでもいいよ

580:デフォルトの名無しさん
18/05/12 17:04:25.00 I6pHI0GBa.net
>>566
Setting使え
終わり

581:デフォルトの名無しさん
18/05/12 17:37:38.32 AiYRYzWlM.net
Settings使え+1

582:デフォルトの名無しさん
18/05/12 17:53:54.95 5EDA9IkjM.net
>>566
configファイルにjson形式で書き込む

583:デフォルトの名無しさん
18/05/12 17:58:28.95 UZR1Ryt2a.net
>>568-569
質問者は「ポータブルアプリの設定ファイル」と言ってる。
ポータブルアプリがUSBメモリに入れて持ち歩くような物のことを言ってるなら、
Settingsは明らかに不適切
あと、個人的にあんまりアプリケーション設定使ったことないんで勘違いしてるかもしれんが、
これって結構制限も多いしいろいろ面倒だよね

584:444
18/05/12 21:13:35.08 4i84e4IV0.net
質問者ですが、こんなに荒れてしまうとは、、、申し訳ない。
おっしゃるように通常のWindowsフォームアプリならSettingsがデザイナで設定できるし楽なんですが、
ファイルの格納先がローカル(Roamingだったかな?)になるのでUSBメモリなどに持ち運んで使うポータブルアプリとしては採用できないというところでの質問でした。
特に設定ファイルの可読性を求めないようであれば、
形式としては古いが追加ライブラリ不要のXMLか、
スタンダードな形式だが別途追加ライブラリ必要なJSONか、
好きな方を選べって感じですかね。。

585:デフォルトの名無しさん
18/05/12 21:31:41.93 9vavBtpKM.net
ユーザー定義リソースにしてexeに直接書き込むって方法もあるよ

586:デフォルトの名無しさん
18/05/12 21:32:18.31 FqtFYlf30.net
>>572
USBで運ぶポータブルアプリ程度ならApplicationSettings保存でもいいんじゃないの?

587:デフォルトの名無しさん
18/05/12 21:33:56.53 yKmgHprg0.net
exeの直下でいいよな

588:デフォルトの名無しさん
18/05/12 21:48:32.28 euW2BAe4a.net
アプリケーションスコープにするとアプリから書き込みできないよ

589:デフォルトの名無しさん
18/05/12 22:03:47.45 fKL1gupm0.net
>>575
でもアクセスの速度違うときあるからね。

590:デフォルトの名無しさん
18/05/13 14:47:14.23 ySggkKZM0.net
すいません。
初心者なのでこちらに移動してきました。
MVC的な設計で
初期設定値を入力するフォーム

初期設定値を格納するクラス
というのを作りたいのですが、
A.
クラス側に各変数のプロパティを作成
フォームからプロパティを介してクラスの変数に値を代入
B.
クラス側にフォームの初期値を取りに行くメソッドを作成
クラスからメソッドを実行してフォームに値を取りに行く
のどちらが良いのでしょう?
自分ではAの方がよさそうな気がするのですが、一般的な設計としてこうするというのがあったら教えてください。

591:デフォルトの名無しさん
18/05/13 16:02:40.98 GQV4/ETF0.net
ケツの穴から手をつっこんで奥歯をがたがたみたいなBよりA

592:デフォルトの名無しさん
18/05/13 16:26:25.12 N5R39axQ0.net
>>578
どっちでも動きゃいいだろ
さっさと完成させろよ

593:デフォルトの名無しさん
18/05/13 16:39:15.74 i7PAGBqeM.net
>>578
// form
void btnSaveInitialSettings_Click(object sender, EventArgs e) {
try { this.SaveInitialSettings(); }
catch(...) { ... }
}
void SaveInitialSettings() {
var initialSettings = this.GetInitialSettings();
var reaction =
this.initialSettingsController.SaveInitialSettings(initialSettings);
reaction?.Invoke(this);
}
// controller
Action<IInitialSettingsView> SaveInitialSettings(InitialSettings initialSettings) {
this.initialSettingsService


594:.SaveInitialSettings(initialSettings); return view => view.Refresh(); }



595:デフォルトの名無しさん
18/05/13 18:54:27.05 kDeIpxe/p.net
初心者は出来上がってから検討すりゃいいんだよ。
つうか、プロ目指してるなら、先ずは完成させる癖を付けないとな。
万年アマチュアでいいのなら些末な問題で盛り上がればいいさ。

596:デフォルトの名無しさん
18/05/13 20:18:25.58 QhZTiQlx0.net
まず終わらせろ、Facebookのにいちゃんも言ってたべな。

597:デフォルトの名無しさん
18/05/13 20:30:10.29 i7PAGBqeM.net
Facebookにいちゃんが誰かわからんがそいつが言うまず終わらせろ、とお前が考えるまず終わらせろは別物だと思うぞ
ユニットテストとリファクタリング込みでまず終わらせろ、って言ってるならマトモだけど、将来のことなにも考えずまず終わらせろって言うならただの害悪

598:デフォルトの名無しさん
18/05/13 20:32:15.38 23x2pXKw0.net
>>584
リファクタリングなんか完成した後にバージョンアップする機会があったらやればいいんだよ。

599:デフォルトの名無しさん
18/05/13 20:35:20.07 kDeIpxe/p.net
将来が有るかどうかなんて、売れてから考えろw
タイムイズマネーだ。無駄なリソース費やしてる暇が会ったら次の案件片付けろ。

600:デフォルトの名無しさん
18/05/13 20:36:03.21 N5R39axQ0.net
>>585
そうだよね
エッチな絵が一枚も表示されないのにリピーターがいることを想定してる
なんてピンボケもいいとこだよね
割とマジで

601:デフォルトの名無しさん
18/05/13 20:37:25.10 +qfB7sI70.net
仕様通りの動きだけど汚いコードと
仕様通りの動きじゃないけど綺麗なコード
を同じ時間で仕上げたとして、どっちが優れているかと言えば前者だよな

602:デフォルトの名無しさん
18/05/13 20:58:57.32 9JUaags60.net
>>588
そりゃ仕様満たしていないなら比較以前の問題だわな
仕様満たして完成までの期間で比較とかならともかく

603:デフォルトの名無しさん
18/05/13 21:04:34.41 kDeIpxe/p.net
まあ、熟練者になれば、素早く仕様通りのコードを綺麗に仕上げて来るからな。
初心者は先ず動くコード、次に仕様通り、最後に綺麗なコードでいいよ。
時間掛かるのはこの際問題にしないw

604:デフォルトの名無しさん
18/05/13 21:04:59.21 N5R39axQ0.net
リピーターが多い汚いコードと
リピーターが少ない綺麗なコード
後者はゴミだよね

605:デフォルトの名無しさん
18/05/13 21:14:50.20 i7PAGBqeM.net
世の中の多くのバカが勘違いしてるんだけど
綺麗なコード==間違えやすい製造に時間がかかるコード
じゃないんだよね
綺麗なコードはバグが少ないし製造も早い
汚くても動くコードを早く書け!なんて言ってるやつは根本的に何かがズレてる
そんな方針でコーディングしたら汚くて動かないコードを時間をかけて作る羽目になる

606:デフォルトの名無しさん
18/05/13 21:19:44.86 kDeIpxe/p.net
洗練された華麗なコードとインデント揃っただけの綺麗なコードを混同してるばか発見

607:デフォルトの名無しさん
18/05/13 21:22:07.78 asXlnx2Ka.net
>>578
UI(Form)がモデル(何か仕事をするクラス)の参照を持つのは問題ないが、
逆は良くない。理由は、
(1) 役割分担があいまいになる
厨房の人間が1分おきにウェイターに注文を確認するのは適切な役割分担と言えるか?
(2) つぶしがきかない
Formの参照を握ってFormのメンバーを操作するクラスは、UIをWPFやUWPに
変更しても使いまわしできるか?

608:デフォルトの名無しさん
18/05/13 21:59:31.92 ySggkKZM0.net
>>581
一読で理解できる知識がないのですが、勉強してみます。
ありがとうございます。

609:デフォルトの名無しさん
18/05/13 22:02:31.19 ySggkKZM0.net
>>594
UIがデータ格納用クラスのインスタンスを生成
UIがプロパティを介してデータ格納用クラスの変数に代入
UIがコントローラにデータ格納用クラスのインスタンスを渡す
みたいな感じでよろしいでしょうか?

610:デフォルトの名無しさん
18/05/13 22:27:53.20 asXlnx2Ka.net
>>596
>UIがデータ格納用クラスのインスタンスを生成
誰がモデルのインスタンスを生成するかはケースバイケースだしどうでもよろしい
>UIがプロパティを介してデータ格納用クラスの変数に代入
重箱の隅をつつくようだが、オブジェクトのプロパティやメソッドを操作する時に
「データ格納用クラスの変数に代入 」なんていう内部の実装を意識する必要はない。
必要はない、というか意識しなくても使えるように作るのがカプセル化。
>UIがコントローラにデータ格納用クラスのインスタンスを渡す
俺がMVCを理解してないだけの可能性もあるが、少なくともWindows Formでは
VとCを分けたりしないのが普通と思う。コントローラなんてイラネ

611:デフォルトの名無しさん
18/05/13 23:13:35.13 TUC5Idjma.net
話蒸し返して悪いんだが、xmlシリアライザーって今使ってるとやばいの?業務アプリの設定ファイルほぼこれで今までやってたんだが。。
とりあえず今やってる案件JSONで見直してみるか
一人で開発やってるとついついこういうのに遅れがちになるなぁ

612:デフォルトの名無しさん
18/05/13 23:15:02.41 F2hiJGIV0.net
>>598
どんな用途で?

613:デフォルトの名無しさん
18/05/13 23:22:29.79 KKJavIw30.net
csvとJSONなら圧倒的に後者のがメリットあるけど、
xmlとJSONなら規模がでかくない限りどっちでも良いや

614:デフォルトの名無しさん
18/05/13 23:33:10.62 R40HLbPBa.net
>>598
業務ドカタ系でJSONなんかほとんど無いから安心しろ
客サイドは情シスですらJSON何それとか平気で言いやがるしOSSのライブラリが必要なのもネック

615:デフォルトの名無しさん
18/05/13 23:37:31.23 OUJCfbgi0.net
>>600
Excelで編集できるできないって違いもあるのに
どこが「圧倒的」なの?
根拠もない主張を強く推すなよ
願望だろ?お前の

616:デフォルトの名無しさん
18/05/13 23:38:24.99 PSHb3apy0.net
PCのiTunesって曲の情報管理全部XMLだよな
どうにかならんのか
URLリンク(i.imgur.com)

617:デフォルトの名無しさん
18/05/13 23:40:15.36 u4TQvgwd0.net
Ant, Maven とか、Java系は、XML。
Android 画面の設定ファイルとか
Windows でも、XAML で画面設定する
プロジェクトの設定ファイルも
JSON を設定ファイルに使うのは、JavaScript を使ったもの。
例えば、Node.js を含んだ、VS Code
他には、プログラミング言語自体が設定ファイルになるもの。
Ruby, Groovy, Haxe

618:デフォルトの名無しさん
18/05/13 23:48:46.83 i7PAGBqeM.net
>>598
え?全然やばくないよ
むしろ安定した手堅い選択肢と言っていい
JSONを設定に使う製品はむしろ少数派

619:デフォルトの名無しさん
18/05/13 23:57:11.22 F2hiJGIV0.net
>>604
>JSON を設定ファイルに使うのは、JavaScript を使ったもの
最近のC#もそうですが

620:デフォルトの名無しさん
18/05/13 23:57:32.58 OUJCfbgi0.net
>>598
ヤバイってどういう状況?
殺されるの?

621:デフォルトの名無しさん
18/05/14 00:04:35.25 3eK20qHjM.net
>>606
project構成は不評で結局xmlに戻ったね
ASP.NETのappsettingsはボイラープレートがjsonになってるけどxmlやiniもサポートされてる

622:デフォルトの名無しさん
18/05/14 00:05:32.49 wCRTCiuQ0.net
素のJSONはコメントが使えないので設定ファイルには使い辛い。

623:デフォルトの名無しさん
18/05/14 00:17:32.79 gDWY5JTja.net
川俣さんのことを馬鹿にする人が2chには多いけど、この記事の趣旨は正しいと思う
URLリンク(www.atmarkit.co.jp)
特定の技術への信仰と「俺スゲー」っていう間抜けな自己陶酔が結びついてる奴ってよくいるし、
このスレにも時々そんなのが出るけど、そういう奴のいうことは真に受けない方がいいですw

624:デフォルトの名無しさん
18/05/14 00:18:47.47 Wjyh58JD0.net
>>608
まあ普通はjson使うがな

625:デフォルトの名無しさん
18/05/14 07:03:43.68 oC/RgBRx0.net
つか業務で使うなら余程のことがない限り枯れた技術の方が安定する

626:デフォルトの名無しさん
18/05/14 07:06:02.02 Wjyh58JD0.net
>>612
COBOLとか?

627:デフォルトの名無しさん
18/05/14 07:55:56.39 zbYXMED5M.net
COBOLは実際優れてるんだよなあ
低品質なPGでもほぼ完璧に見積工数通りに仕上がるし、バグもほとんど出ない
金持ちな客からきっちり工数見合いで金取れるならSIerにとってこれほど好都合な言語はない

628:デフォルトの名無しさん
18/05/14 08:01:56.16 wRU00x5/r.net
バグでないのはアカンやろw

629:デフォルトの名無しさん
18/05/14 08:12:24.86 I+nT90nna.net
それはバグが摘出できていないだけでは

630:デフォルトの名無しさん
18/05/14 08:30:53.44 6WkSgDmyr.net
工数が低減できるかどうかよりも見積が精確にできることの方が管理者にとっては重要ってわけだね

631:デフォルトの名無しさん
18/05/14 09:03:36.07 coszmN5L0.net
バグが出ないに総ツッコミでワロタ

632:デフォルトの名無しさん
18/05/14 09:45:10.45 tQHKR4rj0.net
大体この時間にABENDしますって
異常停止をルーチンワーク化して運用している所があったな

633:デフォルトの名無しさん
18/05/14 10:05:11.99 TQ68xzma0.net
現場運用だと稀によくある
開発側がそれを織り込んじゃダメだけど

634:デフォルトの名無しさん
18/05/14 19:19:28.87 M+KhV3wka.net
>>598だけど
蒸し返した話にレスくれてありがとう
自分の用途にはxmlでも問題なさそうでとりあえず安心した

635:デフォルトの名無しさん
18/05/14 20:12:46.13 CBd8Qc4H0.net
SVGやMathMLのような外部の名前区間が出てくるとか、Xamlのようにかっちりしたものを書きたい場合はXMLが有利
文字列や数値しか出てこないような簡単な構造ならJSONの方が便利なことも多い。
Trueなのかtrueなのかとか考えなくても良くて、エディタがサポートしてくれるし、エスケープの仕様とかがシンプルで、ファイルも小さい。逆に言うとその程度なのでわざわざ切り替えるほどでもないとは思う

636:デフォルトの名無しさん
18/05/14 20:37:51.15 5czuzhWO0.net
>>597
VCわけないんですか。
うーん・・・。
いろいろな設計方法があるということですね。
インスタンスの生成順として
A→B
A→C
とAからCにBのインスタンスを渡す方法は分かるのですが、
C→A
A→B
とインスタンスを生成した時、CにBのインスタンスを返すことって可能なのでしょうか?

637:デフォルトの名無しさん
18/05/14 20:54:23.97 g5WxNsfna.net
デリゲート

638:デフォルトの名無しさん
18/05/14 20:59:59.56 IVWzojCa0.net
【マンモグラフィー】おっぱい挟んで癌検査…必要?
スレリンク(bio板)
【ペットフード】告発したら3人組に棍棒で襲われた
スレリンク(hosp板)
【アマルガム】水銀を歯に? 厚労省『暴動が怖い』
スレリンク(doctor板)

639:デフォルトの名無しさん
18/05/14 21:00:16.16 qPzo5Sk00.net
>>623
「返す」ことにこだわりがあるのなら結構難しい
そこにこだわらず、単にCからbを扱えれば良いのならa.bでアクセス可能だろう

640:デフォルトの名無しさん
18/05/14 21:35:43.16 1pddwh+ma.net
>>623
何でわざわざ話を複雑にするの?
class C
{
  A a;
  B b;
  public C()
  {
    a = new A(this);
    b = new B(a);
  }
}
例えばこれじゃダメなの?

641:デフォルトの名無しさん
18/05/14 21:38:33.33 Ju2ea7rBa.net
DIコンテナとか諸々のイディオムを知らない初心者だからまぁしゃあない
MVCでもMVVMでもいいからチュートリアル的なものをひとつやっとくとだいぶ違うとは思う

642:デフォルトの名無しさん
18/05/14 21:40:59.32 orCVIDzn0.net
>>626
まず「返す」の意味が分からないんだよな
>>623
何のためにその実装が必要なのか、まずはそっちから
普通は複数の派生インスタンス扱いたいのならどこかでまとめて管理する方が楽
横に伸ばしていくんじゃなく中心から引っ張っていく形

643:デフォルトの名無しさん
18/05/14 23:18:38.41 coszmN5L0.net
馬鹿なこと考えないでジャンケンゲームでも作ってろって

644:デフォルトの名無しさん
18/05/14 23:19:52.93 6thsxJoDM.net
>>623
今時のマルチレイヤな設計ってのは、「汚い場所」をどこかに決めて、そこが依存関係の解決を一手に引き受けるようにするんだよ
で、他の部分は「汚い場所」に直接依存しないようにするの
>>627の例でいうと、Cを「汚い場所」とするならAがCを直接参照するのは良くなくて、
AからCのメソッドをコールバックしたいんだったらインターフェイスを介して呼ぶようにしたりする
汚い場所をどこにするかだけど、フォームアプリならフォームだったり、Webアプリならコントローラだったり
処理の起点となり、かつ、どのみち単体テストが困難な場所を選ぶのが一般的だ

645:デフォルトの名無しさん
18/05/14 23:24:11.06 LQsoSslkM.net
なんだか要領を得ないからわからないけど
Bを操作するメソッドをAに用意してCがA経由でBを操作するのはだめなのか?

646:デフォルトの名無しさん
18/05/14 23:36:29.55 0rMMZwm+0.net
MVC をわかってないような奴に、何も教えられない
まず、無料のRails チュートリアルで、MVC webアプリの設計から学べ

647:デフォルトの名無しさん
18/05/15 00:01:41.20 NfuIoln0a.net
Railsってモデルがフォームの構造に依存するからなあ
あんなのAccessのフォームなんかと同レベルだよ
変な癖がつくから初心者には適さない

648:デフォルトの名無しさん
18/05/15 00:21:50.03 joJAW/ym0.net
>>633
スレチ

649:デフォルトの名無しさん
18/05/15 06:26:55.76 bIQIvbQJ0.net
MVVMを理解するには何からはじめたらいいの?

650:デフォルトの名無しさん
18/05/15 07:15:54.13 OnclRViVM.net
>>636
何から始めても理解できない
分離するどころかやればやるほど結合が強くなる現実に打ちのめされるだけ

651:デフォルトの名無しさん
18/05/15 07:32:22.06 bIQIvbQJ0.net
やってみたけど難し過ぎて手に負えなかったってことだね。

652:デフォルトの名無しさん
18/05/15 07:36:31.19 IL2LN/1vM.net
>>636
Vue.jsあたりかな
XAMLはテンプレートやコマンドバインディングが複雑すぎて本質を掴みづらい
WebのMVVM系フレームワークのほうがずっと見通しが良くてMVVMの本質を素直に実装してる

653:デフォルトの名無しさん
18/05/15 07:43:57.19 dqMabmxz0.net
まずはUNDOなりマクロを実装するのに何が必要か
考えると、「C」の動きが見えて来るかと思うけどね
GOFの最初の章にも説明はあるよ

654:デフォルトの名無しさん
18/05/15 07:48:40.53 WESx87C+0.net
>>627
アクセシビリティに一貫性がありませんってエラーが…
internalでインスタンス生成するとOKなんですが、フォームクラスはpublicで宣言してるんですけど。

655:デフォルトの名無しさん
18/05/15 07:52:16.57 WESx87C+0.net
>>629
ご指摘を受けてメインのフォーム上でインスタンス管理しようとしているのですが、
アクセシビリティの一貫性というエラーが出てきています。
public partial class ExaminationForm : Form
{
public InitialSettingForm initialSettingForm;
public InitialValues initialValues;
で最後の行にアクセシビリティ一貫性のエラーが・・・。
3行目のpublicをinternalにするとエラー消えるのですがなんでだろう。

656:デフォルトの名無しさん
18/05/15 07:56:03.82 jP3S3vDhM.net
そのビューの入出力項目と隠し項目とユースケースを抽出するだけだよ
ログイン画面だったら
入出力項目として
・ユーザーid
・パスワード
隠し項目は無し
ユースケースは
・ログインする
なので
class LoginViewModel {
public string UserId { get; set; }
public string Password { get; set; }
public void Login() {
// login impl
}
}
こうなる
あとはViewがVMを監視するために変更通知イベントなどを実装しましょう
それだけ

657:デフォルトの名無しさん
18/05/15 07:59:07.77 5QugQ9oMM.net
>>636へのレスな↑

658:デフォルトの名無しさん
18/05/15 07:59:13.31 4jNLOtgZa.net
>>642
InitialValuesクラスがinternalなんだろ
publicに変えれば意図通りになる
言っちゃ悪いけど正しい設計とか気にするレベルじゃないと思うよ
まずは汚くてもいいから一本何か形にできるようになってから考えればいい

659:デフォルトの名無しさん
18/05/15 08:38:53.30 WESx87C+0.net
>>645
ああああああああ!
そこなのかあああ!
classってデフォルトでinternalになるんですね。
というかinternalって省略されるから気づきませんでした。
ここで半日費やしてたのでものすごく助かりました。
ありがとうございます。m(__)m

660:デフォルトの名無しさん
18/05/15 08:42:40.68 WESx87C+0.net
>>645
一本ゲーム作ったんですが、form1(初期値)、form2(ゲーム)にほとんどぶっこんだオブジェクト指向ほぼ無視プログラムになってしまったので、
ゲーム内のデータ管理とform2だけでも分離しようとして悪戦苦闘しています。
はるか昔にBasicやったぐらいなので、インスタンスの参照渡しとかその辺がうまく実装できなくて・・・。
勉強用に買った本にもインスタンスの参照渡しなんて全く書いてないし・・・。(´・ω・`)

661:デフォルトの名無しさん
18/05/15 08:47:43.78 WESx87C+0.net
あれでも
//インスタンス生成
InitialValues initialValues = new InitialValues(); 
//インスタンスの参照渡し
initialSettingForm.InitialValuesPointer = initialValues;
としているのに
フィールド”InitialValues"は割り当てらせません。常に規定値nullを返します。
となります。
実際にnull値が入ってるようで、initialSettingFormにインスタンスの参照は渡せていない模様・・・。
newしてるのになんで割り当てられませんと出るのでしょう??

662:デフォルトの名無しさん
18/05/15 08:55:56.96 WESx87C+0.net
//インスタンス生成
×InitialValues initialValues = new InitialValues(); 

this.initialValues = new InitialValues(); 
でした。すいません。

663:デフォルトの名無しさん
18/05/15 09:03:30.06 WESx87C+0.net
>>648
すいません。ゴチャゴチャしてた変数名整理したらエラー消えました。。。
お騒がせしてもうしわけありません。

664:デフォルトの名無しさん
18/05/15 09:34:05.49 IdD83PdN0.net
>>647
C++ 以外のすべての言語で、インスタンスの参照渡しだろ

665:デフォルトの名無しさん
18/05/15 10:42:46.03 WESx87C+0.net
>>651
初代MSX-Basicでゲーム作ってた頃以来のプログラミングなので(;^_^A

666:デフォルトの名無しさん
18/05/15 10:47:12.03 WESx87C+0.net
アホな質問ですが、
Class InitialValue
に初期値を全部詰め込み、必要であればコントローラから参照しているのですが、
インスタンスの参照をinitialValueとすると
initialValue.StartPointX+hoge
などインスタンスの参照がくどくて読みづらい。
いっそiVとかしたいのですが、自分にしかわからない省略は良くないと聞いたもので・・・。
initialValue.StartPointX
initValue.StartPointX
iV.StartPointX
どれが読みやすいコードでしょうか?

667:デフォルトの名無しさん
18/05/15 12:29:44.99 2i/hB9LUM.net
>>653
どれもダメ
initialValueをそのまま使わずに設定値を使うクラスにコピーして

668:デフォルトの名無しさん
18/05/15 13:05:19.58 WESx87C+0.net
>>654
えええ!
データはデータクラスで一元管理じゃないんですか?
そうしないとフォームなどからデータクラスを変更した時に、
コントロールクラス側で


669:その通知を受け取って もう一度データクラスからコントロールクラスにコピーする仕組みが必要になってきますよね。



670:デフォルトの名無しさん
18/05/15 14:10:34.54 l7Fk1Hkl0.net
自分がアホだと分かってる割には自分の判断を信じてるのな
アホ草

671:デフォルトの名無しさん
18/05/15 14:32:03.09 bP9crr2Q0.net
勉強のためにプロが書いた大きなプログラムを見たんだが
変数が全部4桁英数字でランダムに発生させてるような文字列だった
僕ら初心者には「これ何の変数だっけ?」と分かりにくいだけなんだけど
大きなプログラムだと万が一、変数がダブったりするのを避けるためにそうするんですかね?
変数一覧表かなにか作るんですか?

672:デフォルトの名無しさん
18/05/15 14:38:53.82 WESx87C+0.net
>>656
いや、最初はコピーする仕様だったんですが、
データクラスで一元管理をするアドバイスを受けて変えたところです。
コピーするんなら元の仕様のままでよかったのかということに。

673:デフォルトの名無しさん
18/05/15 14:54:54.48 oubZzl5I0.net
>>657
変な変数名は難読化されてるだけ

674:デフォルトの名無しさん
18/05/15 15:26:01.82 UPWhPqGh0.net
>>657
当然だよ。変数使うには課長級の決済が必要。変数管理台帳ファイルに全部記録されている。

675:デフォルトの名無しさん
18/05/15 17:20:29.21 nA4SMkbe0.net
>>659
そうか、公開用にリファクターしたのかな
いちいち一覧表見ないと何処につながってるか見えないなんて不便だもんね

676:デフォルトの名無しさん
18/05/15 18:44:33.69 Fj6Vms3Xa.net
>>658
変数名が妥当かどうか聞いてるんじゃなかったの?w
そのInitialValueとやらのクラスを使う実装方法が妥当かどうかは実現すべき仕様を誰も知らないので
誰にも分からないと思うよw
ローカル変数の命名に関しては、型名InitialValueをそのまま変数名にしても
何をやってるのか理解できるような文脈なら変数名をivにしても同じことでしょう。
だったら短い方がいい。
ただしローカル変数でも説明的な名前の方が適切な場合もあるので馬鹿の一つ覚えはダメ。
情況に応じて柔軟に

677:デフォルトの名無しさん
18/05/15 19:35:30.36 9ix52upSr.net
>>660
初心者が真に受けるからやめれ

678:デフォルトの名無しさん
18/05/16 10:08:34.12 5p+fPd0U0.net
int[] intData = new int[10];
int intThread = -3; // 閾値
int intCount = 0;
for (int i = 0; i < intData.Length; i++)
{
if (intThread >= 0)
{
if (intData[i] > intThread)
{
// 処理
intCount++;
}
}
else if (intThread < 0)
{
if (intData[i] < intThread)
{
// 処理
intCount++;
}
}
}
閾値がプラスとマイナスで条件式を変えたいんだけど、
中の処理が一回で済む書き方ってあります?

679:デフォルトの名無しさん
18/05/16 10:48:11.15 6eYS9/+hd.net
=を含まない条件式。
そして閾値というキーワード。
まとめない方がいいよ。

680:デフォルトの名無しさん
18/05/16 11:18:13.11 XvxRw+U50.net
>>664
せめてCountメソッドにしとけと思うぐらい。

681:デフォルトの名無しさん
18/05/16 11:47:06.88 B7aMvtuba.net
>>664
単に同じ処理を2回書く無駄をなくしたいだけなら&&と||を使って
条件式をまとめるだけ
if((threshold >= 0 && x > threshold) || (threshold < 0 && x < threshold))
{
  ....
}
値が不変のはずのthresholdの符号をループで毎回評価する無駄が許せないなら
Func<int, bool> predicate = x => x > threshold;
if (threshold < 0) predicate = x => x < thredhold;
....
if (predicate(x))
{
  ....
}

682:デフォルトの名無しさん
18/05/16 12:22:33.98 CHLBL3ILa.net
async/awaitって呼び出しのネストが深くなると、大元の


683:呼び出しで波線が立ってすごくもどかしいんですが、気にしなくていいでしょうか?それとも呼び出しのやり方を見直したほうがいいのでしょうか



684:デフォルトの名無しさん
18/05/16 12:29:36.06 +dukoeHCd.net
>>668
ネスト関係なくね?

685:デフォルトの名無しさん
18/05/16 13:23:25.14 v6bC0eDAM.net
>>664
カウントをCountメソッドにして引数に突っ込むラムダ式を閾値によって切り替える

686:662,666
18/05/16 14:23:23.94 mC1mbnpn0.net
ごめん。Count以外の処理もあるんだね。おらの回答は無視してくれ。

687:デフォルトの名無しさん
18/05/16 14:55:11.81 c5ZU3C2K0.net
dataGridViewのデータソースをBindingListにしています。
この時にデータの絞込を実装する方法はあるのでしょうか。

688:デフォルトの名無しさん
18/05/16 19:51:48.39 oU1pyBE30.net
>>668
波線が立つのは単にasyncなメソッドをawai付けずに投げっぱなし呼び出しの警告出ているだけじゃないのか
>>669の言う通りネスト関係ない

689:デフォルトの名無しさん
18/05/17 00:16:57.84 OeNqnCBl0.net
すいません。ちょっと教えてください。
//Form1にて
Form2 f = new Form2();
f.show();
this.visible=false;
としてForm2を開いて、Form1を非表示にします。
//Form2にて
Form1 f = new Form1();
f.visible=true;
this.visible=false;
としてForm1に戻った場合、先程form1で入力した内容が消えてしまいます。
form1の内容を消さずにform2からform1に戻る方法を教えてください。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch