WebPartManager.CloseWebPart メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > WebPartManager.CloseWebPart メソッドの意味・解説 

WebPartManager.CloseWebPart メソッド

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

Web ページ上に表示されなくても再度開くことができる方法で WebPart コントロールを終了します。

名前空間: System.Web.UI.WebControls.WebParts
アセンブリ: System.Web (system.web.dll 内)
構文構文

例外例外
例外の種類条件

ArgumentNullException

webPart が null 参照 (Visual Basic では Nothing) です。

ArgumentException

webPart が Controls コレクション内にありません。

または

webPart は共有コントロールで、別のユーザーによって既に終了されています。

解説解説

CloseWebPart メソッドは、WebPart コントロールまたはその他のサーバー コントロールを削除し、こうしたコントロールが、組み込まれていた元の Web ページ上に表示されないようにします。終了したコントロールは、PageCatalogPart オブジェクトに追加されます。このオブジェクトは、終了したコントロールへの参照を保持し、そのコントロールをページに復元できるようにします。終了した WebPart コントロールは、WebParts プロパティで参照されるコレクションに引き続き表示されます。

コントロールの終了は削除とは異なります。終了したコントロールはページに復元すると引き続き使用できますが、削除したコントロール インスタンスは完全に削除されるため復元できません。WebPart コントロールまたはサーバー コントロールが静的 (ページのマークアップに宣言) かまたは動的 (プログラムでページに追加するかまたはユーザーが Web パーツ カタログから追加) かに関係なく、コントロールを終了して再びページ上に開くことができます。

通常、ユーザーは、WebPart コントロールの動詞メニューをクリックし、Close 動詞を選択して、こうしたコントロールを終了できます。また、コントロールは、CloseWebPart メソッドを直接呼び出して、それに webPart への参照を渡すことにより終了することもできます。

WebPart コントロールを終了したページ上で、開発者が <asp:catalogzone> 要素を宣言し、その内部に <asp:pagecatalogpart> 要素を追加すると、実行時に、終了したコントロールをページに復元する簡単なユーザー インターフェイス (UI) が表示されます。ユーザーは、ページをカタログ表示モードに切り替えることができます。これにより、終了したコントロールがページ カタログ内に表示されます。ユーザーが、終了したコントロールを選択してページの任意の位置に戻すと、選択したコントロールがページに復元され、通常どおり表示できます。

CloseWebPart メソッドが呼び出されると、WebPartClosing、SelectedWebPartChanging (複数のコントロールがある場合)、WebPartsDisconnecting (接続コントロールがある場合) など、複数のイベントが発生します。通常、開発者はこれらのイベントをキャンセルできますが、特定の場合ではキャンセルできません。詳細については、WebPartClosing、SelectedWebPartChanging、および WebPartsDisconnecting の各イベントのドキュメントを参照してください。

使用例使用例

CloseWebPart メソッドを使用する方法を次のコード例に示します。

コード例は、次の 4 つの部分から成ります。

コード例の最初の部分は、表示モードを変更するユーザー コントロールです。このユーザー コントロールのソース コードは、WebPartManager クラスの概要の「例」から取得できます。表示モードの詳細およびユーザー コントロールの動作方法の詳細については、「チュートリアル : Web パーツ ページでの表示モードの変更」を参照してください。

コード例の 2 番目の部分はカスタム WebPart コントロールです。コード例を実行するためには、このソース コードをコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みのアセンブリを Web サイトの Bin フォルダまたはグローバル アセンブリ キャッシュに配置できます。サイトの App_Code フォルダにソース コードを配置し、実行時に動的にコンパイルすることもできます。この例では、動的コンパイルの方法を使用します。このため、Web ページの先頭にあるこのコントロール用の Register ディレクティブに Assembly 属性はありません。コンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロールの開発と使用」を参照してください。

Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class TextDisplayWebPart
    Inherits WebPart
    Private _contentText As String
 = Nothing
    Private _fontStyle As String
 = Nothing
    Private input As TextBox
    Private DisplayContent As Label
    Private lineBreak As Literal

    <Personalizable(), WebBrowsable()> _
    Public Property ContentText() As
 String
      Get
        Return _contentText
      End Get
      Set(ByVal value As
 String)
        _contentText = value
      End Set
    End Property

    Protected Overrides Sub
 CreateChildControls()
      Controls.Clear()
      DisplayContent = New Label()
      DisplayContent.BackColor = Color.LightBlue
      DisplayContent.Text = Me.ContentText
      Me.Controls.Add(DisplayContent)

      lineBreak = New Literal()
      lineBreak.Text = "<br />"
      Controls.Add(lineBreak)

      input = New TextBox()
      Me.Controls.Add(input)
      Dim update As New
 Button()
      update.Text = "Set Label Content"
      AddHandler update.Click, AddressOf Me.submit_Click
      Me.Controls.Add(update)

    End Sub

    Private Sub submit_Click(ByVal
 sender As Object, _
                             ByVal e As EventArgs)
      ' Update the label string.
      If input.Text <> String.Empty Then
        _contentText = input.Text + "<br />"
        input.Text = String.Empty
        DisplayContent.Text = Me.ContentText
      End If

    End Sub

  End Class

End Namespace
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace Samples.AspNet.CS.Controls
{
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class TextDisplayWebPart : WebPart
  {
    private String _contentText = null;
    TextBox input;
    Label DisplayContent;
    Literal lineBreak;

    [Personalizable(), WebBrowsable]
    public String ContentText
    {
      get { return _contentText; }
      set { _contentText = value; }
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();
      DisplayContent = new Label();
      DisplayContent.BackColor = Color.LightBlue;
      DisplayContent.Text = this.ContentText;
      this.Controls.Add(DisplayContent);

      lineBreak = new Literal();
      lineBreak.Text = @"<br />";
      Controls.Add(lineBreak);

      input = new TextBox();
      this.Controls.Add(input);
      Button update = new Button();
      update.Text = "Set Label Content";
      update.Click += new EventHandler(this.submit_Click);
      this.Controls.Add(update);

    }

    private void submit_Click(object sender,
 EventArgs e)
    {
      // Update the label string.
      if (input.Text != String.Empty)
      {
        _contentText = input.Text + @"<br />";
        input.Text = String.Empty;
        DisplayContent.Text = this.ContentText;
      }
    }

  }
}

コード例の 3 番目の部分は Web ページです。このページには CatalogZone ゾーンが含まれ、その内部に <asp:pagecatalogpart> 要素が宣言されています。終了した WebPart コントロールはここに格納され、ユーザーはそれをページに戻すことができます。Button1_Click メソッドは、CloseWebPart メソッドを直接呼び出し、カスタム WebPart コントロールを終了しますが、ユーザーも動詞メニューを通じてこのコントロールを終了できます。

<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1" 
    TagName="DisplayModeMenuVB"
    Src="~/DisplayModeMenuVB.ascx" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.VB.Controls"%>

<script runat="server">
  
  Protected Sub Button1_Click(ByVal
 sender As Object, _
    ByVal e As System.EventArgs)
    
    mgr1.CloseWebPart(text1)

  End Sub
</script>

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:WebPartManager ID="mgr1" runat="server"
 />
      <uc1:DisplayModeMenuVB ID="menu1" runat="server"
 />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <aspSample:TextDisplayWebPart ID="text1"
 
            runat="server" 
            Title="My Text WebPart" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:CatalogZone ID="CatalogZone1" runat="server">
        <ZoneTemplate>
          <asp:PageCatalogPart ID="PageCatalogPart1"
 runat="server" />   
        </ZoneTemplate>
      </asp:CatalogZone>
      <asp:Button ID="Button1" runat="server"
 
        Text="Close WebPart" 
        OnClick="Button1_Click" />
    </form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1" 
    TagName="DisplayModeMenuCS"
    Src="~/DisplayModeMenuCS.ascx" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.CS.Controls"%>

<script runat="server">
    
  protected void Button1_Click(object sender,
 EventArgs e)
  {
    mgr1.CloseWebPart(text1);
  }
  
</script>

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:WebPartManager ID="mgr1" runat="server" />
      <uc1:DisplayModeMenuCS ID="menu1" runat="server" />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <aspSample:TextDisplayWebPart ID="text1" 
            runat="server" 
            Title="My Text WebPart" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:CatalogZone ID="CatalogZone1" runat="server">
        <ZoneTemplate>
          <asp:PageCatalogPart ID="PageCatalogPart1" runat="server"
 />   
        </ZoneTemplate>
      </asp:CatalogZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Close WebPart" 
        OnClick="Button1_Click" />
    </form>
</body>
</html>

ブラウザにページを読み込んだ後、コントロールのヘッダーにある動詞メニュー (矢印記号) をクリックし、[閉じる] をクリックして、カスタム WebPart コントロールを終了します。[Display Mode] ドロップダウン リスト コントロールで [カタログ] を選択して、ページをカタログ モードに変更します。ページ カタログに、終了したコントロールが表示されます。終了したコントロールの横のチェック ボックスをオンにし、[追加] をクリックしてこのコントロールをページに追加します。次に [閉じる] をクリックしてページをブラウズ モードに戻します。コントロールがページ復元されます。今度は [Close WebPart] をクリックして、このコントロールをもう一度終了します。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WebPartManager クラス
WebPartManager メンバ
System.Web.UI.WebControls.WebParts 名前空間
WebPart.AllowClose プロパティ
DeleteWebPart
WebPart.IsClosed プロパティ
その他の技術情報
ASP.NET Web パーツ ページ



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

WebPartManager.CloseWebPart メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



WebPartManager.CloseWebPart メソッドのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS