DoboWiki
Top
> .NETプログラミング研究/42 をテンプレートにして作成
.NETプログラミング研究/42 をテンプレートにして作成
開始行:
#title(.NETプログラミング研究 第42号)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第42号 [#lbbc4a2b]
**.NET Tips [#uc68e5e1]
***フォームが一つしか表示されないようにする / VB6と同様に...
#column(注意){{
この記事の最新版は「[[フォームが一つしか表示されないよう...
}}
Visual Basic 6.0以前のユーザーにとって.NETプログラミング...
(フォーム名).Show
とするだけでフォームを表示できました。しかも、同じフォー...
これに対して.NETでは、newによりフォームのインスタンスを作...
このような事態を避け、VB6のようにフォームを扱えるようにす...
次に簡単なサンプルを示します。Form2というフォームクラスが...
#code(vbnet){{
'ただ一つのフォームのインスタンスを保持するフィールド
Private Shared _instance As Form2
'ただ一つのフォームにアクセスするためのプロパティ
Public Shared ReadOnly Property Instance() As Form2
Get
'_instanceがnullまたは破棄されているときは、
'新しくインスタンスを作成する
If _instance Is Nothing OrElse _instance.IsDispos...
_instance = New Form2
End If
Return _instance
End Get
End Property
}}
#code(csharp){{
//ただ一つのフォームのインスタンスを保持するフィールド
private static Form2 _instance;
//ただ一つのフォームにアクセスするためのプロパティ
public static Form2 Instance
{
get
{
//_instanceがnullまたは破棄されているときは、
//新しくインスタンスを作成する
if (_instance == null || _instance.IsDisposed)
_instance = new Form2();
return _instance;
}
}
}}
Form2のインスタンスにアクセスするには、Form2.Instance静的...
Form2.Instance.Show()
とするだけです(名前空間が異なる場合は、適当な名前空間を...
ところで、この問題の解決に、シングルトン(Singleton)デザ...
シングルトン及び、C#におけるシングルトンの実装に関しては...
-[[Microsoft patterns & practices Patterns - シングルトン...
-[[C# でのシングルトンの実装>http://www.microsoft.com/jap...
-[[Implementing the Singleton Pattern in C#>http://www.yo...
ここでは「C# でのシングルトンの実装」の「静的な初期化」で...
#code(vbnet){{
'基本クラスとして使用できないようにする
Public NotInheritable Class Form2
Inherits System.Windows.Forms.Form
'コンストラクタをPrivateにする
Private Sub New()
'(省略)
End Sub
'(省略)
'フォームのインスタンスを保持するフィールド
Private Shared _instance As New Form2
'フォームにアクセスするためのプロパティ
Public Shared ReadOnly Property Instance() As Form2
Get
Return _instance
End Get
End Property
End Class
}}
#code(csharp){{
//基本クラスとして使用できないようにする
public sealed class Form2 : System.Windows.Forms.Form
{
//コンストラクタをPrivateにする
private Form2()
{
//(省略)
}
//(省略)
//フォームのインスタンスを保持するフィールド
private static readonly Form2 _instance = new Form2();
//フォームにアクセスするためのプロパティ
public static Form2 Instance
{
get
{
return _instance;
}
}
}
}}
ところが上記のようにフォームクラスにシングルトンパターン...
この問題を解決するには、一つの方法として、フォームが破棄...
例えば、Form2クラスに次のコードを書き加えることにより、フ...
#code(vbnet){{
'フォームを閉じずに隠すようにする
Protected Overrides Sub OnClosing( _
ByVal e As System.ComponentModel.CancelEventArgs)
e.Cancel = True
Me.Hide()
End Sub
}}
#code(csharp){{
//フォームを閉じずに隠すようにする
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true;
this.Hide();
}
}}
***フォームのリサイズが終了するまでコントロールの大きさを...
#column(注意){{
この記事の最新版は「[[フォームのリサイズが終了するまでコ...
}}
Windowsフォームのサイズがユーザーにより変更でき、フォーム...
そのような場合の対策について、ニュースグループに適切な投...
-[[Newsgroups:microsoft.public.dotnet.framework.windowsfo...
ここでは2つの方法が紹介されています。まず一つ目が、Applic...
この方法によるコードは次のようになります。フォームクラス...
#code(vbnet){{
'OnResizeのEventArgsを保持する
Dim resizeEA As EventArgs = Nothing
'フォームのサイズが変更した時
Protected Overrides Sub OnResize(ByVal e As EventArgs)
If resizeEA Is Nothing Then
resizeEA = e
AddHandler Application.Idle, AddressOf OnIdle
End If
End Sub
'アプリケーションがアイドル状態になった時
Private Sub OnIdle(ByVal s As Object, ByVal e As EventArgs)
If Not (resizeEA Is Nothing) Then
'基本クラスのOnResizeを呼び出す
MyBase.OnResize(resizeEA)
resizeEA = Nothing
RemoveHandler Application.Idle, AddressOf OnIdle
End If
End Sub
}}
#code(csharp){{
//OnResizeのEventArgsを保持する
EventArgs resizeEA = null;
//フォームのサイズが変更した時
protected override void OnResize(EventArgs e)
{
if (resizeEA == null)
{
resizeEA = e;
Application.Idle += new EventHandler(OnIdle);
}
}
//アプリケーションがアイドル状態になった時
private void OnIdle(object s, EventArgs e)
{
if (resizeEA != null)
{
//基本クラスのOnResizeを呼び出す
base.OnResize(resizeEA);
resizeEA = null;
Application.Idle -= new EventHandler(OnIdle);
}
}
}}
2つ目の方法は、フォームのWndProcをオーバーライドし、WM_EX...
ニュースグループで紹介されているコードはそのまま使用して...
よって、正しく動作するコードは、例えば次のようになるでし...
#code(vbnet){{
'OnResizeをオーバーライドし、何もしない
Protected Overrides Sub OnResize(ByVal e As EventArgs)
End Sub
Private Const WM_EXITSIZEMOVE As Integer = &H232
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_EXITSIZEMOVE Then
'リサイズ終了後、コントロールを配置する
Invalidate()
PerformLayout()
End If
MyBase.WndProc(m)
End Sub
}}
#code(csharp){{
//OnResizeをオーバーライドし、何もしない
protected override void OnResize(EventArgs e)
{
}
private const int WM_EXITSIZEMOVE = 0x232;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_EXITSIZEMOVE)
{
//リサイズ終了後、コントロールを配置する
Invalidate();
PerformLayout();
}
base.WndProc(ref m);
}
}}
***MDI親フォームの背景色を変更する [#le4ddcb8]
#column(注意){{
この記事の最新版は「[[MDI親フォームの背景色を変更する>htt...
}}
WindowsフォームのIsMdiContainerプロパティをtrueにすること...
このクライアント領域には、実はMdiClientというコントロール...
まずフォームにあるMdiClientコントロールを探す次のような静...
#code(vbnet){{
''' <summary>
''' フォームのMdiClientコントロールを探して返す
''' </summary>
''' <param name="f">MdiClientコントロールを探すフォーム</...
''' <returns>見つかったMdiClientコントロール</returns>
Public Shared Function GetMdiClient( _
ByVal f As System.Windows.Forms.Form) _
As System.Windows.Forms.MdiClient
Dim c As System.Windows.Forms.Control
For Each c In f.Controls
If TypeOf c Is System.Windows.Forms.MdiClient Then
Return CType(c, System.Windows.Forms.MdiClient)
End If
Next c
Return Nothing
End Function
}}
#code(csharp){{
/// <summary>
/// フォームのMdiClientコントロールを探して返す
/// </summary>
/// <param name="f">MdiClientコントロールを探すフォーム</...
/// <returns>見つかったMdiClientコントロール</returns>
public static System.Windows.Forms.MdiClient
GetMdiClient(System.Windows.Forms.Form f)
{
foreach (System.Windows.Forms.Control c in f.Controls)
if (c is System.Windows.Forms.MdiClient)
return (System.Windows.Forms.MdiClient) c;
return null;
}
}}
このメソッドを使って、MDI親フォームのクライアント領域にフ...
(MDI親フォームのクラス内に記述するものとします。)
#code(vbnet){{
'MdiClientを探す
Dim mc As System.Windows.Forms.MdiClient = GetMdiClient(Me)
If Not (mc Is Nothing) Then
'背景色を変更し、再描画する
mc.BackColor = Me.BackColor
mc.Invalidate()
End If
}}
#code(csharp){{
//MdiClientを探す
System.Windows.Forms.MdiClient mc = GetMdiClient(this);
if (mc != null)
{
//背景色を変更し、再描画する
mc.BackColor = this.BackColor;
mc.Invalidate();
}
}}
***MDI親フォームの背景を描画する [#x939139e]
#column(注意){{
この記事の最新版は「[[MDI親フォームの背景を描画する>https...
}}
MDI親フォームの背景に画像を表示するには、フォームのBackGr...
MDI親フォームの背景を独自に描画する方法は、"vbAccelerator...
-[[vbAccelerator - Painting in the MDI Client Area>http:/...
vbAcceleratorで紹介されている方法は、Win32 APIを使う方法...
このように難しい方法を使わなくても、先に紹介したMdiClient...
以下に紹介するサンプルでは、MDI親フォームのクライアント領...
#code(vbnet){{
'背景に表示する画像
Dim back As New Bitmap("back.bmp")
'MDI親フォームのLoadイベントハンドラ
Private Sub ParentForm_Load(sender As Object, _
e As System.EventArgs) Handles MyBase.Load
Me.IsMdiContainer = True
'MdiClientの取得
Dim mc As System.Windows.Forms.MdiClient = GetMdiClient(...
'MdiClientのPaintとResizeイベントハンドラを追加
AddHandler mc.Paint, AddressOf MdiClient_Paint
AddHandler mc.Resize, AddressOf MdiClient_Resize
End Sub
Private Sub MdiClient_Paint(sender As Object, e As PaintE...
Dim mc As System.Windows.Forms.MdiClient = _
CType(sender, System.Windows.Forms.MdiClient)
'画像をクライアント領域にあわせて描画する
e.Graphics.DrawImage(back, mc.ClientRectangle)
End Sub
Private Sub MdiClient_Resize(sender As Object, e As Event...
Dim mc As System.Windows.Forms.MdiClient = _
CType(sender, System.Windows.Forms.MdiClient)
'Paintイベントを呼び出す
mc.Invalidate()
End Sub
''' <summary>
''' フォームのMdiClientコントロールを探して返す
''' </summary>
''' <param name="f">MdiClientコントロールを探すフォー...
''' <returns>見つかったMdiClientコントロール</returns>
Public Shared Function GetMdiClient( _
ByVal f As System.Windows.Forms.Form) _
As System.Windows.Forms.MdiClient
Dim c As System.Windows.Forms.Control
For Each c In f.Controls
If TypeOf c Is System.Windows.Forms.MdiClient...
Return CType(c, System.Windows.Forms.MdiC...
End If
Next c
Return Nothing
End Function
}}
#code(csharp){{
//背景に表示する画像
Bitmap back = new Bitmap("back.bmp");
//MDI親フォームのLoadイベントハンドラ
private void ParentForm_Load(object sender, System.EventA...
{
this.IsMdiContainer = true;
//MdiClientの取得
System.Windows.Forms.MdiClient mc = GetMdiClient(this);
//MdiClientのPaintとResizeイベントハンドラを追加
mc.Paint += new PaintEventHandler(MdiClient_Paint);
mc.Resize += new EventHandler(MdiClient_Resize);
}
private void MdiClient_Paint(object sender, PaintEventArg...
{
System.Windows.Forms.MdiClient mc =
(System.Windows.Forms.MdiClient) sender;
//画像をクライアント領域にあわせて描画する
e.Graphics.DrawImage(back, mc.ClientRectangle);
}
private void MdiClient_Resize(object sender, EventArgs e)
{
System.Windows.Forms.MdiClient mc =
(System.Windows.Forms.MdiClient) sender;
//Paintイベントを呼び出す
mc.Invalidate();
}
/// <summary>
/// フォームのMdiClientコントロールを探して返す
/// </summary>
/// <param name="f">MdiClientコントロールを探すフォーム</...
/// <returns>見つかったMdiClientコントロール</returns>
public static System.Windows.Forms.MdiClient
GetMdiClient(System.Windows.Forms.Form f)
{
foreach (System.Windows.Forms.Control c in f.Controls)
if (c is System.Windows.Forms.MdiClient)
return (System.Windows.Forms.MdiClient) c;
return null;
}
}}
**コメント [#q56fb68d]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2004-09-28 (火) 06:00:00,DOB...
終了行:
#title(.NETプログラミング研究 第42号)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第42号 [#lbbc4a2b]
**.NET Tips [#uc68e5e1]
***フォームが一つしか表示されないようにする / VB6と同様に...
#column(注意){{
この記事の最新版は「[[フォームが一つしか表示されないよう...
}}
Visual Basic 6.0以前のユーザーにとって.NETプログラミング...
(フォーム名).Show
とするだけでフォームを表示できました。しかも、同じフォー...
これに対して.NETでは、newによりフォームのインスタンスを作...
このような事態を避け、VB6のようにフォームを扱えるようにす...
次に簡単なサンプルを示します。Form2というフォームクラスが...
#code(vbnet){{
'ただ一つのフォームのインスタンスを保持するフィールド
Private Shared _instance As Form2
'ただ一つのフォームにアクセスするためのプロパティ
Public Shared ReadOnly Property Instance() As Form2
Get
'_instanceがnullまたは破棄されているときは、
'新しくインスタンスを作成する
If _instance Is Nothing OrElse _instance.IsDispos...
_instance = New Form2
End If
Return _instance
End Get
End Property
}}
#code(csharp){{
//ただ一つのフォームのインスタンスを保持するフィールド
private static Form2 _instance;
//ただ一つのフォームにアクセスするためのプロパティ
public static Form2 Instance
{
get
{
//_instanceがnullまたは破棄されているときは、
//新しくインスタンスを作成する
if (_instance == null || _instance.IsDisposed)
_instance = new Form2();
return _instance;
}
}
}}
Form2のインスタンスにアクセスするには、Form2.Instance静的...
Form2.Instance.Show()
とするだけです(名前空間が異なる場合は、適当な名前空間を...
ところで、この問題の解決に、シングルトン(Singleton)デザ...
シングルトン及び、C#におけるシングルトンの実装に関しては...
-[[Microsoft patterns & practices Patterns - シングルトン...
-[[C# でのシングルトンの実装>http://www.microsoft.com/jap...
-[[Implementing the Singleton Pattern in C#>http://www.yo...
ここでは「C# でのシングルトンの実装」の「静的な初期化」で...
#code(vbnet){{
'基本クラスとして使用できないようにする
Public NotInheritable Class Form2
Inherits System.Windows.Forms.Form
'コンストラクタをPrivateにする
Private Sub New()
'(省略)
End Sub
'(省略)
'フォームのインスタンスを保持するフィールド
Private Shared _instance As New Form2
'フォームにアクセスするためのプロパティ
Public Shared ReadOnly Property Instance() As Form2
Get
Return _instance
End Get
End Property
End Class
}}
#code(csharp){{
//基本クラスとして使用できないようにする
public sealed class Form2 : System.Windows.Forms.Form
{
//コンストラクタをPrivateにする
private Form2()
{
//(省略)
}
//(省略)
//フォームのインスタンスを保持するフィールド
private static readonly Form2 _instance = new Form2();
//フォームにアクセスするためのプロパティ
public static Form2 Instance
{
get
{
return _instance;
}
}
}
}}
ところが上記のようにフォームクラスにシングルトンパターン...
この問題を解決するには、一つの方法として、フォームが破棄...
例えば、Form2クラスに次のコードを書き加えることにより、フ...
#code(vbnet){{
'フォームを閉じずに隠すようにする
Protected Overrides Sub OnClosing( _
ByVal e As System.ComponentModel.CancelEventArgs)
e.Cancel = True
Me.Hide()
End Sub
}}
#code(csharp){{
//フォームを閉じずに隠すようにする
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true;
this.Hide();
}
}}
***フォームのリサイズが終了するまでコントロールの大きさを...
#column(注意){{
この記事の最新版は「[[フォームのリサイズが終了するまでコ...
}}
Windowsフォームのサイズがユーザーにより変更でき、フォーム...
そのような場合の対策について、ニュースグループに適切な投...
-[[Newsgroups:microsoft.public.dotnet.framework.windowsfo...
ここでは2つの方法が紹介されています。まず一つ目が、Applic...
この方法によるコードは次のようになります。フォームクラス...
#code(vbnet){{
'OnResizeのEventArgsを保持する
Dim resizeEA As EventArgs = Nothing
'フォームのサイズが変更した時
Protected Overrides Sub OnResize(ByVal e As EventArgs)
If resizeEA Is Nothing Then
resizeEA = e
AddHandler Application.Idle, AddressOf OnIdle
End If
End Sub
'アプリケーションがアイドル状態になった時
Private Sub OnIdle(ByVal s As Object, ByVal e As EventArgs)
If Not (resizeEA Is Nothing) Then
'基本クラスのOnResizeを呼び出す
MyBase.OnResize(resizeEA)
resizeEA = Nothing
RemoveHandler Application.Idle, AddressOf OnIdle
End If
End Sub
}}
#code(csharp){{
//OnResizeのEventArgsを保持する
EventArgs resizeEA = null;
//フォームのサイズが変更した時
protected override void OnResize(EventArgs e)
{
if (resizeEA == null)
{
resizeEA = e;
Application.Idle += new EventHandler(OnIdle);
}
}
//アプリケーションがアイドル状態になった時
private void OnIdle(object s, EventArgs e)
{
if (resizeEA != null)
{
//基本クラスのOnResizeを呼び出す
base.OnResize(resizeEA);
resizeEA = null;
Application.Idle -= new EventHandler(OnIdle);
}
}
}}
2つ目の方法は、フォームのWndProcをオーバーライドし、WM_EX...
ニュースグループで紹介されているコードはそのまま使用して...
よって、正しく動作するコードは、例えば次のようになるでし...
#code(vbnet){{
'OnResizeをオーバーライドし、何もしない
Protected Overrides Sub OnResize(ByVal e As EventArgs)
End Sub
Private Const WM_EXITSIZEMOVE As Integer = &H232
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_EXITSIZEMOVE Then
'リサイズ終了後、コントロールを配置する
Invalidate()
PerformLayout()
End If
MyBase.WndProc(m)
End Sub
}}
#code(csharp){{
//OnResizeをオーバーライドし、何もしない
protected override void OnResize(EventArgs e)
{
}
private const int WM_EXITSIZEMOVE = 0x232;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_EXITSIZEMOVE)
{
//リサイズ終了後、コントロールを配置する
Invalidate();
PerformLayout();
}
base.WndProc(ref m);
}
}}
***MDI親フォームの背景色を変更する [#le4ddcb8]
#column(注意){{
この記事の最新版は「[[MDI親フォームの背景色を変更する>htt...
}}
WindowsフォームのIsMdiContainerプロパティをtrueにすること...
このクライアント領域には、実はMdiClientというコントロール...
まずフォームにあるMdiClientコントロールを探す次のような静...
#code(vbnet){{
''' <summary>
''' フォームのMdiClientコントロールを探して返す
''' </summary>
''' <param name="f">MdiClientコントロールを探すフォーム</...
''' <returns>見つかったMdiClientコントロール</returns>
Public Shared Function GetMdiClient( _
ByVal f As System.Windows.Forms.Form) _
As System.Windows.Forms.MdiClient
Dim c As System.Windows.Forms.Control
For Each c In f.Controls
If TypeOf c Is System.Windows.Forms.MdiClient Then
Return CType(c, System.Windows.Forms.MdiClient)
End If
Next c
Return Nothing
End Function
}}
#code(csharp){{
/// <summary>
/// フォームのMdiClientコントロールを探して返す
/// </summary>
/// <param name="f">MdiClientコントロールを探すフォーム</...
/// <returns>見つかったMdiClientコントロール</returns>
public static System.Windows.Forms.MdiClient
GetMdiClient(System.Windows.Forms.Form f)
{
foreach (System.Windows.Forms.Control c in f.Controls)
if (c is System.Windows.Forms.MdiClient)
return (System.Windows.Forms.MdiClient) c;
return null;
}
}}
このメソッドを使って、MDI親フォームのクライアント領域にフ...
(MDI親フォームのクラス内に記述するものとします。)
#code(vbnet){{
'MdiClientを探す
Dim mc As System.Windows.Forms.MdiClient = GetMdiClient(Me)
If Not (mc Is Nothing) Then
'背景色を変更し、再描画する
mc.BackColor = Me.BackColor
mc.Invalidate()
End If
}}
#code(csharp){{
//MdiClientを探す
System.Windows.Forms.MdiClient mc = GetMdiClient(this);
if (mc != null)
{
//背景色を変更し、再描画する
mc.BackColor = this.BackColor;
mc.Invalidate();
}
}}
***MDI親フォームの背景を描画する [#x939139e]
#column(注意){{
この記事の最新版は「[[MDI親フォームの背景を描画する>https...
}}
MDI親フォームの背景に画像を表示するには、フォームのBackGr...
MDI親フォームの背景を独自に描画する方法は、"vbAccelerator...
-[[vbAccelerator - Painting in the MDI Client Area>http:/...
vbAcceleratorで紹介されている方法は、Win32 APIを使う方法...
このように難しい方法を使わなくても、先に紹介したMdiClient...
以下に紹介するサンプルでは、MDI親フォームのクライアント領...
#code(vbnet){{
'背景に表示する画像
Dim back As New Bitmap("back.bmp")
'MDI親フォームのLoadイベントハンドラ
Private Sub ParentForm_Load(sender As Object, _
e As System.EventArgs) Handles MyBase.Load
Me.IsMdiContainer = True
'MdiClientの取得
Dim mc As System.Windows.Forms.MdiClient = GetMdiClient(...
'MdiClientのPaintとResizeイベントハンドラを追加
AddHandler mc.Paint, AddressOf MdiClient_Paint
AddHandler mc.Resize, AddressOf MdiClient_Resize
End Sub
Private Sub MdiClient_Paint(sender As Object, e As PaintE...
Dim mc As System.Windows.Forms.MdiClient = _
CType(sender, System.Windows.Forms.MdiClient)
'画像をクライアント領域にあわせて描画する
e.Graphics.DrawImage(back, mc.ClientRectangle)
End Sub
Private Sub MdiClient_Resize(sender As Object, e As Event...
Dim mc As System.Windows.Forms.MdiClient = _
CType(sender, System.Windows.Forms.MdiClient)
'Paintイベントを呼び出す
mc.Invalidate()
End Sub
''' <summary>
''' フォームのMdiClientコントロールを探して返す
''' </summary>
''' <param name="f">MdiClientコントロールを探すフォー...
''' <returns>見つかったMdiClientコントロール</returns>
Public Shared Function GetMdiClient( _
ByVal f As System.Windows.Forms.Form) _
As System.Windows.Forms.MdiClient
Dim c As System.Windows.Forms.Control
For Each c In f.Controls
If TypeOf c Is System.Windows.Forms.MdiClient...
Return CType(c, System.Windows.Forms.MdiC...
End If
Next c
Return Nothing
End Function
}}
#code(csharp){{
//背景に表示する画像
Bitmap back = new Bitmap("back.bmp");
//MDI親フォームのLoadイベントハンドラ
private void ParentForm_Load(object sender, System.EventA...
{
this.IsMdiContainer = true;
//MdiClientの取得
System.Windows.Forms.MdiClient mc = GetMdiClient(this);
//MdiClientのPaintとResizeイベントハンドラを追加
mc.Paint += new PaintEventHandler(MdiClient_Paint);
mc.Resize += new EventHandler(MdiClient_Resize);
}
private void MdiClient_Paint(object sender, PaintEventArg...
{
System.Windows.Forms.MdiClient mc =
(System.Windows.Forms.MdiClient) sender;
//画像をクライアント領域にあわせて描画する
e.Graphics.DrawImage(back, mc.ClientRectangle);
}
private void MdiClient_Resize(object sender, EventArgs e)
{
System.Windows.Forms.MdiClient mc =
(System.Windows.Forms.MdiClient) sender;
//Paintイベントを呼び出す
mc.Invalidate();
}
/// <summary>
/// フォームのMdiClientコントロールを探して返す
/// </summary>
/// <param name="f">MdiClientコントロールを探すフォーム</...
/// <returns>見つかったMdiClientコントロール</returns>
public static System.Windows.Forms.MdiClient
GetMdiClient(System.Windows.Forms.Form f)
{
foreach (System.Windows.Forms.Control c in f.Controls)
if (c is System.Windows.Forms.MdiClient)
return (System.Windows.Forms.MdiClient) c;
return null;
}
}}
**コメント [#q56fb68d]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2004-09-28 (火) 06:00:00,DOB...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]