タグ

vb.netとTipsに関するkatowのブックマーク (296)

  • TreeViewのノードをDrag&Dropにより移動、コピーできるようにする

    TreeViewのノードをDrag&Dropにより移動、コピーできるようにするエクスプローラのフォルダがドラッグ&ドロップによりコピーや移動ができるのと同じように、ツリービューのノードをドラッグ&ドロップでコピーや移動できるようにしてみましょう。なお、ドラッグ&ドロップの方法に関する説明はこちらでしていますので、ここでは一切いたしません。 この方法について、「マイクロソフト サポート技術情報」の「[HOW TO] Visual Basic .NET アプリケーションにツリー ビューのドラッグ アンド ドロップ機能を追加する方法」「[HOW TO] Visual C# .NET アプリケーションにツリー ビューのドラッグ アンド ドロップ機能を追加する方法」でも紹介されているようですが、ここで紹介するコードはこれをさらに拡張したような感じになっています(このサンプルコードを書き終えてからこの

    TreeViewのノードをDrag&Dropにより移動、コピーできるようにする
  • シャローコピー と ディープコピー

    学歴IT エンジニア兼管理職です。ずっとリモートワーク中。 駆け出しはブラック企業で低年収でしたが、転職を繰り返して年収は 5 倍以上になりました。 年収はこれ以上増えても幸せ指数は増えませんので、趣味の時間を増やすため早期の半リタイアを考えています。 最高の配偶者、可愛い娘、ハンサムな息子と幸せな日々を送っています。 息子の将来の夢はゲーム実況者らしい。がんばれー^^。 前回の ICloneable と MemberwiseClone からの続きです。 シャローコピー (Shallow Copy) と、ディープコピー (Deep Copy) について書きます。 前回の記事で、System.Object.MemberwiseClone メソッドでクローン コピーする場合、 参照型のメンバについては、参照先のインスタンスそのものがコピーされるのではなく、 参照先を示すアドレスがコピーさ

    katow
    katow 2011/05/03
    やっぱりGeneric型はICloneableではないので、1個ずつコピーが必要だった。
  • ICloneable と MemberwiseClone

    学歴IT エンジニア兼管理職です。ずっとリモートワーク中。 駆け出しはブラック企業で低年収でしたが、転職を繰り返して年収は 5 倍以上になりました。 年収はこれ以上増えても幸せ指数は増えませんので、趣味の時間を増やすため早期の半リタイアを考えています。 最高の配偶者、可愛い娘、ハンサムな息子と幸せな日々を送っています。 息子の将来の夢はゲーム実況者らしい。がんばれー^^。 インスタンスの中身をコピーするには、大きく分けて 2 通りの方法があります。 ひとつが、インスタンス内のメンバを手動でコピーする方法です。 この方法は、Clone、Copy のような名前のメソッドを定義し、 その中で新規のインスタンスを生成し、既存のインスタンスからコピーすれば良いのです。 (C# だと読めない (読まない) 方が多いらしいので、VB で書いてみました) VB.NET Option Strict O

    katow
    katow 2011/05/03
    インターフェースの実装側のメンバ公開条件を変更できるなんて・・・知らんかった。デフォルトだと戻り値ObjectをPrivateにしてPublicに欲しい型のメソッドにつなげる実装例
  • ある型の値を別の型に変換(キャスト)する

    注意:ここではキャストによる型変換について説明します。ここで説明していない変換については、以下のページをご覧ください。 文字列を数値に変換する、数値を文字列に変換する日時(DateTimeオブジェクト)を文字列に変換する日時を表す文字列をDateTimeオブジェクトに変換する数値や文字列を列挙体に変換する キャストある型の値を別の型に変換する必要があるというケースはよくあります。例えば、Int32型(VB.NETではInteger、C#ではint)の変数にInt64型(VB.NETではLong、C#ではlong)の値を代入したい場合や、Object型の変数に格納された値を適当な型に変換したい場合などです。このような場合は、キャストにより型の変換を行います。 キャストは、VB.NETではCType関数で、C#ではキャスト演算子()で行うことができます。 VB.NETでは、Option Str

    ある型の値を別の型に変換(キャスト)する
    katow
    katow 2011/05/02
    TryCastで型変換の判定ができる
  • 自作クラス型を別の型にキャスト(変換)できるようにする

    注意:ここで説明しているVB.NETのOperatorステートメントは、.NET Framework 2.0以降でのみ使用できます。 自作のクラス(あるいは構造体)型を別の型にキャスト(変換)できるようにするには、VB.NETではOperatorステートメント、C#ではoperatorキーワードを使って、ユーザー定義型変換演算子を定義します。そして、VB.NETでは、暗黙の型変換(拡大変換)にWideningキーワードを、明示的な型変換(縮小変換)にNarrowingキーワードを付けます。C#では、暗黙の型変換にimplicitキーワードを、明示的な型変換にexplicitキーワードを付けます。 暗黙の型変換では、キャスト式を使用する必要ありません。明示的な型変換では、キャスト式を使用する必要があります。詳しくは、こちらをご覧ください。 早速ですが、ユーザー定義型変換演算子を定義する例を示

    自作クラス型を別の型にキャスト(変換)できるようにする
  • XmlDeclaration部分について(XML) - Visual C# - Visual Studio User Group

    ・どこかにアクセスできるプロパティがある? 例えば、XmlDocument から DocumentElement.PreviousSibling と辿ると XML 宣言である XmlDeclaration に行き着きます。もちろん、元々の XML で宣言がなかったら null になります。 ・なにかをTrueにすると自動的に生成するもの? 自動的には生成しません。手動で生成してください。XmlDocument にはその名の通りの CreateXmlDeclaration メソッドが存在します。ヘルプの CreateXmlDeclaration の項目にはサンプルコードも載っています。当然のことながら、既に XML 宣言が存在していたら挿入できません。

    katow
    katow 2011/04/23
    XmlDeclaration部分の取得方法。EncodingやVersionも取得OK
  • ユーザーがDataGridViewのセルに入力した値をセルの値に変換する方法を変更する

    注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 ユーザーがセルに入力した値をそのままセルの値にするのではなく、何らかの加工を施したものをセルの値にしたいという場合があるでしょう。または、ユーザーが入力した値をセルの値に変換する方法を、通常の方法ではなく、特別な方法により変換したいという場合もあるでしょう。そのような時には、DataGridView.CellParsingイベントを使用します。 例えば、"Column1"列のセルに入力された文字列を大文字にした値がセルの値となるようにするには、次のようにします。 'CellParsingイベントハンドラ Private Sub DataGridView1_CellParsing(ByVal sender As Object, _ ByVal e As DataGridViewCell

    ユーザーがDataGridViewのセルに入力した値をセルの値に変換する方法を変更する
    katow
    katow 2011/04/21
    CellParsingイベント→同一セル入力後にそのまま加工するときに使える、結果解析不要など設定できる
  • DataRowVersion 列挙型 (System.Data)

    例 次の例では、 メソッドを DataRowVersion 呼び出す前に の DataRow を AcceptChanges チェックします。 private static void CheckVersionBeforeAccept() { //Run a function to create a DataTable with one column. DataTable dataTable = MakeTable(); DataRow dataRow = dataTable.NewRow(); dataRow["FirstName"] = "Marcy"; dataTable.Rows.Add(dataRow); dataRow.BeginEdit(); // Edit data but keep the same value. dataRow[0] = "Marcy"; // Uncom

    DataRowVersion 列挙型 (System.Data)
    katow
    katow 2011/04/20
    DataRowVersionを用いて行の値を複数状態取得できる、DataRowのレベルでコミット前後の値をCurrent、Proposedできるのか
  • クリップボードに複数の形式のデータをコピーする

    クリップボードに複数の形式のデータをコピーするクリップボードに文字列だけをコピーする方法は「クリップボードに文字列をコピーする」で、画像だけをコピーする方法は「クリップボードに画像をコピーする」で、ファイルのみをコピーする方法は「クリップボードにファイルをコピーする」で紹介しています。しかし、例えば文字列と画像の両方のデータをクリップボードにコピーすることもできます。ここでは、このように複数の形式のデータをクリップボードに格納する方法を紹介します。 クリップボードに複数の形式に関連付けられたデータをコピーするには、まずDataObjectオブジェクトを作成して、そのSetDataメソッドでデータを追加し、最後にClipboard.SetDataObjectメソッドでクリップボードに貼りつけます。 文字列と画像、さらにファイル形式でデータをクリップボードに格納する例を示します。このようにして

    クリップボードに複数の形式のデータをコピーする
    katow
    katow 2011/04/18
    めんどうだが、複数データ形式はDataObjectにすべて入れてからSetする必要がある
  • エラー処理(例外処理)の基本

    Public Shared Function ReadAllText(ByVal filePath As String) As String 'ファイルを開く Dim sr As System.IO.StreamReader = System.IO.File.OpenText(filePath) '内容をすべて読み込む Dim s As String = sr.ReadToEnd() 'ファイルを閉じる sr.Close() '結果を返す Return (s) End Function public static string ReadAllText(string filePath) { //ファイルを開く System.IO.StreamReader sr = System.IO.File.OpenText(filePath); //内容をすべて読み込む string s = sr.Re

    エラー処理(例外処理)の基本
    katow
    katow 2011/04/18
    Catch ex as Exceptionしても、Throw exではなくThrowしたほうがお得(スタックトレースがクリアされない)
  • 第4回 継承を使うために知っておくべきこと

    オーバーライドより記述が簡潔なイベント ところで、Visual Studio .NET(以下、VS.NET)でプログラミングしたことのある方は、マウスがクリックされたときの処理は、OnClickメソッドをオーバーライドするような方法ではなく、「Clickイベント」を利用するのが普通なのでは? と思われたかもしれません。 実は、マウスのクリックなどのWindowsメッセージに対応した処理は、メソッドのオーバーライドだけでなく、「イベント」と呼ばれる機能でも記述することができます。 イベントというのはOOPの機能ではありませんが、.NETで導入されている便利な機能です。イベントの仕組みは簡単ではありませんが、それを利用するのは簡単です。イベントの機能を使えば、クリック・メッセージのようなメッセージ処理は非常に簡潔に記述できます。 NewFormクラスで、OnClickメソッドをオーバーライドせ

    第4回 継承を使うために知っておくべきこと
    katow
    katow 2011/04/18
    イベントの継承は、On~メソッドで行う
  • Adobe Community

    katow
    katow 2011/04/08
    CS5が、AciveXオブジェクトとして認識してくれず、CreateObjectに失敗する
  • VB開発者設定で「Debug」や「Release」などのソリューション構成を有効にするには?[VS 2008、VS 2005]

    VB開発者設定で「Debug」や「Release」などのソリューション構成を有効にするには?[VS 2008、VS 2005]:.NET TIPS 連載目次 Visual Studio 2005以降のIDEでは、初めて起動するときに表示される[既定の環境設定の選択]ダイアログで、「C#(Visual C#)」や「VB(Visual Basic)」などの開発者設定が選べる。これにより、IDEの動作方法を決める各種オプションが、開発者の種別に合わせて自動設定される。 例えば、C#では「Debug」や「Release」などのビルド方法を指定する「ソリューション構成」(以下、ビルド構成)が有効に設定されるが、VBではこれが無効に設定される(ちなみにVB開発者設定だけでなく、Visual C# 2005/2008 Express Editionなどでも、ビルド構成は無効になっている)。 ビルド構成が

    VB開発者設定で「Debug」や「Release」などのソリューション構成を有効にするには?[VS 2008、VS 2005]
    katow
    katow 2011/03/27
    必須の設定。
  • VB.NET:アプリケーション発行時「SignToolで、キーセットがありません」エラーが発生し発行ができない場合の対処方法

    「SignToolで、キーセットがありません」エラーの原因について エラーの発生原因としては、証明書絡みであることはすぐに分かりましたが、なぜ?という感じなので原因の詳細の説明はできない状態です。 「SignToolで、キーセットがありません」エラー発生時の対処方法 VB.NETで作成したアプリケーションをセットアップポイントに発行した際に「SignToolで、キーセットがありません」エラーが発生して発行ができない場合の対処方法を以下に記載します。 一応以下に説明する手順で解決はしましたが、正しい対処方法かはわかりません。 1.[スタート] - [ファイル名を指定して実行]をクリックする。 [名前]に "mmc" と入力する。 [コンソール1]画面が表示されるので、[ファイル] - [スナップインの追加と削除]をクリックする。 [スナップインの追加と削除]画面が表示されるので[追加]をクリ

    VB.NET:アプリケーション発行時「SignToolで、キーセットがありません」エラーが発生し発行ができない場合の対処方法
    katow
    katow 2011/03/19
    なんだかしらんが解決した。多謝!!(追記)Win7かVB2010か、そっちだとメッセージが違った(署名中にエラーが発生しました)
  • 「VB.NET からEXCELファイルにPDFを挿入したい。」(1) Insider.NET - @IT

    IT 会議室 Indexリンク Windows Server Insider Insider.NET System Insider XML & SOA Linux Square Master of IP Network Java Solution Security & Trust Database Expert RFID+IC リッチクライアント & 帳票 Server & Storage Coding Edge @ITクラブ Cafe VB業務アプリケーション開発研究 @IT SpecialPR

    katow
    katow 2011/03/18
    >OleObject = OleObjects.Add(FileName:="挿入したいPDFのパス") >という名前指定引数がVB.NETで使えることを初めて知った。
  • Microsoft Visual Basic 2010 Express でRelease - セッキーのメモ帳

    ググったけど、見つからなかったので、ここにメモメモ 1. 「メニュー」→「設定」→「上級者用の設定」にチェックを入れる 2. 「ツール」→「カスタマイズ」→「コマンドタブ」→「コマンドの追加」→カテゴリから「ビルド」を選ぶ→ソリューションの構成 3. 「ツール」→「オプション」→「プロジェクトおよびソリューション」→「ビルド構成の詳細を表示」 4. メニューにコンボボックスが表示されるはずなので、ReleaseかDebugを選ぶ 終わり!

    Microsoft Visual Basic 2010 Express でRelease - セッキーのメモ帳
    katow
    katow 2011/03/11
    なんだかExpressだとデフォルトでリリースビルドできない状態だった(ビルド、は実行できるがバイナリがbin/Releaseに作成されない)のが、これで解決
  • C#例外処理でのthrowとthrow exの違い - あおきのTechメモ

    C#の例外処理におけるThrowの扱い方の違いのメモ。 C#/VB.NETでは、「throw;」を使うほうが推奨されることが多いです。「throw ex;」を使うとそれまでの情報(スタックトレースやInnerException)がクリアされます。 以下は、その確認コードです。 //ゼロ除算エラーを発生させる関数 private void ZeroDivide() { int zero = 0; int err = 1 / zero; } //exを付けてThrowする関数 private void ThrowEx() { try { ZeroDivide(); } catch (Exception ex) { //exを付けて投げる throw ex; } } //ex無しでThrowする関数 private void ThrowOnly() { try { ZeroDivide(); }

    C#例外処理でのthrowとthrow exの違い - あおきのTechメモ
    katow
    katow 2011/03/09
    しらんかった…
  • VB.NET - Excel を起動または終了する

    COM を利用して Excel を操作するのにあたり、まずは起動と終了方法について熟知している必要があります。起動して終了するだけですので、Excel ブックがない (子ウィンドウがない) 状態で表示されますが、雰囲気だけでも掴めると思います。 Excel アプリケーションは、Excel.Application のインスタンスを生成し、Visible を True に設定することで表示されます。終了させる場合は Quit メソッドを使用しますが、その後に System.Runtime.InteropServices.Marshal クラスの ReleaseComObject メソッドを使用して、COM オブジェクトを解放しなければなりません。 COM オブジェクトを扱うことになります。必ず、COM オブジェクトの参照カウントを解放する をご覧ください。 VB.NET 全般 ' Excel.

    katow
    katow 2011/03/08
    普通に呼び出すと常にFalseで非表示で不都合がなかったのであえて表示させる方法は確認していなかった。が、改ページ制御の変更時にどうも表示させる必要がありそう。
  • VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)

    全角ダブルクォーテーションには、左右の向きの違う文字があります。 似て非なる文字も多いので要注意…。 Dim sb As New System.Text.StringBuilder() sb.AppendLine(ChrW(&H22) & vbTab & "Quotation Mark") sb.AppendLine(ChrW(&H201C) & vbTab & "Left Double Quotation Mark") sb.AppendLine(ChrW(&HFF02) & vbTab & "Fullwidth Quotation Mark") sb.AppendLine(ChrW(&H201D) & vbTab & "Right Double Quotation Mark") sb.AppendLine(ChrW(&H201E) & vbTab & "Double Low-9 Quo

    katow
    katow 2011/03/07
    全角ダブルクォートの印字が見事。
  • VB2005のフォントについて

    katow
    katow 2011/01/06
    知らんかった。FontクラスがTrueTypeフォントしか利用できないとの事