.NET

ToolStrip上にあるコントロールのフォーカス

フォームがアクティブでない時に、ToolStrip上のボタンなどをクリックしてもフォームにフォーカスが移るだけでクリックされないので、それの対策。How to enable "click through" for .NET 2.0 ToolStrip and MenuStrip – Rick Brewster's blogずっと気持ち…

色選択ダイアログ

どうもいい具合の色選択ダイアログが出来ないのでPaint.NETの色選択フォームを丸ごと移植してみました。 なんかいい感じになった気がします。 各RGBHSVAのバーがPaint.NETコアのクラスを使っていたのでちょっと苦労しました。 トライ&エラーで必要最小限のコ…

TrackBarのカスタムドロー

TrackBarの棒部分の色を変えたかったので、カスタムドローに挑戦してみる。 まずシンプルにトラックの背景色だけを変えてみる。で、できたのがこれです。 namespace TrackBarTest { public class CustomTrackBar : TrackBar { [StructLayout(LayoutKind.Sequ…

Image.Save()でのエラー

一見正しく書いたつもりでもImage.Save()で画像を保存するときに例外が発生することがあります。 特に、ExternalExceptionで"GDI+ で汎用エラーが発生しました。"というメッセージの場合は原因が掴みにくく、ハマることがあります。 複雑な原因の場合もあり…

構造体をStreamに書き込む

ビットマップファイルを作ったりするときに必要ですが、ちょっと面倒です。構造体サイズ分のアンマネージメモリを確保し、そこに構造体をコピー。 さらにそこからbyte[]へコピーしてStreamに書き込んでいます。 public static void WriteStructToStream(Syst…

mlang.dllを使用した文字コード判別

2008/01/12 VS2008用も追加。 文字コードを判別する - .NET Tips (VB.NET,C#...) を参考にやってみようと思いましたが、パスの設定などがわからなかったので調べてまとめました。 で、ワンクリックでできるようにバッチファイルにしました。 VS2005 + .NET F…

ILMergeで"インデックスが配列の境界外です。"

2007/12/06 追記 2.0.7.1129 では直っているようです。 自作アプリと自作クラスライブラリ、海外製のライブラリをILMerge(v2.0.7.0228)でマージ使用としたところ C:\hoge>"C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /target:winexe /wildcards /out:…

PropertyGridでEnum型の値を任意の文字列で表示する

元ネタはぬるり。: EnumDisplayName 新しく自分で宣言する型の場合はこれでかなり楽になります。 ですが、既存の型については各値に属性を付けることができない(できるのかもしれませんがわからなかった)ので、これは自前でTypeConverterを作るしかないか…

デザイナでPictureBoxの子にコントロールを配置する

通常はこんなことをしなくてもPanelのBackgroundImageを使用すればいいのですが、PanelとPictureBox上で透過色のコントロールをマウスで動かしたときにPictureBoxの方が描画が速かったのでメモしてみます。 通常デザイナでPictureBoxの上にコントロールを配…

Panelの子を選択した時の自動スクロールを無効にする

Panel.AutoScrollがtrueの時に子コントロールにフォーカスが移動すると自動的にそのコントロールの表示位置までスクロールしてしまいます。 これはこれで便利なのですが、子コントロールをマウスで動かしたりするようなものを作る場合には邪魔になります。と…

高精度タイマー+匿名メソッド

.NET 2.0から匿名メソッド(デリゲート)というのがあり、 button.Click += delegate { }; みたいな書き方ができる というのを少し前に知ったのでメモ。 System.Threading.Timer timer = new System.Threading.Timer(new System.Threading.TimerCallback(del…

ListBoxのHeight

ListBox.Dock = Left をしてもなぜか下に隙間が… IntegralHeightがTrueだと自動でHeightをItemHeightの倍数に調整してくれるらしく、Falseにしたら隙間がなくなった。 ちょっと悩みました。

SourceGrid

DevAgeで公開されているオープンソースなグリッドコントロール。 だいぶ前にPSFのタグエディタを作ろうとしたときに見つけました。 当時は.NET 2.0に対応していなかったりで少し使ってみただけだったのですが、 最近みたら.NET 2.0に対応していたのでまた作…

色選択ComboBox

設定ダイアログでの色選択部品はどういうインターフェースがいいのかなあと考えつつ、とりあえずComboBoxを作ってみることに。 KnownColorをアイテムに表示しつつ、"参照..."アイテムを選択するとColorDialogが出るというの感じ。KnownColorはSystemColorを…

Flashの再生

EllMediaPlayerの拡張、ということでまずFlashを再生について調べてみました。 意外に簡単。 ツールボックスアイテムの選択 -> Shockwave Flash Objectを選択。 フォームに貼り付け。 flash.LoadMovie(0, filename); flash.Play(); Flashの右クリックメニュ…

.NETで静的リンク?

静的リンクとは少し違う感じがしますが、 ILMerge というツールで複数のアセンブリを一まとめにできるらしい。ということで試してみたところ、綺麗に一まとめになりました。今までは実行ファイルをexe一つにするために自作コントロールをメインアセンブリに…

Listの拡張

記事一発目、.NETネタで。 色々な場面で使うことが多いSystem.Collections.Generics.List<T>クラス。もう少し痒いところに手が届くように…ということで拡張して使っています。 using System.Text; using System.Collections.Generic; namespace MyClasses { pub</t>…