日記

[Forms][C#]メニューに排他的にチェックをいれる

Mohmongar
C#でFormsを使ってプログラムする機会があって調べたメモ。メニューのあるアイテムの下層をひとつのグループとみなし、そのグループ中で一つだけチェックが入る前提で、メニューを選択した際にチェックをいれる処理を統一したもの。親menu1の下に子menu1_menu1,menu1_menu2,... があるとして、各メニューの処理時に同じCheckMenuExclusivelyを呼び出すことで排他的にチェックマークが入る。当然チェックを入れる以外の処理は別途必要。たぶん似たようなものはそこらに転がってるけど、子メニューを示すメソッドがItemsではなくDropDownItemsであったことため、しばし悩んだのでメモしておく。 void CheckMenuExclusively(object sender, ToolStripMenuItem upper) { foreach (ToolStripMenuItem item in upper.DropDownItems) { if (object.ReferenceEquals(sender, item)) { item.Checked = true; } else { item.Checked = false; } } } private void menu1_menu1_Click(object sender, EventArgs e) { CheckMenuExclusively(sender, menu1); }

[Forms][C#]BindingListでデータバインドする

Mohmongar
ひさしぶりにWindowds formsのプログラムをC#で作成中にコントロールにデータバインドをしようとしたら、ListBoxなど一部のコントロールでは<INotifyPropertyChangedを使った更新が効かないことが分かったので、BindingListで使用したのでメモ。(というか本来ListboxにバインドできるのはSelectedIndex ,SelectedItem ,SelectedValue,Tagだけらしい)。 ここでBindingListを使わずにtestclassを直にDataSourceにバインドすると、PropertyChangedがnullとなる。 t = new testclass(); t.display = "one"; testdata = new BindingList&lt;testclass&gt;(); testdata.Add(t); listBox1.DisplayMember = nameof(display); listBox1.DataSource = testdata; ついでによく忘れるので、INotifyPropertyChangedの書き方。 using System.ComponentModel; public class testclass : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string propertyName = "") { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } public string _display; public string display { get { return _value; } set { if (value != _display){ _display= value; NotifyPropertyChanged(nameof(display)); } } } } ほかにもいろんなやりかたがあるらしい。参考はこのページ「データ バインディング - .

スマホ充電台

Mohmongar
スマホの充電がいまいちおさまりが悪いため、USB充電ステーションを導入してみた。スマホやタブレットを並べて充電できるため、見た目がこじんまりと収まるのはGood。ただ電圧が不安定なのかAndroidのせいなのかわからないが、100%充電後に充電完了→消灯→・・充電完了→消灯を繰り返す。バッテリーにはよくなさそうなので、気が付いたら抜いている。

[Sniper Elite 4]Stability

Mohmongar
Sniper Elite 4で武器のUpgrade条件にStabilityというのがあるが、この解除条件である"50 Shoulder-Assisted Kills"がどうすればできるのか、ググってもよくわからなかったが、ふとしたことでわかった。コントローラの「LT」ボタンを全押しするとスコープを覗いて照準を合わせるのだが、これを半押しすると、銃を構えて肩越しに照準を合わせる形になる。こんなことに気づくまでだいぶ時間を費やした・・・

ffmpegで先頭何秒かをカット

Mohmongar
fmmpegで先頭何秒かをカット。-ssの順番、エンコード有無で精度が変わるようです。参考はこちら→FFmpegで素早く正確に動画をカットする自分的ベストプラクティス - Qiita。感謝。 ffmpeg -ss 5 -i inputfile -acodec copy -vcodec copy outputfile

Let's EncryptによるSSL化

Mohmongar
さくらレンタルサーバがLet's encryptによるSSL化に対応したので、導入してみました。コントロールパネルのドメイン設定から選択するだけなのでかなり簡単です。https化で転送速度が遅くなるかなとも思いましたが体感速度は変わりありません。常時httpからhttpsへ転送するのは.htaccessを修正、Wordpressの場合はプラグインのほうでできるようです。ただの備忘録サイトなのでSSL化するメリットはないのですが気分です。

異臭!PC復旧せず

Mohmongar
ようやくPCが落ち着いたので備忘録として記録しておきます。先日PCでネットサーフィン中に異臭がしてきました。最初は何の匂いわからず、どこともなく見回していましたが、ふとモニタ画面が一瞬暗転して、すぐ元にもどったのを見て「あ、これPCじゃね?」とはたと気づいたので、すぐ電源を断ちました。PCケースを開けてみると、煙こそありませんがやはりここが一番臭い。おそるおそる再度電源をいれてみましたが、ファンは回るが2度と立ち上がりませんでした。合掌。どこが壊れたのか、いろいろ予備部品を使って確認してみましたが、電源やビデオカードやHDDやメモリは問題なさそう、おそらくマザーかCPUだろうとまではしぼれましたが、ここからは交換部品がなく、別のマザーかCPUをもってきて試すしかありません。マザーはGIGABYTEのGA-Z68P-DS3で、CPUはi5-2300と6年前(たぶん震災前に近所のPCデポで購入)に組んだ自作PCで、いまとなってはこれに合うパーツを新たに買うのもなんなので、いっそのことマザーごとく組直すこととしました。それにしても壊れる時はいきなりくるもので、たまたまPC操作中に異臭→PCと気が付きましたが、レンダリング中とかで夜中に動かしっぱなしの時だったらけっこうやばかったです。それにこの時の異臭が服についてその日は取れなかったです。新マザーの話しはまた今度。

スプラトゥーン2逆襲

Mohmongar
スプラトゥーン2を発売日と購入という世のガチ勢な行為をしてしまいました。Amazonではなくセブンショップで1週間前くらいにセブンネットショッピングで予約して、当日にセブンイレブンで受け取りです。やはり本体とは違いソフトは品不足ではないようで。みんなダウンロード版のほうに流れてるのかな。立ち上げたらまずは更新データのダウンロードが始まるのは、ご愛敬。さっそくレギュラーマッチですが、さすがにみんなまだレベルは低いので、まあまあ子供は楽しんでやってます。でもあっというまに強者だらけになるんだろうなぁ。

Lode RunnerがPCに帰ってきた。

Mohmongar
古のLode runnerがPCに帰ってきた。いやあ懐かしい。昔、電気屋のPC98で遊ばせてもらったのもう数十年前となりました。頑張ってBasicで作ろうとした甘酸っぱい記憶がよみがえります。敵の追跡アルゴリズムがまた独特で再現がむずかしかった。ソース残ってないや。残念。

LANがよくオフラインになる

Mohmongar
LANが最近よく切れる。サイズが大きいファイルのダウンロードを行っているとよく失敗する。イベントログにはなにも残っていないので、ネットワークドライバ(Realtek製のRTL8111E)をみると最近の2017/4にMicrosoft製のドライバが入っている。たぶんWindows 10 のUpdateに合わせて更新されたと思われる。ドライバメーカーのサイトを覗いてみると6/30付けのWin10 Auto Installation Programがあったので、ダウンロードして更新。減ったか?たまに出てるが減った気がする。様子を見る。 2017.7.22 相変わらず切れる。7/18付けのRealtekにさらに更新してみる。→変わらん。SNPが悪さをする場合があるとネットで確認→「割込みモデレーション」を「無効」にしてみる。