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

■ このスレッドは過去ログ倉庫に格納されています
2019/07/16(火) 15:36:23.74ID:i1fbuZ/pM
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part143
https://mevius.5ch.net/test/read.cgi/tech/1558002486/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2019/09/16(月) 12:31:59.14ID:z/LnXMaR0
>>625
普通にこんな感じです

Process prc=new Process();
ProcessStartInfo psInfo = new ProcessStartInfo();

psInfo.FileName = "hoge.exe";
psInfo.CreateNoWindow = true;
psInfo.UseShellExecute = false;

prc.StartInfo = psInfo;
prc.Start();

コンソールアプリはすぐに終了せずに待機してくれるタイプです
2019/09/16(月) 12:42:54.00ID:yFJZVYWt0
>>626
自分でプロセスを起動してるなら入出力をリダイレクトするだけ
psInfo.RedirectStandardOutput = true
psInfo.RedirectStandardInput = true;

起動後は
proc.StandardInput.WriteLine("hoge");
proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
2019/09/17(火) 18:45:14.27ID:4wOD4j6P0
ポリモーフィズムに関しての質問なんですけど
よくある例えでdogクラスのオブジェクトもcatクラスのオブジェクトもまとめてanimalクラスの配列で扱えるみたいなのあるじゃないですか
でも例えばこの時catクラスでだけ定義されてるフィールドがあったとして、配列に格納した途端アクセスできなくなっちゃいませんか
privateとかpublicは置いといて、たとえば、bool isPrettyとか定義されてたとして、animals[0].isprettyは無理じゃないですか。親クラスから子クラスで独自に定義されてるもんは触れられないですよね
とりあえずまとめて親クラスで持っておいて使う時になったら子クラスの情報使いたいみたいなときなんかうまくやる方法ってないもんですかね。
2019/09/17(火) 18:49:22.91ID:6boldAmf0
C#的にはパターンマッチングで分岐すればそれは可能だが
親クラスが持っていない情報を子クラスが持っている時点でそのクラス設計は疑わしい
その例ならanimalクラスにvirtual bool IsPrettyを持たせるべき
2019/09/17(火) 18:50:41.39ID:fvAMDErgd
そもそも使うものをまとめておくのが親クラスというかインターフェースや抽象クラスの役目なので、持ってるかどうかもわからないisprettyを使いたいのが間違ってる。無理やりやるんならリフレクションで存在確認するしかないよ
2019/09/17(火) 18:51:12.83ID:6boldAmf0
親クラスが持っていない情報というのは言い過ぎだな
親クラスが持っていないpublicプロパティを子クラスが持っているのは怪しい設計
2019/09/17(火) 18:54:14.01ID:fvAMDErgd
例えばヒゲのプロパティは猫しか持ってないと思うけど、そういう場合は is か as で具象クラスの型を確認してキャストして取ることは出来るけど、それはなんか気持ち悪い気がする
2019/09/17(火) 19:11:59.16ID:6boldAmf0
全動物のうち猫しかヒゲを持ってないわけじゃあるまいし
Animal型にNullable型のヒゲプロパティを持たせてそれがnullかどうかで処理を分岐させればいいだけでは

Animalクラスがヒゲを持ってるのは唐突過ぎると思うならFaceプロパティでも挟めばいい
2019/09/17(火) 19:13:48.81ID:189yfApBd
>>628
親クラスを無駄なメンバーで膨らませるのはバッドパターン。
インターフェイスを使うべき。

IPrety InterFace を付けたなんらかの型のリストをループすればいい。

// IPrety InterFace で拡張した型ならなんでもループで回せる。
if myUnit.isPrety == true {
myUnit.doSomething();
}
2019/09/17(火) 20:02:19.06ID:5qQz1pKl0
>>628
ダウンキャストしなされ
as クラス名;でよろし
2019/09/17(火) 20:15:43.47ID:4wOD4j6P0
色々勉強になりました
こう共通のメソッドとフィールドがあるからくくりだして親にしようくらいの気持ちだったんですけどぐぐったらそういうのそもそもダメらしいですね
素直に各クラスで同じフィールド定義して継承関係全部なくそうと思います。
2019/09/17(火) 20:16:03.96ID:mLXav9Fo0
まあそれだったらanimalに純粋仮想メソッド作ってCatにだけ必要な処理書くほうがいいって考えはわかる
2019/09/17(火) 20:45:51.61ID:gcZDzsnLa
>>631
えー、そうなんか
それけっこう使ってるなぁ、、、
2019/09/17(火) 21:13:37.27ID:XDhMjXUv0
.NET Framework の Object クラスを全否定してるじゃんw
2019/09/17(火) 21:14:22.17ID:D+I+Wj20M
親クラスが持ってないプロパティを子クラスが持ってるって
.Netですらわんさかあるじゃないの
2019/09/17(火) 21:15:50.88ID:D+I+Wj20M
あ、かぶった
機能を追加するために継承して関数やプロパティを増やすのが
ごく普通の設計じゃね
子クラスの全プロパティを親が網羅してたら使いにくいわ
2019/09/17(火) 21:42:46.98ID:hXcOzvgxa
機能を追加するための継承は現代的なOOPではあまり積極的には行われないんだよ
現代的なOOPにおいては実装継承は本質的に悪であるとされ、明確なメリットがある場合を除いて基本的に避けるんだよ
端的に言えば、抽象クラスを定義して、明確に拡張ポイントとして用意されたメソッドのみをオーバーライドする、
という使い方が今時の唯一の実装継承の使い方であると理解しておけばマサカリを食らうことはない
機能を追加したいだけなら継承する必要は全くなくて、ただそれぞれのクラスを別個に使うか、包含すりゃいいだけだ
643デフォルトの名無しさん (アウアウウー Sa63-3FT0)
垢版 |
2019/09/17(火) 21:44:46.02ID:02KenGFka
それほんとにその親いる?って感じの実装だったらabstractにするんじゃなくて?
644デフォルトの名無しさん (アウアウウー Sa63-3FT0)
垢版 |
2019/09/17(火) 21:45:27.86ID:02KenGFka
あっ被った?
2019/09/17(火) 23:37:00.02ID:PSgriU0H0
>>641
.NETだとコントロールの大半がそうなっているなw
親の方のクラスでまとめて配列にして場合に応じてキャストして子のプロパティを取り出すとか実装したことはある
2019/09/17(火) 23:46:29.64ID:e7oun/vJ0
すみません、初歩的な質問なのですが、クラスやらメソッドやらメンバーやらにアクセシビリティを設定するのは、他の誰かが使用するライブラリーを作成することを想定しているからなのでしょうか?
できるならpublicだらけで作りたいのですがそれがどんな問題に繋がるのかわからずモヤモヤしてます。
2019/09/17(火) 23:59:21.95ID:rQ8N7dRz0
>>646
問題ない
2019/09/18(水) 00:04:42.53ID:PFlVcPVS0
>>645
ふーむダウンキャストも絶対やっちゃダメってわけでもないのか
2019/09/18(水) 00:12:27.01ID:o3BZQkX70
>>646
システムが巨大になったときにpublicばかりだと複雑過ぎて手に負えなくなる
巨大になる予定も無いし他人に開示する予定も無いなら好きに作れば良いよ
2019/09/18(水) 00:13:40.45ID:MOtnHukC0
>>647
>>649
ありがとうございます!
2019/09/18(水) 00:46:19.09ID:XJgNYgHy0
>>648
わざわざ言語仕様にダウンキャストがあるのはそれが有用だからで、使っていけないわけではないよ。下手な設計で濫用されるのが非難されるだけで、適切な使い方をする分には問題ない。
理由も説明せずに杓子定規に◯◯は使うななんて書いているサイトがあれば、おそらくその書き手もちゃんと分かってないと疑ってかかった方がいいくらい。
652デフォルトの名無しさん (アウアウウー Sa63-THJG)
垢版 |
2019/09/18(水) 01:18:05.53ID:cuUyZOV2a
>>650
普通に考えて問題だから真に受けたらあかんw

外からアクセスする必要がないメンバーがpublicになってるクラスは
滅多に使わない機能のボタンがてんこ盛りのリモコンみたいなもの。

使いたい機能を探すのに不必要な苦労するでしょ
インテリセンスに使いもしないメソッドやプロパティが100とか
表示されるようなクラス使いやすいと思うか?
2019/09/18(水) 02:24:45.00ID:haPYpedoa
使いやすさなんて結局はドキュメントの質や命名規約などの高レイヤーの話であって、アクセス制御自体はそれほど重要ではない
メンバをpublicにするということは、そのメンバが利用できることをクラス外に対して約束するということに他ならない
そして、それを後で変更しようとすればクラス外へ波及する破壊的変更となる
将来的な変更の余地を残すために、客に対して不必要な情報公開を避けるという判断は、コーディングに限らずIT業界のビジネスのあらゆるシーンにおいて非常によく行われる
654デフォルトの名無しさん (アウアウウー Sa63-THJG)
垢版 |
2019/09/18(水) 02:39:11.63ID:cuUyZOV2a
そういう議論は為にする議論ってやつだと思うよw

晒すメンバーの数だけ拘束されて自由が減るってのは論理的にはその通りだけど、
現実問題いらないメンバーに故意にアクセスするコードを書くことなんかまずない。
だっていらないんだからw

本質的に重要なのは見えるメンバーの数を減らして複雑性を下げ、生産性を上げること。
時間が一番貴重なんだから
2019/09/18(水) 07:50:17.10ID:PFlVcPVS0
何から何までそれこそループ変数までパブリックフィールドにしていろいろなメソッドで使い回すクラスと対峙しているのでなかなか響く話題
辛い
2019/09/18(水) 07:58:41.43ID:5e31sw6sa
>>655
全部書き換えてしまへ
2019/09/18(水) 08:07:10.60ID:n4vg2Vie0
Windowsでbluetooth BLEの心拍計とケイデンスセンサーから
データを取得したいんだけど
どういうコードを書くと取得できるかな?
わかる人いるだろうか
2019/09/18(水) 08:24:07.29ID:o3BZQkX70
デバイスのAPI仕様書読め
2019/09/18(水) 14:09:46.88ID:uVuJujwEF
Process.Startにディレクトリを渡すとエクスプローラで開いてくれるけど、同じことをスマホなどMTP接続されたデバイスのフォルダでやりたいのですが
エクスプローラでスマホのフォルダを開いた時のウインドウタイトル(PCデバイス名〜)を渡してもエラーになります。
ProcessでMTPのフォルダを開くことは出来るでしょうか?
660デフォルトの名無しさん (アウアウウー Sa63-THJG)
垢版 |
2019/09/18(水) 14:50:14.61ID:9K+6bCRKa
>>659
MTPってことはPCからはストレージに見えてるってこどだよね?
普通にそのパスを渡すだけじゃないの?

ドライブレターが不変じゃないのが困るってこと?
2019/09/18(水) 15:08:01.73ID:n4vg2Vie0
スマホの場合、標準のエクスプローラに相当するものがないから
ひらけないんじゃね?
2019/09/18(水) 15:11:26.73ID:n4vg2Vie0
ああごめん、スマホをデバイスとしてPCに刺してる場合ね

ファイル名を指定して実行でアドレスを入れて開けないなら
ファイルパスが認識できていないのかもしれない

エクスプローラのexeにパスを引数で渡して起動するよりないんじゃね
2019/09/18(水) 17:08:55.83ID:8TRa6KIP0
エクスプローラーはMTPを通常のフォルダと変わらないように見せかけてるだけ
自分でアクセスするにはそれ用のAPIを使う必要がある
2019/09/19(木) 00:42:07.12ID:d/lXkOqta
質問です
VisualStudioとかUnityってメモリ4GBのノートパソコンでも動きます?
それともゲーミングノート買った方が良い?
2019/09/19(木) 00:43:51.43ID:bue4KA2uM
動かなくは無いかな
重いかどうかはやるのが早いんじゃない?

速度に不満で長く続けられそうなら
新しいのを買えばいいんじゃないの
2019/09/19(木) 01:05:46.17ID:d/lXkOqta
>>665
ありがとうございます
2019/09/19(木) 01:08:28.00ID:+/h2Zlffd
そふとうぇあなど実態のないデジタルデータを売ってお金をだまし取るのは詐欺なのでは?
2019/09/19(木) 03:08:03.44ID:VsuqkEyW0
何を売ろうが騙し取れば詐欺だろw
2019/09/19(木) 07:20:07.81ID:2k5+XP3O0
文字列を検索して文字数と行数を同時に取得する方法はないでしょうか?

VisualStudioのフォルダ検索みたいにヒットした行の行数と内容を表示して
ダブルクリックで該当ファイルを表示→選択箇所へジャンプとかやりたいです
2019/09/19(木) 09:52:48.59ID:AAQe7fcf0
文字列探索の要件が判らないとエスパー回答になるな

C#ならではの方法としては、オブジェクトのハッシュコードを照合するという
方法もあるね
2019/09/19(木) 10:34:03.67ID:2Fbpp9uL0
文字数はstring.Lengthで良いのでは?
行数はそのstringをforして1charづつ改行charなら++して数えていくとか
2019/09/19(木) 12:14:01.52ID:EhHD1H1Td
File.ReadAllLineで全部とるか、メモリ上なら改行コードでsplitして配列の添字を取ればいいじゃない
2019/09/19(木) 12:29:35.89ID:+/YZqQed0
>>672
その場合、テキストボックスでフォーカスを当てるための文字数って地道にカウントしてくしかないっすよね?
2019/09/19(木) 12:31:08.07ID:VB98Oc2p0
>>673
基本的にそう
テキストエディタとかはそんな感じで実装してる
2019/09/19(木) 13:00:06.50ID:cKzRnh020
>>674
なるほど
地道にやってんすね

やってみた感じ
文字数から行数出した方が楽だったのと
検索しながらは検索文字列に改行コード入ると面倒だったので

@検索文字列のヒットした文字数を出す
A文字数に対する行数を出す

の順でやりました
ありがとう御座いました
676デフォルトの名無しさん (アウアウウー Sa85-dxf9)
垢版 |
2019/09/19(木) 14:17:59.08ID:R2S0qhpOa
何言ってるのかよく分からんかったけど、

文字数 ⇒ 一致部分の最初の文字のインデックス
行数 ⇒ 一致部分の行の行番号

ってことかw

数え方の問題があるからだろうけど、Stringには一致箇所の数をカウントする
メソッドは存在しないんだね。
2019/09/19(木) 14:45:37.14ID:6IKimtYb0
検索一致箇所までの文字列を切り出して
改行でspritして要素数から行を得るというのはどうかな
折り返しは考慮されないけどね

あとtextboxなら折り返し込みで
文字インデックスから行に変換する
メソッドがあった気がする
678デフォルトの名無しさん (アウアウウー Sa85-dxf9)
垢版 |
2019/09/19(木) 14:58:17.90ID:R2S0qhpOa
検索される文字列が巨大だった場合Splitはさすがに富豪的過ぎるでしょ。
RegexかString.IndexOfでベタにやった方が
2019/09/19(木) 15:15:08.89ID:VB98Oc2p0
文字数多いとsplitはパフォーマンス辛い可能性があるね
regexもそれなりに…
パーサー的なものなら頭から逐次処理するのが一番だったりするし
2019/09/19(木) 15:41:06.68ID:6IKimtYb0
ググったらreplaceを使ってlengthの差で求める方法があったけど
これも一時的にメモリ上で二重化されるから
巨大なログファイルとかだとあまりいい方法ではないな

IndexOfの検索結果を次の検索開始インデックスにしながら
カウントするのが一番楽で無駄がなさそうだ
2019/09/19(木) 21:16:22.29ID:sYHr9xpc0
自己解決
MTPデバイスへのショートカット(.lnk)をメモ帳で開くと見えるリンク先
(こんなの→"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_12d1&pid_1031&mi_00#7&22311cc4&0&0000#{6fa27828-a61a-4555-ba33-f28f495d4f31}")
をProcess->Start()にそのまま突っ込んだら、エクスプローラが起動してMTPデバイスを開いてくれました。
ちなみに、テキストの末尾に(〜5d4f31}\内部ストレージ\Android")というようにディレクトリを追加すれば、そのフォルダを開いてくれます。
2019/09/20(金) 00:06:22.05ID:Z+Dr4fZe0
private class Parameter
{
public DateTime setTime { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string address { get; set; }
public int sex { get; set; }
}
↑のParameterのListデータで
setTime,Name,Ageが重複している情報を取得と排除したいんですがループでチェックするのは時間がかかりすぎるので
簡単で早く処理できる方法はないでしょうか?
2019/09/20(金) 00:15:35.18ID:JBznBYO/0
Parameter.Equals() をオーバーライドして
用意した HashSet<Parameter> foreach で Add() を呼ぶ
2019/09/20(金) 00:15:52.99ID:MWgaILTA0
>>682
個々の要素参照するんだからループするしか無いんじゃないの
あらかじめどこか他にデータ持っているのならともかく
簡単にというのなら参照したデータをList<T>に入れていけばList<T>.Containsでチェックできる
2019/09/20(金) 00:17:07.07ID:JBznBYO/0
なんか色々おかしかった

↓正
Equals() をオーバーライドして
用意した HashSet<Parameter> に対して foreach で Add() すればよい
2019/09/20(金) 00:20:11.39ID:H/0RNa6Fa
>>682
普通のListで「全要素について、別の要素と重複があるか」をチェックしようとしたらO(N^2)になるから
効率よくしたいならHashSetを使うといい
ただEquals()とGetHashCode()を適切に(今回の場合、setTime, Name, Ageだけで決まるように)実装する必要がある
2019/09/20(金) 00:21:51.81ID:JBznBYO/0
>>686
HashSet の重複判定って GetHashCode() 絡んでるのかね?
名前的には関係ありそうだけど
仕様が見付からない…
2019/09/20(金) 00:32:56.51ID:Z+Dr4fZe0
まだ試してないけどHashSetってことはsetTime, Name, Ageだけのチェックにはならないのかな
setTime, Name, AgeがDBのキーになる予定なので無理そうな気が
2019/09/20(金) 00:33:33.46ID:73yDKPmS0
Reference Source で実装みればええやん
GetHashCode と ICompare 指定しなければ Default の Equals の両方やね
2019/09/20(金) 00:34:05.25ID:H/0RNa6Fa
>>687
Microsoft Docs見てきたが明言はされてないのか……ただ
https://docs.microsoft.com/en-us/dotnet/api/system.object.gethashcode ではDictionaryなどで使われるとあって
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1 ではDictionaryのKeyアクセスと同様のハイパフォーマンス集合操作を提供、とあるから
HashSetで扱う型についてもGetHashCode()の実装は必要なはず
691デフォルトの名無しさん (アウアウウー Sa85-TrZH)
垢版 |
2019/09/20(金) 00:41:13.96ID:WJxc7oYHa
>>689
質問の感じから今現在自分で実装したものがあるんでしょ?それを載せたほうが微妙な解釈の違いに対しても最適解が出してもらえそうな気がするけど
2019/09/20(金) 00:57:02.51ID:JBznBYO/0
キーの重複は
GetHashCode() の一致 → Equals()
みたいだな

GetHashCode() は重複しにくいメンバの GetHashCode() で
Equals() で完全一致の判定をすれば大丈夫そう
2019/09/20(金) 00:58:18.71ID:Z+Dr4fZe0
あるサイトを参考にしてみたのが
private class Parameter
{
public DateTime setTime { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string address { get; set; }
public int sex { get; set; }
}


private class ParameterDistinct : IEqualityComparer<Parameter>
{
public bool Equals(Parameter i_lhs, Parameter i_rhs)
{
if (i_lhs.setTime == i_rhs.setTime && i_lhs.Name == i_rhs.Name && i_lhs.Age == i_rhs.Age)
{
return true;
}
return false;
}

public int GetHashCode(Parameter i_obj)
{
return i_obj.setTime.GetHashCode() ^ i_obj.Name.GetHashCode() ^ i_obj.Age;
}
}
2019/09/20(金) 01:02:47.93ID:Z+Dr4fZe0
//データ追加
var ParameterList = new List<Parameter>();

//重複排除
ParameterDistinct qualityComparer = new ParameterDistinct();
IEnumerable<Parameter> ParameterLister = ParameterList.Distinct(qualityComparer);

でやってみたんだけど重複がでたんだけど何かまずいだろうか
参考にしたところはDatetimeは使っていなかったので駄目なのかな
2019/09/20(金) 01:09:28.14ID:73yDKPmS0
DateTime をつめるときに DateTime.Now とか使ってると ミリ秒で差がでてるかもしれない。
DateTime を == で比較すると 内部的には DateTime.Tick 同士で比較するから
2019/09/20(金) 01:21:43.10ID:Z+Dr4fZe0
なるほどDateTime.Nowは使っているので調べてみます。
ありがとうございました!
2019/09/20(金) 01:31:14.65ID:v9n6qqFa0
なんで単なる取得でメモリ使うんだよ
unsafeかなんか付けて昔ながらの方法でやるのが一番速い
2019/09/20(金) 01:35:53.41ID:JBznBYO/0
ライブラリ作ってるわけでもないのにunsafeとか論外なんだが

その上unsafe付けてやることが2重ループでの完全一致検索とかじゃ
どうせHashSetのパフォーマンスに大敗する
2019/09/20(金) 02:27:15.79ID:pTVI5tHY0
NGID:JBznBYO/0
2019/09/20(金) 11:53:09.00ID:URFVhEsV0
git使わずに、自宅のデスクトップ環境とノートPCのプロジェクトファイル類を同期させたいです。

現在Onedrive使ってますが、binやobj配下まで同期されるのが残念な感じ。
binやobjの出力先はWPFプロジェクトなら変更できましたが、ASP.NET coreプロジェクトでどう変更するのか不明

VSTSで上記を実現または他の方法あったりしますか?
ちなみに現在はVS pro サブスクリプションに入ってます
2019/09/20(金) 12:00:15.35ID:Ew/p9Snjp
Microsoftの開発ソフト使ってんならOneDrive使えるだろ?
2019/09/20(金) 12:02:00.53ID:Ew/p9Snjp
最後にcleanすりゃいいだけだから。
もしくは同期ドライブ直接はコンパイルしないとかな。
2019/09/20(金) 12:02:42.34ID:bfuJBtmYd
svnを使う
onedrive以外の場所で開発してonedriveフォルダに必要なファイルを同期ツールとかでローカルコピーするようにする

なんでonedriveはokでgitがngなのかがわからんと提示しづらい
704デフォルトの名無しさん (アウアウウー Sa85-dxf9)
垢版 |
2019/09/20(金) 12:48:37.25ID:uLmjcKMSa
OneDriveって特定のフォルダだけ同期しない設定にできないのか

6,7年前にオンラインストレージが流行った時には
タダで大容量で高機能のがいっぱいあったのになんだか退化してるよねw
705デフォルトの名無しさん (ワッチョイ 4605-Mu6I)
垢版 |
2019/09/20(金) 12:56:56.83ID:uH7l3KIr0
labelの文字列の一部を太文字にしたり色を変えたりといった表現をしたいのですが
何か良い方法はないでしょうか?
コントロールではなくメインプログラムのほうで操作できるようにしたいです
labelと同じ見た目ならなんでもよいです
textboxの様な感じではなくlabelのような感じが目標です
2019/09/20(金) 13:13:16.41ID:WW0nVoDA0
のような感じと言われてもどういうのがNGでどういうのがOKなのかよく分からんが
手軽なのはRichTextBoxを使うことで
そうでなければPaintイベントで全部自前描画ということになる
2019/09/20(金) 14:28:02.26ID:9RWO75b+d
>>700
ちと面倒だけど、ブランチとか使えるのが便利だから、サーバ立てるまでOneDriveのフォルダ上にgitのリポジトリ作ってた事がある。
OneDrive内の任意のフォルダの中でgit init --bareするだけ。
したら、そのフォルダをremoteとして登録出来る。
あとは任意のタイミングでpush/pullするだけ。

作業フォルダをOneDrive内に置いて自動的に同期もやったけど、objとかが共有される問題よりも、同時に開いて悲惨なことになる事があったので、今はしてない。
(競合したら「もとのファイル名-端末名」ってファイルが大量にできる)
2019/09/20(金) 15:01:20.41ID:riKFjdTV0
ああ、確かにリポジトリをonedriveに入れるのが一番スマートかも
昔dropboxにsvnリポジトリ作ってたことあるわ
709デフォルトの名無しさん (ワッチョイ 6990-jgJV)
垢版 |
2019/09/20(金) 17:01:09.25ID:9F0x+J+E0
メモリ消費は税のようなもの
しょとくだけに
消費だけに
2019/09/20(金) 19:34:13.48ID:dvP1e2Mn0
環境はWindows formアプリです。
TableLayoutPanel と DataGridView の使い分け方がわかりません。
datasource property の有無だけ?
2019/09/20(金) 19:53:22.57ID:+tHFIfxx0
>>705
自分で描画するのはメソッド作るのも指定するのもめんどくさいよ
https://dobon.net/vb/dotnet/graphics/measurestring.html#section1
>>706の言う通りRichTextBoxをBorderStyle.Noneにして背景色を合わせた方が楽じゃないかな
どうしても文字以外を透過させたいとかならともかく
>>710
HTMLのテーブルとExcelの表が同じに見えるのならそうかもね
712デフォルトの名無しさん (ワッチョイ c245-Iqd1)
垢版 |
2019/09/21(土) 10:00:25.29ID:DmWWMvK20
コンソールアプリが作れればいいやと思ってpaizaでシコシコ勉強してますが他にどんなことすればいいですか?
目標は外部のファイルを読み込んでコンバートするアプリを作ることです。
2019/09/21(土) 10:08:45.30ID:ZhDsxJHf0
外部のファイルを読み込んでコンバートするアプリを作ればよいのでは?
そんなに難しくないよ
何をどうコンバートするかにはよるかもしれないけど
2019/09/21(土) 11:05:31.91ID:wLZyePcca
プログラミング未経験者です
すいません、ちょっと趣旨から外れるかもしれませんが質問です

電気(強電)、計測(コンビナートとかのプラント計装)の知識ってC#で活かせますか?

C#の求人や書籍を検索すると、電気回路の制御ソフトとか計測器制御とかがヒットするので気になって質問させていただきました
2019/09/21(土) 11:05:33.11ID:DmWWMvK20
SQLもどき文をパース?して出力したいです
716デフォルトの名無しさん (アウアウウー Sa85-TrZH)
垢版 |
2019/09/21(土) 11:42:35.85ID:uzyGV4kra
>>714
FAの制御系だったら測定器やPLCとの通信がメインになるからそれなりに知識あったほうがいいとは思うよ
2019/09/21(土) 12:00:01.02ID:wLZyePcca
>>716
ありがとうございますm(_ _)m
2019/09/21(土) 13:30:42.97ID:ox/L2PXG0
>>715
SQLの整形をしたいの?
SQLって方言が結構あるしパース(字句解析+構文解析)自体の難易度も初心者がやるものじゃ無いと思う
2019/09/21(土) 13:39:06.70ID:cHmpI1M9M
>>715
SQLのパーサーなんて出来合いのライブラリがいくらでもあるよ
自分でわざわざ使い物にならないゴミを作って時間をドブに捨てる必要はない
2019/09/21(土) 14:11:59.87ID:gZFDeRYs0
オライリーのlex & yacc がsqlのパースの
サンプルだったけど

C#は対応していないかと
721デフォルトの名無しさん (ワッチョイ ae2d-Z796)
垢版 |
2019/09/21(土) 14:57:58.99ID:8edEcM0R0
すまんが、スレッドを指定して実行ってできないもんなの?
指定できればロックが必要な箇所が減っていい気がするんだけど・・・・どうなんだろう
2019/09/21(土) 15:03:52.53ID:gZFDeRYs0
スレッド起動しないかWaitしておけば、
良いんじゃね
2019/09/21(土) 15:21:35.32ID:Ef6g+Zfma
>>721
Producer-Consumerパターンを使って特定スレッドでだけ処理するのはどう?
BlockingCollection<T>使うと楽に実装できるよ
2019/09/21(土) 15:59:40.26ID:3kDOCDXv0
Dllimortで呼び出す関数の引数にはジェネリックは使えないのでしょうか?
2019/09/21(土) 17:32:33.11ID:CRAyGleP0
使えない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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