ふらっと 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/08/30(金) 22:58:41.75ID:m5yHWiCc0
>>497
private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
for (int i = 0; i < files.Length; i++)
{
string fileName = files[i];
textBox1.Text += fileName + "\r\n";
System.IO.File.Move(fileName, System.IO.Path.ChangeExtension(fileName, "bak"));
 }
}
これでいいでしょ
ボタンクリックでやりたいのならフィールドでファイルパス持たないと
499デフォルトの名無しさん (ワッチョイ d101-drPI)
垢版 |
2019/08/30(金) 23:12:12.27ID:euEksp6k0
>>498
できました、ありがとうございます
こんな簡単だったんですね・・・・・・
2019/08/30(金) 23:59:42.45ID:Nv4TyFgP0
>>498
重箱の隅で本質とは関係ないけど、
"\r\n"はEnvironment.NewLineの方が良いな
2019/08/31(土) 00:15:27.52ID:yACTwzu40
テキストボックスのテキストも環境の影響受けるんか?

おれは環境によらず出力一定のほうが安心する
2019/08/31(土) 00:24:05.20ID:8S6g8PTE0
どちらかと言うと定義済みの定数としてだな
2019/08/31(土) 02:02:25.00ID:XD/oUD8U0
コンソールとGUIの改行が同じという保証なんて無いんだが
2019/08/31(土) 04:03:11.60ID:5bIs7pBL0
>>503
同意
2019/08/31(土) 08:13:13.94ID:auI6O9iK0
JSONを扱いたいのですが.NET標準機能では
JSON.NETにあるJsonPropertyのような変数名とは別の名前で
出力できるような機能は無いでしょうか?
2019/08/31(土) 08:26:54.85ID:/xXRK3gd0
>>505
DataContractJsonSerializer使って
[DataMember(Name="別の名前")]
とか?
2019/08/31(土) 08:38:53.92ID:auI6O9iK0
>>506
うぉぉぉ
できました。ありがとうございます!
508デフォルトの名無しさん (ワッチョイ d101-drPI)
垢版 |
2019/08/31(土) 15:26:10.82ID:pxkHJ9ge0
クロームにURL開かせるプログラムって作れるのかな
509デフォルトの名無しさん (ワッチョイ d101-drPI)
垢版 |
2019/08/31(土) 15:34:24.66ID:pxkHJ9ge0
標準ブラウザで開くのがありました
2019/08/31(土) 17:12:50.00ID:3HNIz5om0
引数にURLを入れて起動すればいいんじゃない?
やったことないけど
2019/08/31(土) 18:30:37.90ID:OVCgKeDNa
headlessでできるよー
2019/08/31(土) 18:34:41.41ID:lSinYyRY0
>>510
どんなブラウザでも、標準でそうなってる(べき)と思ってる。meも
2019/08/31(土) 20:59:16.96ID:DOQSWUJb0
start url
って叩きゃ標準ブラウザが立ち上がるでしょ
引数ってブラウザのexeパス調べてそこに渡すの?
OSが知ってんだからOSにぶん投げればいいだけじゃん
2019/08/31(土) 22:02:09.86ID:3KJgwSNk0
>>508
Seleniumだな、それこそ。
2019/09/02(月) 13:12:29.24ID:x5YZ9uix0
Span<T>をコレクションに貯める事って出来ないんでしょうか?
受け取ったbyte[]から一部のみを必要としていますが、startIndexとlengthを一々記録するのも面倒であるため、現状は新たにnew byte[length]を作りコピーをして貯めています
別にこれでも全く困っていませんが、あんまりスマートではない気がしているので元のbyte[]を.AsSpan(startIndex, length)したものをコレクションに貯められればスッキリするのですが
2019/09/02(月) 13:30:51.46ID:DTXhuRLF0
できないよ
array[3..7]とかでSliceするとか元の配列を使うならArraySegment<T>使うとか
517デフォルトの名無しさん (アウアウウー Sa55-HWcK)
垢版 |
2019/09/02(月) 14:07:32.18ID:/BuOMso5a
へーSpanってそんな制約があるのか知らんかった
https://stackoverflow.com/questions/52484998/the-type-spanchar-may-not-be-used-as-a-type-argument
2019/09/02(月) 14:41:25.59ID:ZSYwkq3t0
>>508
例えば、Ruby, Selenium Webdriver なら、

下のファイルを、test.rb とすると、端末で、
ruby test.rb "ここにURL"
と入力すると、引数がARGV[0] に入ってくる

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new

options.add_argument('--headless')
options.add_argument('--disable-gpu')

driver = Selenium::WebDriver.for :chrome, options: options

driver.navigate.to ARGV[0] # URL
2019/09/02(月) 17:47:47.05ID:btOIY8sya
>>515
MemoryExtensions.AsMemory()を経由してSystem.Memory<T>を管理するのはどう?
2019/09/02(月) 22:24:59.33ID:yMcQzedZ0
>>518
C#で書かないならスレチ
2019/09/03(火) 00:14:45.15ID:nBDYMOwL0
なんで突然ruby?
2019/09/03(火) 00:20:55.08ID:UWVASv0T0
>>521
ソイツはいくつかのスレタイにRuby禁止といれることになった元凶だから、考えるだけ無駄よ
2019/09/03(火) 04:53:21.49ID:uBbuO65f0
これもう半分まつもとゆきひろだろ
2019/09/03(火) 07:44:05.39ID:ZfMnDhcZ0
Matzから分離した闇の半身か何か(ダークファンタジー感)
525デフォルトの名無しさん (ワッチョイ d101-drPI)
垢版 |
2019/09/03(火) 15:02:01.60ID:qa0OGce90
zipファイルのパスワード総当たりのコードってどこかに落ちてたりしません?
526デフォルトの名無しさん (アウウィフ FF55-ca7b)
垢版 |
2019/09/03(火) 15:23:56.69ID:gWEsYspAF
ム板なんだし自分で書いても大した手間じゃないだろ
2019/09/04(水) 23:01:10.22ID:YAGCYgl00
ラプラス使ったほうが早い
2019/09/04(水) 23:19:14.03ID:+3gE1skmF
ラプラス変換関係ないだろ
2019/09/04(水) 23:23:33.02ID:YAGCYgl00
フリーソフトなんだけど(´・ω・`)
2019/09/05(木) 08:24:49.80ID:cdpeKhxuM
ラブプラスに見えたし
2019/09/05(木) 12:39:28.85ID:mWzCSlDu0
頭がc
胴体がDelphi
尻尾がJava

これはなんという生き物か?
2019/09/05(木) 12:52:58.36ID:IuZ8kmLDd
メインフォームと5つボタンがあるサブフォームあります。

サブフォームで押されたボタンをメインフォームに渡す方法として、下記のようなことが書いてあります。

「サブフォームの呼び出し時にメインフォームのインスタンスをサブフォームの変数に渡すか、もしくは Ownerプロパティを設定し、サブフォームにメインフォームのインスタンスを伝える必要があります。」

これ循環参照にならないのですか?
owner プロパティならフレームワークでうまくやってくれそうですが、そうしないなら典型的な循環参照でメモリにいつまでも残るように見えます。
2019/09/05(木) 12:57:57.83ID:IuZ8kmLDd
>532のコードで気になった部分

public FormMain() {
InitializeComponent();
fs = new FormSub();
fs.formMain = this;
}

private void button1_Click(object sender, EventArgs e) {
fs.Show();
}
2019/09/05(木) 13:07:57.99ID:/TG+lkXnd
昔のVBとかじゃないから
参照カウント方式とかじゃないから
大丈夫だよ
2019/09/05(木) 15:05:44.19ID:olW2Z8c3M
>>533
循環になってないやん
相互参照になってるだけ
2019/09/05(木) 15:11:39.37ID:MYIgyYNAM
>>535
相互参照⊂循環参照
2019/09/06(金) 07:39:44.27ID:ON7V4Cum0
awaitの仕組みって面白いな
プログラムは逐次実行と思い込んでいたから最初戸惑ったけど
プログラムの可読性を上げつつ非同期が書ける仕組み
2019/09/06(金) 12:21:39.70ID:5uKlWCRxp
バカ、逆に非同期の仕組みが分かりにくい事になってて最悪だわ。
若い奴らはある種のおまじないとしか思って無いぞ。
だからサンプル通りに書いたら動いたで思考停止してるわ。
2019/09/06(金) 12:23:25.42ID:5uKlWCRxp
だったら最初から完全に隠蔽しちまえばいいのにそれも出来ない半端な言語だよな。
2019/09/06(金) 12:27:55.87ID:RjtqJRZu0
>>537
async/awaitはとてもいいよな
2019/09/06(金) 12:36:51.77ID:dfZG2SkRd
>>539
へー半端な言語が大増殖してるねよかったね
2019/09/06(金) 13:29:27.52ID:TB1/9ae/0
ものすごく細かく気にする価値のないであろう上で質問させてください。
下記のようなコードではColorを予め変数として保持していますが、ColorではなくSolidColorBrushごと変数として持っておいた方が良いと思うのですが違うんでしょうか?(Colorの各変数は下記のConvertメソッドでしか使われていません)

private Color redColor = Colors.Red;
private Color blueColor = Colors.Blue;

public object Convert(object value)
{
switch ((int)value)
{
case 0:
return new SolidColorBrush(redColor);
default:
return new SolidColorBrush(blueColor);
}
}
2019/09/06(金) 13:30:16.71ID:I5nGSvp60
Occam 呼んだ〜
2019/09/06(金) 13:38:31.81ID:qBxw88Xh0
Convert呼び出した側がOpacityとか勝手に変えたりすることがないことが明らかなら
SolidColorBrushで持っててもいいよ
2019/09/06(金) 13:43:03.96ID:TB1/9ae/0
>>544
上記のコードは色以外は初期化したいっていう意図だったんですね
理解出来ました、どうもありがとうございます。
546デフォルトの名無しさん (スップ Sd62-aA0m)
垢版 |
2019/09/06(金) 20:41:34.27ID:QErA9RfTd
return HttpResponseMessage {
StatusCode=HttpStatusCode.InternalServerError


これでクライアントにレスポンス返しても、クライアントで受け取ったレスポンスコードが200になるんだが、どうすりゃ良い?
2019/09/06(金) 23:59:27.95ID:2XeZAy8C0
short lo = 500;
short hi = -1;
int value = hi << 16 & lo;

上記のプログラムでvalueに期待する結果が格納されません。
valueの右辺へおかしいところありますか?
2019/09/07(土) 00:04:12.02ID:1iyY1sdc0
まず期待結果を教えろよ
脳内に格納したままで喋るな
549デフォルトの名無しさん (アウアウウー Saa5-DVh7)
垢版 |
2019/09/07(土) 00:35:07.80ID:lng4b11Wa
ぶっ飛んでるねw
2019/09/07(土) 00:47:49.03ID:lKqYze8d0
>>547
なんとなく&(and)と|(or)を間違えてる気がするけど、期待値書いてくれなきゃ分からんねw
2019/09/07(土) 01:10:23.93ID:ClfuNVBY0
>>547
ビット演算?をしてる割には
unsignedじゃないのが気になった
2019/09/07(土) 01:21:40.06ID:SOW3zbb30
C派生のシフト演算子ってビット演算子よりも優先順位低いんじゃなかったか?
C#で入れ替わったのかもしれんが
553デフォルトの名無しさん (アウアウウー Saa5-4tq8)
垢版 |
2019/09/07(土) 01:30:36.24ID:spGdC07na
型変換か?
2019/09/07(土) 01:31:47.20ID:l9Sxm6Vo0
>>552
docsに演算子の一覧と優先順位がある
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/
2019/09/07(土) 01:52:37.97ID:lKqYze8d0
>>552
逆だぞ
Cの時から
2019/09/07(土) 01:57:56.73ID:7Z6eBjmW0
?はもっと上げてほしい
2019/09/07(土) 01:58:53.26ID:7Z6eBjmW0
じゃなくて??
2019/09/07(土) 11:12:31.90ID:53qID/ifa
async/await、読みやすいし書きやすいけどな。
559デフォルトの名無しさん (ワッチョイ 8990-uegj)
垢版 |
2019/09/07(土) 11:14:11.92ID:LlCffhcK0
https://www.youtube.com/watch?v=O8ucIQA829w
Introduction into StockSharp training course

どうこれVisual Studioってこんなに速く作れるの?
自分で自動売買ソフト組めるってすごくね?
2019/09/09(月) 13:42:14.17ID:mFi2C/Ml0
クラスの継承について分からくなってしまったので教えて下さい。
以下のプログラムを実行すると、コメントの通り、False, True と表示されます。

[STAThread]
static void Main(string[] args)
{
  var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
  var folderItems = new Shell32.Shell().NameSpace(desktopPath).Items();
  Console.WriteLine(folderItems is Shell32.FolderItems2); // False と表示される
  Console.WriteLine(folderItems is Shell32.FolderItems3); // True と表示される
}

Shell32.FolderItems3 は Shell32.FolderItems2 を継承しているので
2つ目が True なら必ず1つ目も True になると思っていたのですが、
これはどのようなことが起こっているのでしょうか。

FolderItems2 object
https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems2-object

FolderItems3 object
https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems3-object

.Net Framework 4.7.2 でコンパイルし、Windows 10 Pro で実行しました。
よろしくお願いいたします。
2019/09/09(月) 13:57:18.69ID:+ClizqJ4d
下記 は子フォームから親フォームへのデータ引き渡しのサンプルです。
ShowDialog(); の戻り値を使ってないのですが、ここがよくわかりません。

static public List<object> ShowForm2(List<object> argObjs) {
using (Form2 subForm = new Form2(argObjs)) {
subForm.ShowDialog(); // 戻り値は?
return subForm.resultObjs;
}
}

現在はデータの受け渡しは ShowDialog(); で表示、DialogResult を受け取り、これで処理を分岐。
これだと呼び出し側が少し膨らむと思って探していたサンプルが上のやつです。
562デフォルトの名無しさん (ワッチョイ ed7c-p7Vf)
垢版 |
2019/09/09(月) 14:01:51.48ID:FLVXg6p/0
>>560
type of
2019/09/09(月) 14:25:45.50ID:wj5pBZXU0
>>561
それだけじゃ何とも言えないけど
ダイアログがキャンセルされたかどうかもresultObjsに含んでる
またはキャンセルされたかどうかは重要ではない
のどっちかでDialogResultは不要と考えたんじゃね
あとはただのチェック忘れか
2019/09/09(月) 14:33:19.47ID:+8Zg4WGY0
showdialogはあくまでサブフォーム表示中に
処理を進めないためだけに使っていて
表示したサブフォームがOKもキャンセルもない作りなら
返り値を使う必要がないんだろう

例えばファイルの検索処理とその経過を表示するだけの
サブフォームだったりするんじゃないかな
565デフォルトの名無しさん (アウアウウー Saa5-DVh7)
垢版 |
2019/09/09(月) 14:44:41.43ID:y33/yVcMa
>>560
FolderItems2とかFolderItems3はあくまでVSによって作られた
ラッパークラスなんだと思うけど、たぶんこのラッパークラスには
元のCOMの継承関係は反映されないんだろう。

知らないけど。
2019/09/09(月) 14:54:29.42ID:mFi2C/Ml0
>>562
レスどうもありがとうございます。
申し訳ないですが、おっしゃりたいことが理解できませんでした。

>>565
レスどうもありがとうございます。
>>560 で貼り付けた URL は不適切で、
本来は以下の URL を貼り付けるべきでした。
申し訳ないです。

FolderItems2 Interface
https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems2

FolderItems3 Interface
https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems3

この .Net の説明を見てもやはり継承関係はあるようですし、

if (folderItems is Shell32.FolderItems3 folderItems3)
{
  Shell32.FolderItems2 folderItems2 = folderItems3;
}

のようなコードもコンパイルエラーにならないので、
継承関係があることは間違いないと思います。
また何かお分かりのことがあれば教えていただけると嬉しく思います。
よろしくお願いいたします。
2019/09/09(月) 15:06:55.45ID:wj5pBZXU0
COMにおける継承はメンバを引き継ぐという意味であってキャスト可能かどうかは別の話だから
.NETのコード上で明示的または暗黙的にCOMオブジェクト(のラッパ)をキャストした場合
QueryInterfaceが呼び出されてそのインターフェイスに変換できるかどうかオブジェクト自身に問い合わせる
だから共通型システム的には問題ない暗黙的キャストでもその下のQueryInterfaceで拒否される可能性がある
2019/09/09(月) 19:12:21.94ID:ko6k1+RqM
正規表現を教えてください。
先頭一文字は大文字アルファベット、
次の一文字は大文字アルファベットかスペース、
残り五文字が数字、です。
文字数は多すぎても少なすぎてもダメてす。
2019/09/09(月) 19:34:55.30ID:N7SL81rE0
[A-Z][A-Z\s]\d{5}
2019/09/09(月) 19:51:19.13ID:P/8qmdeQ0
C#でdxfファイルを読み込んでどんなCADデータかなと表示するにはどんな方法がありますか?
2019/09/09(月) 19:51:40.30ID:+ClizqJ4d
>>563
戻り値使わないとエラーでビルドできないと思ったんですが、こんな書き方あるんですね。
2019/09/09(月) 19:58:03.26ID:ko6k1+RqM
>>569
ありがとうございます!
できました!!
2019/09/09(月) 19:58:22.06ID:8qRxx3SUa
>>570
Autodeskのサイトからviewerが落とせたと思うがそれ使うんじゃダメなのか?
C#を使って何か独自のことがしたいの?
2019/09/09(月) 20:38:09.86ID:/GXaCKPOd
>>570
自力でレンダリングしてるらしきサンプル見つけた
https://www.codeproject.com/Articles/156522/DXF-Import-NET-Read-and-View-AutoCAD-Format-Files
2019/09/09(月) 21:02:37.25ID:gB0pdJ5j0
>>570
結構大変。DWGならlibreDWGってライブラリーがある
2019/09/10(火) 22:30:01.75ID:/j9k/Fivd
>>573
最終型は建築のキープランってものがあって、そこに無数の符号という記号が丸の中に書いてあるんだけどそこを色塗りをしたい。

>>574
ありがとうございます。
難解過ぎてゆっくり休みの日にでも読んでみます。

>>575
やっぱ大変そうですよね。調べてもなかなか...


C#スレはあったかいな。ありがとうございます!
2019/09/11(水) 00:00:22.11ID:1SzE9pLa0
一般人「ウィンドウ」
キモオタ「フォームがーーー」
578デフォルトの名無しさん (ワッチョイ 8990-uegj)
垢版 |
2019/09/11(水) 18:58:32.68ID:YXyi8nZ+0
フォームってなに?泡?
2019/09/12(木) 08:36:47.62ID:XbTCqLqm0
c#は食わず嫌いだったけど使ってみたら案外良かった
使いやすいように改良してるんだな
2019/09/12(木) 11:25:52.65ID:QIiZhm2T0
コントロールのタイマーの質問なんですが
private void Timer1_Tick(object sender, EventArgs e)
{
  MyClass myClass = new MyClass(this);

  myClass.//クラスの処理いろいろ

}
こう書くと毎回クラスが初期化されてしまいます
タイマー内で同じクラスのインスタンスを使い続けたい場合どのように書けばいいのでしょか?
2019/09/12(木) 11:31:00.31ID:AZGZd9Ny0
myClassをメンバ変数にする
2019/09/12(木) 11:40:42.95ID:2zGYYD27p
myClassなんて再利用性が皆無なネーミングすんなよ。
2019/09/12(木) 11:45:28.48ID:joMf8nOja
>>582
説明のための命名だろうよ
2019/09/12(木) 12:10:59.94ID:V+BKjeIEM
発達はコンテキストが想像できないから…
2019/09/12(木) 13:44:13.80ID:j3ZoG8EK0
>>582
aho
586デフォルトの名無しさん (アウアウウー Sa63-THJG)
垢版 |
2019/09/12(木) 14:02:29.31ID:0aQt/zFJa
>>580
タイマーのイベントハンドラを消して、適当なタイミング(例えばFormのLoadイベントとか)で
private void Form1_Load(object sender, EventArgs e)
{
var count = 0;
timer1.Tick += (snd, ea) =>
{
Console.WriteLine($"count = {count++}");
};
}

でもこれだとイベントの購読解除ができないので注意
っていうか、ジョークだから真に受けないでw
2019/09/12(木) 20:25:20.03ID:QIiZhm2T0
>>581
レスサンクス、そもそも宣言しないってことですか
それもアリかも、今回はインスタンス1個で済みそうだし

>>586
レスサンクス、むむむ、どうなるん?

>>582
めっちゃわかりやすいし
2019/09/13(金) 14:33:13.49ID:FohQxIv6d
>>587
コンストラクタかTickイベント(初回のみ)でTimerのTagプロパティにMyClassインスタンスを設定
senderからTagに設定されているインスタンスを取得して利用するってやり方もある

1タイマー1MyClassって感じの設計ならこっちの方がいいかもね
2019/09/13(金) 16:09:57.39ID:GqasltTgM
再利用性のないクラスの名前に拘り過ぎるのは
効率的に無駄だなと感じる

ライブラリ用のクラスは拘るけどね
2019/09/13(金) 17:07:26.51ID:zz4VRjti0
>>588
レスサンクス
だけど考えても理解できませんでした
2019/09/13(金) 17:17:29.19ID:GqasltTgM
これでいいじゃない

private MyClass myClass = new MyClass(this);

private void Timer1_Tick(object sender, EventArgs e)
{

  myClass.//クラスの処理いろいろ

}
592デフォルトの名無しさん (ワッチョイ 9f90-bRiQ)
垢版 |
2019/09/13(金) 17:23:20.15ID:65eTAicb0
マイコラスの嫁がかわいい
2019/09/13(金) 17:47:41.70ID:FohQxIv6d
>>590
コンストラクタで、
Timer1.Tag = new MyClass(this);

イベントで
var myClass = ((Timer)sender).Tag as MyClass;

コンストラクタで作ったインスタンスがTimer1のイベントで使えるようになる
これで理解出来そう?
594デフォルトの名無しさん (アウアウウー Sa63-THJG)
垢版 |
2019/09/13(金) 17:49:44.94ID:XXPMNkq8a
>>590
たぶんこう
var mc = (timer1.Tag ?? (timer1.Tag = new MyClass())) as MyClass;

でもこんなアホなことやったらあかんw
2019/09/13(金) 17:59:46.24ID:FohQxIv6d
捕捉でsenderの扱いに馴染みがなくて分かりずらいなら
var myClass = Timer1.Tag as MyClass;
って直接コントロールを見てもいいかな

10個のタイマーでそれぞれクラス作るとかだと、メンバに持つのが嫌になるからそういう時に便利
2019/09/13(金) 21:09:16.91ID:zz4VRjti0
>>591
サンクスです、やってみました
//キーワード 'this' は現在のコンテキストでは使用できません。
thisがなければいけるのですが、

>>593
サンクスです、コンストラクタってMyClassでしょか?
Timer1.Tag = new MyClass(this);  //thisが受け付けてもらえません
仕方ないのでButton1_Clickに置きました
var myClass = ((Timer)sender).Tag as MyClass;  //myClassがNullになります
var myClass = Timer1.Tag as MyClass;   //こっちもNullになります

>>594
サンクスです、うまく動きました
でも正直あまり理解できてません

注:理解するのに時間がかかります
2019/09/13(金) 21:48:16.79ID:PFGdVlPv0
windows form で背景色を白から青にジョジョにアニメーションで変化させるには?
今のところコードは下記です。

void timer_Tick(object sender, EventArgs e){
// 白 255,255,255 // 黒 0,0,0
var a = textBox1.BackColor.A;
var r = textBox1.BackColor.R;
var g = textBox1.BackColor.G;
var b = textBox1.BackColor.B;

if (a == 255) { a = 1; }
var a = a + 25;
if (a >= 255) { a = 255; }

var r = textBox1.BackColor.R - 25;
if ( r <= 0) { r = 0; }

var g = textBox1.BackColor.G - 25;
if ( g <= 0 ) { g = 0; }

var b = textBox1.BackColor.B + 25;
if (textBox1.BackColor.B >= 255) { b = 255; }

textBox1.BackColor = Color.FromArgb(a, r, g, b);

// 終了条件チェック、
// 終了処理
}
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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