X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/12/15(土) 10:46:07.45ID:Wu4Fx0bU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
0162デフォルトの名無しさん
垢版 |
2019/04/12(金) 18:12:54.78ID:f0sWKcEF
今後、開発作業が増えてEXEのファイルサイズが大きくなっていく事が想定される場合
プロジェクト分けた方がええかな?


インストール型じゃなくてWEBシステムとして作ろうか悩み中
0163デフォルトの名無しさん
垢版 |
2019/04/12(金) 19:16:33.34ID:wX1hkUx5
「拡張メソッドはトップレベルの静的クラスでしか宣言できない」ということは、
public class Cの内部にprivate enum Eを置いたとき、Eに対して拡張メソッドを追加することは不可能なのでしょうか
いくつかの定数(とメソッド)を持った構造体で代用するしかないですかね
0165デフォルトの名無しさん
垢版 |
2019/04/12(金) 19:59:08.90ID:LhXUTlO1
>>162
どうでもいい
開発規模ウン億円とかにならない限り、人間が書いたコードの実行ファイルのサイズなんて全く問題にならない
それはともかく、Webを選べるのなら迷わずWebにすべき
exe配ると後々のメンテは地獄よ
0166デフォルトの名無しさん
垢版 |
2019/04/12(金) 20:16:15.81ID:f0sWKcEF
>>165
なるほどですね。
どうしてもWEBだと厳しいシステムなんですよね。
(サーバのIPアドレスが固定だとまずい)

cliclonceというのを使えばバージョンアップとか簡単ですか?
0172デフォルトの名無しさん
垢版 |
2019/04/12(金) 21:44:20.43ID:SPCc1qER
>>163
仮にenumを入れ子にする点は譲れないとしても(この点も本当は再考した方がいいと個人的には思うけど)
アクセシビティーをpublicにすることは検討していいんじゃないの?

隠蔽したい気持ちは分からんでもないが、少なくともpublicにしたからって何か危険があるわけじゃない。
0173デフォルトの名無しさん
垢版 |
2019/04/12(金) 22:21:07.52ID:wX1hkUx5
>>172
よく考えたらenumを入れ子で隠す設計をc#は想定してないってことですもんね
大人しく外に出します、ありがとうございました
0174デフォルトの名無しさん
垢版 |
2019/04/13(土) 00:18:29.71ID:BMo5W632
DataGridViewに詳しい人は教えてください。

DataGridViewの列にチェックボックスの列を設けています。
□がクリックされた時だけではなく、□の属するセル(の予約)が
クリックされても□にチェックが入る様に制御したいのですが
どうすればよいのでしょうか?

何かプロパティで設定するのですか?
0175デフォルトの名無しさん
垢版 |
2019/04/13(土) 14:39:03.85ID:n7lKOQoj
>>174
CheckBoxのセルのクリックで切り替えたいのなら
例えばCellをReadOnlyにしてCellClickイベントで値を切り替えればできる
0176デフォルトの名無しさん
垢版 |
2019/04/13(土) 15:19:56.97ID:BMo5W632
>>175
なるほど!
そーいう方法しかないんですね。

てっきり標準で設定出来るプロパティがあるのかと思ってました。
0178デフォルトの名無しさん
垢版 |
2019/04/13(土) 16:32:46.29ID:BMo5W632
>>177
サンクス!



セレニウムにチャレンジしています。
VSで作成した場合
インストール環境にNugetが入っていないとうごかないのでしょうか?
0182デフォルトの名無しさん
垢版 |
2019/04/14(日) 21:03:37.66ID:NnSXGzN0
スクレイピングをこれまでIEを操作して行ってきていましたが

セレニウムを使う方がナウいのでしょうか?

コンソール画面が立ち上がって結構うざいんですが
0184デフォルトの名無しさん
垢版 |
2019/04/15(月) 09:11:14.20ID:M/FIhTOp
>>183
コンソールを消す事はできました。

ただ、問題がありまして
Cromeを使ってログインしないと見えないサイトの中のとあるページを
スクレイピングしようと思っていますが、一度ログインしたのに
もう一度プログラムを実行すると再び画像認証付きのログインページが表示されてしまいます。

Chromeのセレニウムでログインした場合、
ログインセッションは、プログラムを終了すると自動でとじられるのでしょうか?
0185デフォルトの名無しさん
垢版 |
2019/04/16(火) 02:41:38.00ID:39QxJxCa
セレニウムで画像選択は同実装すればよいのでしょうか?

Windwos APIを使わないと、ダメでしょうか?
0188デフォルトの名無しさん
垢版 |
2019/04/16(火) 09:47:51.95ID:39QxJxCa
スクレイピングはできる様になりました。

ドラッグするか、その枠をクリックしてファイルを選択するしか
画像の選択が出来ません。
セレニウムでドラッグやファイルの選択はできないですか?
0191デフォルトの名無しさん
垢版 |
2019/04/16(火) 15:21:38.40ID:+QEcotOy
スクレイピング(が何かわかって無いけど)はできる様に(なった気持ちに)なりました。
0193デフォルトの名無しさん
垢版 |
2019/05/04(土) 14:25:52.45ID:6mDmKshX
select ユーザーコード, ユーザー名 from tbl_user group by ユーザーコード, ユーザー名 order by ユーザーコード

上記のクエリを、Visual Studio 2019の、クエリの構成ウィザードで実行すると成功するのですが、
構成ウィザードで作成したGetData()メソッドをソースコードから呼び出すと、
"System.Data.ConstraintException: 制約を有効にできませんでした。行に入力できるのは、Null 以外の値、一意な値、あるいは外部キーですが、この制約の違反が 1 つ以上の行で発生しています。"という例外が発生します。
何が原因でしょうか?
0194デフォルトの名無しさん
垢版 |
2019/05/04(土) 18:47:33.92ID:y5JKLm4r
ありがちなのは
その型付テーブルにユーザーコード・ユーザー名以外の列があって
それがNULL非許容であるケース
そろそろ型付テーブルは捨ててみるのはどうだろう
0195デフォルトの名無しさん
垢版 |
2019/05/04(土) 23:59:05.71ID:6mDmKshX
>>194
ありがとうございます。
捨てるというか、今データベースプログラミング覚え始めなのです・・・。
0200デフォルトの名無しさん
垢版 |
2019/06/03(月) 19:12:08.43ID:QH6vVdx1
C#の勉強のためにメモ帳を作ろうと計画していますが
フォームにTextBoxを貼り付けるだけではあまり面白くありません
また禁則処理や縦書きの機能もついていません
なにか他のもの、WebBrowserあたりを使うのかな?と想像しているのですが
0202デフォルトの名無しさん
垢版 |
2019/06/03(月) 19:45:12.89ID:QH6vVdx1
WPFだとImageを使うんでしょうか
ImageもしくはPicutureBoxを使う方向でやってみます
0206デフォルトの名無しさん
垢版 |
2019/07/22(月) 23:30:46.11ID:C1JMmcNL
>>200
メモ帳意外と難しいよね
オレも初めの頃作ろうとして挫折した(あわよくばテキストエディタ目指そうとしてたのもあって)

勉強のためだけだとモチベ上がらないので、世の中にあるけど、俺様仕様なのが欲しいってのを作ってみてはどうかな(なるべく簡単なものから)
0207デフォルトの名無しさん
垢版 |
2019/07/26(金) 17:45:13.82ID:BgugETZT
A・B・C・E・Dという5つの項目があって、
例えば、Aが10で、Bが10で、Cが15で、Dが20で、Eが30の時、3という数字を格納したくて、
今までは多次元配列で、num[10,10,15,20,30]=3という風に入れてたのだけど
これだと配列の宣言時に添え字大きいとメモリ足りないエラー出たりするのだけど
多次元配列以外でこういう処理するほうほうはないでしょうか
0212デフォルトの名無しさん
垢版 |
2019/07/28(日) 01:55:31.74ID:fFZFtxU0
C#でメッセージボックスそっくりのフォームを表示したいのですが、
既にそういうことやって公開してるサイトとかあったら教えてください。
とりあえず警告とかのアイコンとメッセージとOKボタンが出ればOKです。
0214デフォルトの名無しさん
垢版 |
2019/07/28(日) 02:05:47.36ID:O6J4gSKO
マルウェア造りたいんだろうきっと
0216デフォルトの名無しさん
垢版 |
2019/07/28(日) 11:11:36.04ID:4n+BfbRN
英語OSで日本語表示

マルウェア臭しかしない
出来たとしてもやめたほうがいいw
0217デフォルトの名無しさん
垢版 |
2019/07/28(日) 11:52:47.97ID:KNp0wpVr
手元に英語版Windowsがないから確認できんけど、
Win9xの時代じゃないんだから英語版Windowsだからって日本語のメッセージが化けるとかないはずだと記憶してるけど

違ったっけ?
0218デフォルトの名無しさん
垢版 |
2019/07/28(日) 12:03:09.31ID:mCptNPRe
違う
バグはいくらでも造り込める
0219デフォルトの名無しさん
垢版 |
2019/07/28(日) 12:15:34.70ID:fFZFtxU0
>>217
MessageBoxクラスはロケールのシステムフォントで表示されるので化け化けです
逆にこのクラスのフォントを変えられればそっちでも良いんですがぐぐっても全く出てこず・・
0221デフォルトの名無しさん
垢版 |
2019/07/28(日) 12:41:08.89ID:pP5stkUp
>>217
Fontの指定できるのならそうだろうな
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/2f45e7d7-f4ba-47ee-a8e0-5b99255e69f7/12513124831247512540124721250812483124631247312398125131248312?forum=csharpgeneralja
ここの結論では>>215と同じ
>>215
ダイアログ用のフォームを作って「OK」と「Cancel」のボタンをクリックしたらDialogResultにDialogResult.OKかDialogResult.Cancelを入れてそのフォームをClose()するだけ
呼び出す側はMessageBoxのかわりにそのフォームを同じように呼び出せばいい
0222デフォルトの名無しさん
垢版 |
2019/07/28(日) 13:19:08.39ID:KNp0wpVr
>>219
ほんと?

OSで設定されてるフォントが使用されるのはそう(デフォは昔ならTahoma、今は何だっけ?)
なんだけど、WindowsにはFontLinkって仕組みがあって、欧文以外の文字の場合は適当な
フォントが代わりに使用される仕組みになってるはずだと思うが...

まあどっちにしろサクッと自作しても大した手間ではないな
0224デフォルトの名無しさん
垢版 |
2019/07/30(火) 17:43:55.27ID:Q6VO+qJe
なんのアニメ?
京アニ?
0225デフォルトの名無しさん
垢版 |
2019/09/16(月) 20:31:20.79ID:MPbmz0IO
Windowsのデスクトップアプリ作ってみたいんだけど、UWPじゃなくてWPF使った方がいいの?
0227デフォルトの名無しさん
垢版 |
2019/09/16(月) 21:16:27.82ID:MPbmz0IO
>>226
一度も触ったことないからデスクトップアプリ作ってみたい
販売もWin10以外で使う予定もないです
0229デフォルトの名無しさん
垢版 |
2019/09/17(火) 01:14:09.81ID:jgnLyfJa
>>223
グロ
0231デフォルトの名無しさん
垢版 |
2019/09/17(火) 07:20:33.53ID:Y3mVLTqr
>>230
横だけど
日曜プログラマレベルでWinFormsでそれなりにDB連携の業務アプリを作って運用してはいるんだけど
今更WPFの勉強スタートして使いものになるかな?
つーか、1度作ったWinFormsをWPFにするには作り直しだよね・・・
0232デフォルトの名無しさん
垢版 |
2019/09/17(火) 08:34:01.71ID:gcZDzsnL
>>231
Winformを使いこなしてる人が、今からWPFやっても得るものは少ないだろうね
WinformもWPFもやったことない人なら、どっちでも楽さは変わらない

あと、Winformなアプリでも一部だけWPFにすることもできるから、完全に作り直しとも限らないよ
0234デフォルトの名無しさん
垢版 |
2019/09/17(火) 15:38:58.51ID:CU62bLm/
Win32をWindowsから追放してUWP化する計画は
やっぱりとん挫かw

ここ10年ぐらいMSはこんなことばっかりやってるね
0237デフォルトの名無しさん
垢版 |
2019/09/21(土) 10:57:39.89ID:y68BphyG
>>234
もうWin32に新たな関数を追加していくだけでいいんじゃないか
既存の分かりにくい関数とかも整理して新たな分かりやすい代替関数を追加して
古いのは非推奨にしていずれ廃止していくとかさ
0238デフォルトの名無しさん
垢版 |
2019/09/21(土) 11:11:11.88ID:Sri5tnCE
内部文字コードのUTF8化と同時に整理して欲しいよなー
もうそろそろ互換性はいいだろ
0239デフォルトの名無しさん
垢版 |
2019/09/21(土) 12:06:27.59ID:ZIXe7ufx
>内部文字コードのUTF8化

これは愚策
出入りはUTF8で良いけど
0240デフォルトの名無しさん
垢版 |
2019/09/21(土) 19:53:37.95ID:y68BphyG
SetWindowPosとかなあ
Posとか言ってSizeもZOrderもこれ使うとか初心者が勘違いするだろ
SetWndPosとSetWndSizeとSetWndZOrderに分けろや

ライブラリ作っとけばいいだけなんだけどさ
0242デフォルトの名無しさん
垢版 |
2019/10/01(火) 21:05:00.43ID:QXee0tMi
>>241
xamlで作ったユーザーコントロールは普通に使える
その時DataContextはカスケードで子要素のユーザーコントロールにも落ちるから
普通にバインドできる

ってことでいい?
0243デフォルトの名無しさん
垢版 |
2019/10/10(木) 11:16:46.19ID:20GczcoB
picturebox の中の画像の位置はどうやったら取得できるのでしょうか?

例えば、w 500 , h 500 の picturebox に w 300, h 500の画像が真ん中揃えで表示されているとき、x 100, y 0 みたいな値をとりたいのです。

画像の上に線とか図形とかを描画するための基準となる位置が欲しいのです。

ImageLocation プロパティで取れるかと思ったら、これはURL とかを指定するものでした。
0244デフォルトの名無しさん
垢版 |
2019/10/10(木) 11:24:30.46ID:dY7xsk31
自分で計算する
PictureBox::ImageRectangleFromSizeModeをリフレクションで呼び出す

上に何か描画するとかならImageプロパティは放棄して自分で全部描いた方が手っ取り早いかもね
0245デフォルトの名無しさん
垢版 |
2019/10/10(木) 23:41:17.72ID:20GczcoB
>>244
c# でリフレクションというのは攻撃魔法をときどきはね返す防御魔法のようなものだと思うのですが、リフレクションを使う方法は具体的にどうするのでしょうか?

自力で計算する方法でとりあえずはなんとかなりそうです。
まだコード書いてないけど、画像の表示方法と画像サイズと pictureBox のサイズがわかるのでそこから計算できそうです。
縦と横の拡大縮小率の計算が少しめんどくさいだけかな?
0246デフォルトの名無しさん
垢版 |
2019/11/06(水) 17:52:05.14ID:bs5+QLo2
ttps://gist.github.com/Flafla2/f0260a861be0ebdeef76

public Perlin(int repeat = -1) { this.repeat = repeat; }

public Perlin() { this.repeat = -1; }
と同じ意味でしょうか?またそうであれば、なぜパラメータとしてint repeat = -1としているのでしょうか?
0248デフォルトの名無しさん
垢版 |
2019/11/06(水) 17:57:42.25ID:cEKOtBl2
>>246
Perlin()と呼ぶことができる
これはPerlin(-1)と書いた場合と同じ
Perlin(0)ってかけばrepeatには0がはいる
だいたい-1なんだけど時々別の値にしたいときなんかに使う
詳しくはオプション引数でググって
0249デフォルトの名無しさん
垢版 |
2019/11/06(水) 18:50:35.37ID:bs5+QLo2
>>247, 248
ありがとうございました。
0250デフォルトの名無しさん
垢版 |
2019/11/25(月) 17:06:44.56ID:3yP/a9XY
1 2次元空間上の座標に乱数で円を重ならないようにたくさん配置します。
2 全ての円の座標の平均値がある条件を満たせば終了。
3 満たさなければ初期化して1に戻る

円の数を増やすと2の条件が厳しくなるので、12のループの繰り返しが指数関数的に厳しくなります。
100個を超えると配置できずにフリーズするんですが、
60ぐらいでも10回に1度くらいフリーズします。

10回に1度フリーズするのがよくわからない。。。
Windowsって特定のアプリがループ処理をし続けるとアプリをフリーズさせるようなシステムがあるのでしょうか?
0251デフォルトの名無しさん
垢版 |
2019/11/25(月) 17:15:30.05ID:uMtE/h/q
>>250
コントロールの表示の更新が追い付かずにフリーズして見えるだけじゃないのか
それだったら描画ごとにRefresh入れればいいが
とりあえずミニマムコードくらい見ないとエスパーするしかない
0252デフォルトの名無しさん
垢版 |
2019/11/25(月) 17:49:11.57ID:3yP/a9XY
>>251
すいません。
250はかなり要約して書いていて、本当はかなり長いコードでここには載せ難く。
10回に9回は1秒程度でループを抜け終了するので、
しばらく待ってれば表示されるかと思うと、やがてOSから応答してないよとメッセージがきます。

cならリソース開放忘れを疑うのですが、c#ってそのへん自動で管理してくれるんですよね。
0253デフォルトの名無しさん
垢版 |
2019/11/25(月) 17:54:12.64ID:pjJuONFZ
自分のバグを言語やOSのせいにする香具師は何をやっても大成しない
0254デフォルトの名無しさん
垢版 |
2019/11/25(月) 18:05:07.13ID:b/ZUvETz
ウィンドウプロシージャから呼び出された時に時間のかかる処理をすると
基本的にマウス入力も含めた後続のウィンドウメッセージが処理できないので
結果的に操作などが受け付けなくなりフリーズしたようになる
(5秒だかウィンドウプロシージャから戻ってこないとOSが駄目だコイツと判断してよく見る「応答なし」になる)
レンダリング以外の部分で一秒もかかる可能性があるならその時点で別スレッドにすべきではある

フリーズに規則性がないのはそれこそロジック見てみないと誰にもわからんでしょ
様子からしてGCが暴れてる可能性はあるので値型使ってみたりとかの余地はあるだろうけど
0256デフォルトの名無しさん
垢版 |
2019/11/25(月) 19:27:30.58ID:0ThvbZYY
>>252
全体的に何を言ってるのかよく分からないんで推測だけど、
UIがフリーズするのはUIスレッド上のユーザーコードがビジーループになってるから。

ウィンドウやコントロールの再描画やマウスやキーイベントへの反応は
システム側のコードで処理されるわけだけど、それはUIスレッドで動く。

だからUIスレッド上のユーザーコードがビジーのままだと、
システムは側のコードも動けずにフリーズしたように見える
0257デフォルトの名無しさん
垢版 |
2019/11/25(月) 19:36:27.15ID:qmWi7Xp+
フリーズするのはスレッドを分離してないのが原因だけど
それ以前に何らかの条件で無限ループになっている可能性もあるな
0258デフォルトの名無しさん
垢版 |
2019/11/26(火) 03:03:00.47ID:oYeHIm2x
>>250
まずそういうのは実際には円を描かないで演算だけやってみるところからはじめませう。演算が悪いのか描画が悪いのか切り分けたい。
0259デフォルトの名無しさん
垢版 |
2019/11/26(火) 10:03:15.82ID:c3SEnPpX
>>257
無限ループの可能性もあるが
こういう指数関数的に計算量増える場合は
UIと計算スレッドを分離するか
ループ途中でシステムコール呼んでイベント処理させるのが定石
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況