3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

.Net開発

(.Net)DataGridViewでリセットする方法

DataGridViewにDataTableをバインドし、ユーザがリセットボタンを押したタイミングで、初期値に戻すための方法です。 DataGridView のメンバでそれらしいを探してみたんですが、見当たりません。 仕方なく下記のような方法をとることとしました。(C#) DataTa…

(.Net)エクスプローラからのファイルドラッグを受け入れる

.Net のコントロールエクスプローラからのファイルのドラッグアンドドロップを受け入れ、ファイルのパスを取得するための方法です。 MS:Visual C# アプリケーションにファイルのドラッグ アンド ドロップ機能を提供する方法に書いてる内容そのままですが、参…

(.Net,ADSI)ADSIでドメインアカウント数が1000件超えると取得できない

.Net アプリで DirectoryEntry と SearchResultCollection を使ってActiveDirectory上のユーザを取得してるんですが、1000件を超えたアカウント情報が取得できません。 で、調べるとADSIの仕様のようですね。 解決策としては、DirectorySearcher.PageSize を…

(.Net)DataTableで集約(グループ化)をしたい

DataTableのデータをグループ化したかったんですが、ワンタッチでできる方法はないようです。 で、探してると、yan note: .NET DataTableをグループ化し集計するにはにどんぴしゃな方法が載ってました。 一旦 DataTable を DataView に変換して、DataView.To…

(.Net)現在のユーザが起動した特定のプロセスを終了する

特定のプロセスを終了する方法ですが、ユーザ関係なしに終了するなら、ここにある方法で簡単に行えます。 厄介なのは、これに「特定のユーザー」という条件がついたときです。 (ターミナルサーバで動かす予定なので、ユーザの指定ができないと、ログインしてる…

(.Net)String.Formatは結構使える

メッセージボックスを表示するときに動的な値を入れたい時があります。 今まであんまり使ったことないんですが、文字列への動的な値の埋め込みは、String.Format メソッド を使えば簡単にできるようです。(わざわざ文字列連結を使う必要が無いということです…

(.Net,OpenOffice).NetからCalc操作時に罫線(枠線)を引く

(.NetからOpenOfficeを操作する方法はを参照。OpenOfficeは3.2です。) .NetからCalcファイルを作成し、データを吐きたいんですが枠線を入れる方法がわかりませんでした。 最初、こちらを参考にしてディスパッチを使った方法を検討していました。 Calc で枠線…

(.Net,OpenOffice).Net から OpenOffice ドキュメントを操作する

.NetからOpenOfficeのドキュメントを操作するための方法です。 OpenOfficeには UNO(Universal Network Objects) というAPIが用意されてるのでそれを使って操作できるようです。 (OpenOffice内のマクロも UNO 経由で動いてるっぽいです) UNO を .Net Framewor…

(.Net)DataTableとXMLの連携

今まで小規模なスタンドアロンアプリケーション作ってた時は、データベースとして MDB を使ってきたんですが、簡単なマスタ程度の情報であればわざわざMDB使わなくても、XMLでできるんじゃないかと思ってやってみました。 まず、XMLの情報を DataTable とし…

(.Net)DataTableのリレーションPart2(コードだけでする方法)

(.Net)DataTable のリレーションPart1(デザイナを使った方法)の続きです。 コードだけでする方法 デザイナを使わずにリレーションを張るには、DataSet.Relations コレクションに、DataRelation インスタンスを追加すればいいようです。 こんな感じです。 テ…

(.Net)DataTableのリレーションPart1(デザイナを使った方法)

今まで使ったことないのですが、DataTableにはリレーショナルデータベースのように、リレーションが張れるようです。 ということで、ちょっと使ってみました。 デザイナを使った方法 下記のような構成テーブルのデータベース(今回はmdb)を用意し、VisualStud…

(.Net)DataGridViewCheckBoxColumnの高さ

DataGridvView で、DataGridViewCheckBoxColumn を使ってるんですが、チェックボックスが表示されません。 おかしいなぁと思い、いろいろ試してると高さ(RowTemplate.Height)が 17 以下だと見えなくなるようです。 フォントのサイズに左右されるのかもしれま…

(.Net)DataGridViewセルスタイルの優先順位

最初 DataGridView でセルの値によって背景変更する処理をしていました。 例えばTrueなら背景色を付け、Falseならスタイルを無しする下記のような感じです。(C#) //row は DataGridViewRow オブジェクト if ((bool)row.Cells["Column1"].Value == true){ row…

(.Net)DataGridView でカスタムクラスバインド時にスタイル設定後ソートすると...

カスタムクラスの List をバインドした DataGridView があります。 セル値を変更してまだDBに保存する前の状態の場合にセルの背景色を変え、保存したら元の背景色に戻すという動作を実現したいと考えてます。 CellValidated イベントや CellValueChanged イ…

(.Net)iTextSharpを使ってPDFを出力する

iTextSharpというライブラリを使うと簡単にできるようです。 ダウンロードはhttp://sourceforge.net/projects/itextsharp/files/itextsharp/からできます。 なかなかクラスライブラリの詳しい説明をしてくれているサイトがないんですが、Vector:iTextSharp …

(.Net,ADSI)グループにユーザアカウントを追加する

ADSIを使って、.Net からActiveDirectoryのユーザアカウントをグループに所属させる方法です。 下記のコードでできます。(C#) /// /// グループにユーザを追加 /// /// グループのパス(LDAP://ドメインコントローラ名/CN=グループ名,CN=Users,DC=domainname,…

(.Net)DataGridViewRow作成時に列名指定で値を入れる

最近、DataGridViewRow.CreateCells()というメソッドを知りました。 これは既存の DataGridView の列定義に基づいてセル(正確にはセルテンプレート)を作成してくれるもので、新規DataGridViewの行を作るときに便利そうです。 それで、下記のようなコードを書…

(.Net,ADSI)OUを取得する際のLDAP条件

ActiveDirectoryの情報を参考にする方法については、(.Net,ADSI)Active Directroyの情報を参照。を参考にしてください。 OUの一覧を取得するLDAP条件は下記でできるようです。(C#) // LDAP検索オブジェクトを作成 DirectorySearcher drSearch = new Director…

(.Net)カスタムクラスをDataGridViewにバインドしたときに、選択したレコードのオブジェクトを取得する

Listを DataGridView にバインドしてるんですが、ユーザーが行を選択した時に選択された行に対応するオブジェクト取得する方法です。 .Net にはそのためのプロパティが用意されていました。 それは、DataGridViewRow.DataBoundItemプロパティです。 詳しくは…

(.Net)サブスレッドからメインスレッドのFormを操作したい

マルチスレッドのプログラムで、重たい処理を行うサブスレッドから、フォームを操作する方法です。 調査するとフォームのコントロールはメインスレッドで動くようです。 なので、サブスレッドからそのままフォーム上のコントロールを触ると、例外が発生しま…

(.Net)フォームを非表示で起動する

タスクトレイに常駐するアプリケーションを作ってます。指定された時間おきにWEBコンテンツの更新を確認するツールなんですが、マルチスレッド構成とし、コンテンツの更新確認は別スレッドで行っています。 で、フォームを非表示にして起動する方法ですが、…

(.Net,ADSI)新規ユーザ作成直後のパスワードの変更とアカウント有効

.Net から ActiveDirectory の新規ユーザ作成すると、デフォルトでアカウントが無効となっています。 でも、userAccountControl フラグを設定して Commit すると有効になるようです。(もしくは、先にコミットしてから userAccountControl フラグ編集し、再度…

(.Net,ADSI)ActiveDirectoryでユーザアカウントの「ユーザはパスワードを変更できない」オプション設定

MSDN:UserAccountControl フラグを使用してユーザー アカウント プロパティを操作する方法にある UserAccountControl フラグで、PASSWD_CANT_CHANGE フラグ(0x0040) を使って仕様と思ったが、これは使えませんでした。 上記MSのページにも注意事項として「注 …

(.Net)DataGridViewへのカスタムクラスのバインド

(.Net)DataGridViewでバインドしたデータソースを変更してもグリッドには反映されない?でカスタムクラスのバインドについて書きました。 あの方法でバインドした DataGridView を下記のようにプログラム側から1行削除しようとしました。 public partial clas…

(.Net)DataGridViewでバインドしたListを変更してもグリッドには反映されない?

DataGridViewにカスタムクラスのListをバインドします。 そのカスタムクラスListにデータを追加したんですが、DataGridView に表示されません。 ちょうどソースとしてはこんな感じです。 public partial class Form1 : Form { //カスタムクラスのList。バイ…

(.Net)DataGridViewのCellFormattingイベント発生タイミングにやられた

(.Net)バインドされたDataGridViewでソートするとセルの色が元に戻るで、セルの値に基づいてDataGridViewのスタイルを変更するにはCellFormattingを使うべきだ と書きました。 ところが、CellFormattingイベントでは対応できない場面が出てきました。 問題と…

(.Net)DataGridViewでカスタムクラスをバインドした状態でソートを行う。

(.Net)DataGridViewでカスタムクラスをバインドした状態でソートを行う。 DataGridViewで、カスタムクラス(独自クラス)のリストをバインドすると、ソートができません。 ソートグリフ(列ヘッダに表示される▽△マーク)も表示されません。 例えば下記のようにな…

(.Net)List<T>.Sortの使い方

Listに Sort という便利そうなメソッドがあります。 で、例えば User クラスというオリジナルクラスの List を、Userクラス内のプロパティ値に基づいてソートしたいって時もあります。 これは、List.Sort メソッドでデリゲートを作成してやればいいようです…

(.Net,ADSI)ActiveDirectoryでMemberOf属性に Domain Users がない

.NetからADSIを用いてActiveDirectoryのユーザ情報を取ってきてるんですが、ユーザの所属するグループの値が入っている MemberOf 属性に Domain Users がいません。 逆に、Domain Users の member にはデフォルトは全ユーザがいないといけないのに、Not Set …

(.Net,ADSI)UserAccountControlフラグからアカウント有効無効等を調べる方法

ユーザのアカウント有効無効かを調べたいときは、Userオブジェクトの UserAccountControlフラグを見ればいいようです。 このフラグはビットフラグとなっており、「Active Directory ユーザーとコンピュータ」の「アカウントオプション」の各項目の値を保持してる…