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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 1e7b-qjLW)
垢版 |
2019/10/07(月) 20:16:17.93ID:9eyAES450
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

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

■情報源
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/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0694デフォルトの名無しさん (ブーイモ MM76-+sLU)
垢版 |
2019/11/14(木) 12:17:18.58ID:1eSFX+RHM
>>692
クラスではなくメソッドについて struct/class 制約の共通化をやろうとした経験から言うと ...

Nullable 含めて内部判定することはできるけど、判定・分岐があちこちに発生することになり、かなりめんどくさいし、読みにくくなる。
だったらクラス分けて、誰かが言った通り interface (か abstract base class) で共通化図る方が楽と思われる。
0696デフォルトの名無しさん (アウアウウー Sa45-CsEk)
垢版 |
2019/11/14(木) 12:59:54.31ID:xkNbqoiZa
>>671
やりたいことの意図を誤解してるかもしれんけど、

static class A
{
  public static A<T> OfStruct<T>() where T : struct
  {
    ....
  }

  public static A<T> OfClass<T>() where T : class
  {
    ....
  }
}

class A<T>
{
}

こんなのとか...
っていうか、ジェネリッククラスのスタティックメソッドってTを使ってなくてもいちいち型パラメータ
指定しないと呼び出せないのかw
0697デフォルトの名無しさん (ワッチョイ 7e7c-+JiD)
垢版 |
2019/11/14(木) 13:09:24.35ID:Um2wzMfp0
>>693
WPFだと一般的にはMVVM使う
で、MVVMなら直接ViewにアクセスしないでVM経由になる
VMの値はスレッド越しに取得設定できる
コレクションの操作については事前に同期オブジェクト渡すとかする必要があるけど
0698デフォルトの名無しさん (アウアウウー Sa45-CsEk)
垢版 |
2019/11/14(木) 13:27:31.68ID:xkNbqoiZa
こっちの方がマシか
class A<T>
{
  protected A() { }
}

class AOfStruct<T>:A<T> where T:struct
{
}

class AOfClass<T>:A<T> where T:class
{
}
0700デフォルトの名無しさん (ドコグロ MM4a-woiy)
垢版 |
2019/11/14(木) 15:23:48.31ID:DypnJQvvM
ジェネリックなメンバアクセスには、最近は構造的部分型を使うのが流行りだね
構造的部分型ベースの型システムを持つTypeScriptやGoでは利用する側でアドホックにinterfaceを定義できるから、
利用シーンを先読みして型階層を設計するという人間には困難な芸当なしで柔軟に型制約のようなことができる
0702デフォルトの名無しさん (ワッチョイ 21da-bNU/)
垢版 |
2019/11/14(木) 20:42:53.07ID:XexdQDOu0
質問させてください

ASP.NET
C#
SQL Server
を使用しています

SQLにByte型で保存したバイナリデータが保存されています
そのバイナリデータをASP.NET側でLISTで受け取り、フォルダに保存したいです
LISTで受け取った後にフォルダに保存するところの書き方を教えてください

よろしくお願いします
0708デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
垢版 |
2019/11/15(金) 23:36:35.15ID:pmE2fanG0
static int UnitStep1(int x) => x >= 0 ? 1 : 0;
static int UnitStep2(int x) => (x >> 31) + 1;

上のような2つの関数を最適化ありでコンパイルして
ランダムな100万個の値に対して実行すると、
@どちらも同じ値が返ってくる
AUnitStep1の方がUnitStep2よりも10倍近く時間がかかる
という実験結果が得られました。

@とAの理由を考察しないといけないのですが、
@は分かったものの、Aがさっぱり分かりません。
というか、どう考えてもUnitStep2の方が
無駄な処理をしているように思えます。

分かる方がいたら教えていただけないでしょうか?
よろしくお願いします。
0709デフォルトの名無しさん (ワッチョイ e963-L4DL)
垢版 |
2019/11/15(金) 23:45:14.55ID:ksKmrlqp0
三項演算子で比較するよりビットシフトのほうが圧倒的に早いから
cpuが得意とする処理と人間が理解しやすい処理は一致しない
どうしても納得行かないならILを見て各ステップでどういう命令がされるか確認するしか無いかな?
0710デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
垢版 |
2019/11/16(土) 00:11:47.33ID:m6RZqer/0
>>709
ありがとうございます。とりあえずILについて調べて、
下のようなページを表示させるところまで行き着きました。
https://sharplab.io/#v2:C4LglgNgPgAgzAAhgJgQYQQbwLACgEFICMAbAmAHbAICqFYwAysAKYAORAFJdQB4CUCALwA+BLwQihCAAwIA/AiIIQsgNx5CxMj1r0mrNsm5Vxg0Qk4SRYuEUEBqJWoR4AvkA===

これから書いてある内容の理解に挑戦してみようと思います。
0711デフォルトの名無しさん (ワッチョイ e963-L4DL)
垢版 |
2019/11/16(土) 00:31:35.36ID:4hbhG1OZ0
そのILをぱっと見る限り、実行されるアセンブラまで調べに行く必要あるのかも
命令数は変わらんし
そこまで行ったらもう環境依存な気もする
てか最適化ありなら最適化されたIL見ないとだめかな
0712デフォルトの名無しさん (ワッチョイ e954-+sLU)
垢版 |
2019/11/16(土) 00:37:54.66ID:NxgYCWhy0
>>708
大昔にアセンブリやっていた経験からの推測だけど...

@の >= は左辺引く右辺の減算をして符号判定をしており、右辺の 0 を引くという演算が最適化ありでも外れず無駄な演算をしている可能性がまず一つ。でもこれはAに対して圧倒的に不利になる要素ではない。

もう一つのよりありそうな可能性は、三項演算子がコンパイルで if ステートメントになり、分岐先ブロックでパイプライン先読み実行していたステップが、分岐先読みの失敗により、ロールバックするコストが高くついているのではないかと。
確率 50% の分岐なら、2回に1回はロールバックすることになるため、コストが最悪になる。if else ブロックのどちらが実現確率が高いか、コンパイラが判断・制御できていない。
それに対してAはパイプライン処理を乱す要素がない。

どう中間コンパイルされ、どう IL が動くのか、最近の低レイヤーの処理は全く知らないため、見当外れかもしれないが。
0714デフォルトの名無しさん (ワッチョイ e954-+sLU)
垢版 |
2019/11/16(土) 00:59:24.83ID:NxgYCWhy0
パイプライン処理の詳細は Wiki で調べて、命令パイプライン、パイプラインハザード、制御ハザードの節あたりを参照しておくれ。

条件分岐がなぜ遅いかわかる。確率考えてアセンブリレベルで制御しないと速くならないよ。
0716デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
垢版 |
2019/11/16(土) 01:07:09.62ID:m6RZqer/0
>>711
ありがとうございます。
アセンブラというのはSharpLabのページの
ResultsをJIT Asmにしたときに表示されるものと考えて正しいですか?
IL命令について色々と調べていたのですが、
JIT Asmのほうが書いてあることが少ないので先にこちらに挑戦してみようと思います。

あと最適化されたILというのは、ResultsをILにして、
一番右上の選択肢をReleaseにしたときに表示されるものと考えて正しいですか?

>>712
ありがとうございます。UnitStep?(int x)のxはプラスとマイナスが50%ずつになるように
ランダムに決めているので、確かに分岐の確率は50%です。
まだパイプラインについて完全に理解できていないので見当外れかもしれませんが、
試しにプラスとマイナスの割合を変えてどうなるかについても検証してみようと思います。

>>713
>>714
ありがとうございます。やはりハードウェアについてしっかりと理解しないといけないのですね。
ひとまず、>>714に書いていただいたキーワードについて調べてみたいと思います。
0717デフォルトの名無しさん (ワッチョイ e954-+sLU)
垢版 |
2019/11/16(土) 01:19:12.81ID:NxgYCWhy0
もしパイプライン処理がビンゴだったら IL 見ててもわからないよ。

CPU の fetch, decode, exec という内部処理の流れを理解しないと。

質問の書きぶりから大学かなんかの課題に見えるんだけど、高級言語ばかり見ていて低レイヤーのこと知らないとハマることあるかもよって警告するためのお題なのかもね。
0719デフォルトの名無しさん (アウアウウー Sa45-CsEk)
垢版 |
2019/11/16(土) 01:33:47.48ID:KEmuW3Wza
分岐先読み失敗って言ったって
x >= 0 ? 1 : 0
さすがにこんなのゼロコストじゃないの?

単純に機械語レベルの命令数の差を反映しているだけのような気が
知らんけど
0720デフォルトの名無しさん (ワッチョイ e954-+sLU)
垢版 |
2019/11/16(土) 01:41:11.97ID:NxgYCWhy0
>>718
いいインサイトですね。勉強になります。

>>716
もし true ? 1 : 0 の速さがAにかなり近くなって false ? 1 : 0 の速さが@よりさらに悪くなる、(あるいはその逆) ならパイプライン処理が原因だと考えて間違いないと思う。
0721デフォルトの名無しさん (ワッチョイ e954-+sLU)
垢版 |
2019/11/16(土) 01:50:49.22ID:NxgYCWhy0
>>719
機械語レベルの命令数に差があるように見える?
@Aどちらも 2, 3 ステップだよ。

先読み失敗リカバリーはものすごくコスト高いよ。
パイプライン上の仕掛かりを全部クリアしなければならないんだから。その 2, 3 ステップの 1.5 〜 3 倍くらいのクロックサイクルを無駄にすると思う。
0722デフォルトの名無しさん (ワッチョイ e954-+sLU)
垢版 |
2019/11/16(土) 02:00:02.51ID:NxgYCWhy0
>>719
ごめん、言い過ぎた。
IL わからんから、中間コンパイル通したらなんとも言えない。機械語の命令数が膨らむ可能性もありうる。
721 はネイティブコンパイルしたら、という仮定の話。
0723デフォルトの名無しさん (アウアウウー Sa45-CsEk)
垢版 |
2019/11/16(土) 02:19:10.34ID:KEmuW3Wza
不勉強で今時のCPUのアーキテクチャーさっぱり分からんが、
ググってみると、投機的実行は予測が当たれば儲け、はずれても損なしだからこそ意味があると書いてある

コインの裏が出たら損をするなら意味がないと思うんだけど
0724デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
垢版 |
2019/11/16(土) 02:28:53.52ID:m6RZqer/0
>>715
>>720
ありがとうございます。
xのプラスとマイナスの割合を変えて実験してみたところ、
UnitStep2では処理時間はほとんど変わりませんでしたが、
UnitStep1では、50:50のときが一番遅くてUnitStep2の10倍程度、
75:20と25:75はどちらも少し速くなってUnitStep2の6倍程度、
100:0と0:100はどちらもさらに速くなってUnitStep2の2倍程度になりました。
やっぱりパイプライン処理が原因っぽいですよね?

>>717
ありがとうございます。勉強になります。
高級言語では計算量までしか考える価値がなくて、
しかし計算量さえ小さければあとはマシンパワーでなんとでもなる。
だからこそ高級言語が今の時代に合っているということでしょうか。

>>719
ありがとうございます。
機械語レベルの命令=JIT Asmの命令だとすれば、
UnitStep1とUnitStep2では6命令と4命令で確かに差はあるものの、
単純計算なら10倍もの違いはないようです。
0725デフォルトの名無しさん (ワッチョイ e954-+sLU)
垢版 |
2019/11/16(土) 02:35:13.39ID:NxgYCWhy0
>>723
それ出典教えてもらえる?
外れても損なし、だったらいいなっていう理想を言っているのではないのかな。

ランダムデータには弱いけど、正常系と異常系の分岐はたいてい正常系の発生確率が高いためこちらに賭けるのよ。で、ロジックの多くはこの手の分岐でしょ、っていうことを想定して先読みのアーキテクチャになっている。

ということをその文献も (独特の表現で) 言いたいのではないかと思うのだが。

もれも最近の CPU がわかっているわけではない。80286 〜 386 時代でアップデート止まってる。
0726デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
垢版 |
2019/11/16(土) 02:40:12.76ID:m6RZqer/0
>>720
>>724の75:20というのは間違いで、正しくは75:25でした。失礼しました。

ところで、ランダムに50:50ではなくプラスとマイナスを交互にしたら
もっと遅くなるかと思いきや、むしろ75:25よりも少し早いくらいになりました。
(ランダムの場合も交互の場合もあらかじめ入力データを配列に格納してから
 計測を開始しているので、入力データの作成コストは結果に影響していないはずです)

どんな仕組みで先読みをしてるのかさっぱり分かりませんが、
とにかく予測ができないのが遅くなる一番の原因のようです。
0727デフォルトの名無しさん (ワッチョイ e954-+sLU)
垢版 |
2019/11/16(土) 02:46:49.96ID:NxgYCWhy0
>>724
そうですね、データ依存なんでパイプラインと先読みが原因だと個人的には思います。

そういえば思い出しましたが、if else ブロックの片方に固定的に賭けると必要以上に大負けすることがあるため、条件分岐を何度か通ったところで学習し、勝てる見込みのより高い方へ賭けるアーキ設計だったような気がします。

true : false = 100 : 0 or 0 : 100 に片方が大負けせず、同じ性能になったのはこの学習効果ではないかと。

モダン言語の進化の方向の一つに高級化があるのは、仰るとおり。低レイヤーの最適化はコンパイラと進化したハードウェアに任せ、コードは人間にわかりやすくして開発生産性を高めようということです。

もう一つの進化方向は Rust とか Go とか、低レイヤー向け言語を C++ よりわかりやすく、より安全にしようというものだと思います。
0728デフォルトの名無しさん (アウアウウー Sa45-CsEk)
垢版 |
2019/11/16(土) 03:34:45.34ID:KEmuW3Wza
>>725
失礼、例えばここにそんなことが書いてある
http://e-words.jp/w/%E6%8A%95%E6%A9%9F%E7%9A%84%E5%AE%9F%E8%A1%8C.html

でもこの通りだとしても>>723は的外れだねすんません。
「損はない」というのは並列ではなくシーケンシャルに実行した場合のコストを
上回ることはないって意味だと思う。

同じ100ステップでも素直に並列化できる部分が大きい100ステップの方が
低コストなのは当たり前の話でした
0729デフォルトの名無しさん (ワッチョイ e954-+sLU)
垢版 |
2019/11/16(土) 03:57:31.89ID:NxgYCWhy0
>>728
ありがとう。

この説明は失敗時のリカバリーがノーコストでできる環境を前提にしていると思う。
投機的実行をした面とは別の面を持っていて、そちらにすぐスイッチしてロジックを実行しつつ、その裏で失敗した面を同時並行で捨てられるような感じ。それが一般的かどうかはわからない。

複数面を持たず、失敗ステータスを捨てて (= クリアして)、その後に分岐別側のロジックを走らせるというようにシーケンシャルにリカバリーするのが一般的なのではないかなと思ったんだけどね。

最近のは複数面持ってるのかもしれない。ただ、複数面持っていると分岐ない時にリソースが遊んで無駄だからねぇ、分岐なくても普段からその面で並列演算すればいいって話になるよね。
0732デフォルトの名無しさん (ワッチョイ 69a0-+sLU)
垢版 |
2019/11/16(土) 10:49:58.51ID:42LkciGb0
>>730
全てわかっている人なんていないのだし、それぞれ知っていることを持ち寄って可能性をいろいろ検討してみるのが健全なやりとりなんだと思いますよ。

IL をうんぬんは知らない観点だったし、CPU アーキの話するのも 25 年ぶりくらいだったし、高級言語と C とアセンブリの使い分けを簡潔に整理してくれた人がいたので、とても勉強になりました。

>>731
ま、C# からはかなり離れてしまったね。
でも、電卓をバカにするものは電卓に泣くよ。AI もゲームも業務アプリも全てそのマイクロ電卓の組み合わせなんだから。高級言語の時代でも低レイヤーの動作原理を知っているに越したことはない。
0733708 (ワッチョイ 02b9-Ks/Y)
垢版 |
2019/11/16(土) 11:14:24.24ID:lqoaSlCM0
色々と教えていただきどうもありがとうございました。
とりあえず、下のような感じの結論でまとめたいと思います。

・UnitStep1が遅い原因はパイプライン処理における分岐先読みの失敗による制御ハザードだと思われる
・分岐の方向の入れ替わりが激しくてもそこに規則性があれば制御ハザードは起こりにくいようで、
 分岐先読みにおいて高度な学習が行われていることが伺える
・高級言語の目的を考えれば、開発生産性を優先してUnitStep1を選択することも十分にあり得る

UnitStep1の入力データをランダムに決定した場合の、±の割合に応じた実行時間の計測結果
http://iup.2ch-library.com/i/i2026606-1573870091.png

何かおかしなところがあれば指摘していただけると嬉しいです。
親切にしていただきどうもありがとうございました。
0735デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
垢版 |
2019/11/16(土) 11:44:37.21ID:lqoaSlCM0
>>734
お褒めいただきありがとうございます。
パイプライン処理はとても奥が深いようで完全に理解するのはなかなか大変そうですが、
データの割合に関するご指摘のおかげでわかりやすい計測結果も得られて私もとても楽しかったです。
あまりにもわかりやすすぎる結果のせいで今後しばらく条件分岐恐怖症になりそうですがw
0736デフォルトの名無しさん (ワイーワ2 FFca-/nAh)
垢版 |
2019/11/16(土) 12:23:55.13ID:HpU1Ehe+F
>>710
C4LglgNgPgAgzAAhgJgQYQQbwLACgEFICMAbAmAHbAICqFYwAysAKYAORAFJdQB4CUCALwA+BLwQihCAAwIA/AiIIQsgNx5CxMj1r0mrNsm5Vxg0Qk4SRYuEUEBqJWoR4AvkA===

個人情報漏れてね?
0750デフォルトの名無しさん (ワッチョイ eea7-iGNt)
垢版 |
2019/11/19(火) 18:50:59.68ID:wDZa4BoT0
WPF開発に使われるMVVMパターンについてですが、Viewは良いとしてViewModelとModelの役割分担についての理解がイマイチです
ModelではOnPropertyChanged();などの記述はするべきではないという理解で良いんでしょうか?
0757デフォルトの名無しさん (ワッチョイ 1310-QS5Z)
垢版 |
2019/11/21(木) 14:49:09.23ID:vYs/9NCN0
C#でQUEUEクラスを利用した際、Dequeue()後にメモリは残るのでしょうか?
EnQueue()とDeQueue()を繰り返しているのですが、(Countは0になる)
Visual Studioでメモリ使用量をみるとサイズがとても大きくなってるのですがこれはどういうことでしょうか?
0764デフォルトの名無しさん (アウアウウー Sa9d-927E)
垢版 |
2019/11/21(木) 15:36:34.05ID:2+YsLjv3a
>>761
ペンに特殊な仕掛けがあるわけじゃないと思うので、
ペンだろうが指だろうが同じだと思う
知らんけど

でも普通に静電容量式のタッチパネルでしょ?
0765デフォルトの名無しさん (アウアウウー Sa9d-927E)
垢版 |
2019/11/21(木) 15:39:50.86ID:2+YsLjv3a
一応Windows7からOSネイティブでタッチ操作に対応してるんだよね。

当時技術サンプルとして鯉が泳いでる池をタッチすると波紋が広がるスクリーンセーバーが
公開されてたけど、なぜかコードは非公開で意味ねえと思ったなw
0769デフォルトの名無しさん (ワッチョイ 5161-CJzu)
垢版 |
2019/11/21(木) 17:45:14.26ID:0fDEV4Sz0
>>764
ペンは電池式で何らかの仕掛けがあります。
良く知りませんが、恐らく「交番電界(周波数が低い電磁波とも言える)」を
出している可能性が高いです。
0771デフォルトの名無しさん (ワッチョイ 8901-o5/b)
垢版 |
2019/11/21(木) 18:08:29.79ID:2xdKb6kz0
テレパシーの実用化。
0772デフォルトの名無しさん (アウアウウー Sa9d-927E)
垢版 |
2019/11/21(木) 19:22:17.78ID:iJSjE21Ua
>>769
へー
静電容量式の原理から普通に考えればペン側に仕掛けが必要とは思えんけど、
よく分からんね。

接触しているかどうかの識別はCの大きさで判定するだけのはずだと思うんだけど
0775デフォルトの名無しさん (アウアウウー Sa9d-927E)
垢版 |
2019/11/21(木) 20:57:25.88ID:phtIa0Jsa
>>773
対応って言ったって要するに導電性があるだけだよw
だから100均でも売ってる

>>774
surfaceってペン「も」使える設計だよね?
0776デフォルトの名無しさん (ワッチョイ 93bd-AvZR)
垢版 |
2019/11/22(金) 00:36:21.37ID:k4KfXICB0
長い名前を持つクラスに、thisを返すメソッドがあるとします

 // 超長いクラス名
 class VeryLongLongClassName {

   // thisを返すメソッド
   VeryLongLongClassName Foo( ) {
     return this;
   }
 }

このとき、Foo()の定義につけるクラス名を省略、
あるいは置き換える方法はありますか?

たとえば以下のような形が理想です

 var Foo() { … } // 型推論っぽく書けるとか
 __CLASS__ Foo() { … } //自身のクラスを表す予約語とか
0778デフォルトの名無しさん (ワッチョイ 69a0-x9/g)
垢版 |
2019/11/22(金) 01:10:47.79ID:JIfSXtJz0
>>776
外部との境界に var 型推論はムリ。それやると型を差し替えたときに影響が甚大になるため、型推論はローカルでしか許されない。
using エイリアスディレクティブで短い別名付けるとよいのではないかな。
0779デフォルトの名無しさん (ワッチョイ 93bd-AvZR)
垢版 |
2019/11/22(金) 01:39:19.16ID:k4KfXICB0
ありがとうございます
ないですかー 残念
0781デフォルトの名無しさん (ワッチョイ 7997-Rk0C)
垢版 |
2019/11/22(金) 01:41:47.12ID:9t5OvAOe0
インタフェースとか継承を考えても、thisで型推論するのは無理じゃない?
0782デフォルトの名無しさん (ワッチョイ 93bd-AvZR)
垢版 |
2019/11/22(金) 02:06:03.92ID:k4KfXICB0
戻り値が特に必要ないメソッドはreturn thisにして繋げれるようにしておこうかなあと
return thisにするか同じクラスをnewするかはさておき
0783デフォルトの名無しさん (アウアウエー Sae3-QS5Z)
垢版 |
2019/11/22(金) 03:39:52.30ID:zCaqBpsza
VisualStudio2017を使用

Form1にsplitContainer1を上下に分割して全面に貼ってあり、splitContainer1の下段側にリッチテキストボックス1をドッキングさせて貼ってあります。
このリッチテキストボックス1が、ScrollBarsプロパティ:Both、WardWrapプロパティ:false

このリッチテキストボックス1に縦と横幅を超えるテキスト表示をした時、
縦のスクロールバーは普通に表示されるけど、水平のほうのスクロールバーが表示されなくなったのだけど何が原因と考えられるでしょうか?

・右キー押して自分でカーソルを右端まで動かせば一応画面のスクロールはさせられる
・以前はちゃんとスクロールバーが表示されてたはずなんだけどいつの間にか表示されなくなった?
0785デフォルトの名無しさん (ワッチョイ 8ba7-QS5Z)
垢版 |
2019/11/22(金) 10:12:54.94ID:NcGK5KJU0
xamlの質問になってしまいますが、全コントールアイテムのBorderBrushやForegroundの色を統一することって出来ないのでしょうか?
<Style TargetType="Button">
<Setter Property="BorderBrush" Value="Black"/>...
と一つ一つのコントロールを定義して回るしか方法はないのでしょうか?
0787デフォルトの名無しさん (アウアウウー Sa9d-927E)
垢版 |
2019/11/22(金) 11:05:21.71ID:fOeQA7sva
>>776
ファイルスコープの別名なら普通に可能。
グローバルに別名が欲しいと考えてるならそもそも何か考え方が根本的に間違ってる気がする
0789デフォルトの名無しさん (アウアウウー Sa9d-927E)
垢版 |
2019/11/22(金) 11:34:48.44ID:fOeQA7sva
>>788
いや誰が考えてもそういう(>>784)話ですw
それ以外にありえない
■ このスレッドは過去ログ倉庫に格納されています

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