模态窗体选择文本控件
经常使用摸态窗体,总是需要重复编写javascript脚本.所以封装了这个控件,这个控件使用的是aspnet2.0的API.所以用在1.1上的需要自己修改代码.
控件代码
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->usingSystem;
usingSystem.ComponentModel;
usingSystem.Text;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;
namespaceDotnetClubPortal.WebControls
{
/**////<summary>
///用户选择控件
///</summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:SelectObjectrunat=server></{0}:SelectObject>")]
publicclassSelectObject:,INamingContainer
{
protectedSystem.Web.UI.HtmlControls.HtmlInputHiddenhiddenObjectId;
protectedSystem.Web.UI.WebControls.TextBoxtxtObjectName;
protectedSystem.Web.UI.WebControls.Buttonbutton;
privateHtmlTableuiTable;
publicSelectObject()
{
txtObjectName=newTextbox();
hiddenObjectId=newHtmlInputHidden();
}
/**////<summary>
///ID,ID中间使用","分隔
///</summary>
[Browsable(false),Category("设置"),Description("取得的对象值,中间使用','分隔"),DefaultValue("")]
publicstringObjectId
{
get
{
returnhiddenObjectId.Value;
}
set
{
hiddenObjectId.Value=value.ToString();
}
}
/**////<summary>
///名称,中间使用","分隔
///</summary>
[Browsable(false),Category("设置"),Description("对象名称,中间使用','分隔"),DefaultValue("")]
publicstringObjectName
{
get
{
returntxtObjectName.Text;
}
set
{
this.txtObjectName.Text=value.ToString();
}
}
[Category("设置"),Description("选择页面路径"),Browsable(true),NotifyParentProperty(true)]
publicstringPageUrl
{
get
{
objectobj=ViewState["PageUrl"];
return(obj==null)?string.Empty:obj.ToString();
}
set
{
ViewState["PageUrl"]=value;
}
}
/**////<summary>
///编辑框是否可见
///</summary>
[Category("设置"),Description("编辑框是否可见"),Browsable(true),DefaultValue(true)]
publicboolIsVisable
{
get
{
objectobj=ViewState["Visable"];
return(obj==null)?false:bool.Parse(obj.ToString());
}
set
{
ViewState["Visable"]=value;
}
}
protectedoverridevoidRender(HtmlTextWriteroutput)
{
base.Render(output);
Control[]CtrlArray;
CtrlArray=newControl[3];
CtrlArray[0]=this.hiddenObjectId;
CtrlArray[1]=this.txtObjectName;
CtrlArray[2]=this.button;
CreateTabeRow(CtrlArray);
}
/**////<summary>
///创建行
///</summary>
///<paramname="Obj">行中包含的控件</param>
privatevoidCreateTabeRow(Control[]Obj)
{
HtmlTableRowtr=newHtmlTableRow();
HtmlTableCelltd=newHtmlTableCell();
foreach(ControlcinObj)
{
if(c!=null)
{
td.Controls.Add(c);
}
}
tr.Cells.Add(td);
uiTable.Rows.Add(tr);
}
protectedoverridevoidOnPreRender(EventArgse)
{
RegisterClientScriptBlockJavaScript();
base.OnPreRender(e);
}
发出客户端脚本RegisterClientScriptBlockJavaScript()#region发出客户端脚本RegisterClientScriptBlockJavaScript()
privatevoidRegisterClientScriptBlockJavaScript()
{
//如果已经注册了脚本则不再注册
if(Page.ClientScript.IsClientScriptBlockRegistered("SetValue"))
{
return;
}
else
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"SetValue",SetValue().ToString());
}
}
publicStringBuilderSetValue()
{
StringBuilderbuilder=newStringBuilder();
builder.Append("<scriptlanguage=\"javascript\">\n");
builder.Append("functionSetValue(Url,Name,Id){\n");
builder.Append("varvDialog;\n");
builder.Append("vDialog=window.showModalDialog(Url,window,\"dialogHeight:500px;dialogWidth:320px;status:no;resizable:yes;scroll:no;\");\n");
builder.Append("if(vDialog!=null){");
builder.Append("if(document.getElementById(Name))document.getElementById(Name).value=vDialog.oSelectName;\n");
builder.Append("if(document.getElementById(Id))document.getElementById(Id).value=vDialog.oSelectNameID;\n");
builder.Append("}}</script>\n");
returnbuilder;
}
#endregion
protectedoverridevoidCreateChildControls()
{
uiTable=newHtmlTable();
uiTable.ID="uiTable";
uiTable.Width="100%";
uiTable.Border=0;
//txtObjectName=newTextBox();
txtObjectName.ID="ObjectName";
txtObjectName.Visible=this.IsVisable;
//hiddenObjectId=newHtmlInputHidden();
hiddenObjectId.ID="ObjectId";
this.button=newButton();
this.button.ID="btnSelect";
this.button.Attributes.Add("width","100");
this.button.Text="选择";
this.button.Attributes.Add("onclick",string.Format("javascript:SetValue('{0}','{1}','{2}');",PageUrl,this.ClientID+"_ObjectName",this.ClientID+"_ObjectId"));
this.button.CausesValidation=false;
this.Controls.Add(uiTable);
this.Controls.Add(hiddenObjectId);
this.Controls.Add(txtObjectName);
this.Controls.Add(button);
}
}
}
具体使用 :
<cc1:SelectObject ID="PowerFlag" IsVisable="true" PageUrl="../../../../CommonPage/GetGroupInfo.aspx" runat="server">
</cc1:SelectObject>
通过属性ObjectName,ObjectId获取选择返回的值.
原文:http://shanyou.cnblogs.com/archive/2005/12/31/309171.html
分享到:
相关推荐
`以模态方式显示窗体。 - **关闭窗体**:可以使用`fm.Close();`或`this.Close();`来关闭当前窗体。如果需要关闭其他窗体,则可以通过`Application.OpenForms["Form1"].Close();`来实现。 - **隐藏和重新显示窗体**:...
1. 文本操作类控件,如`TextBox`,用于接收和显示文本输入。 2. 选择操作类控件,如`RadioButton`和`CheckBox`,提供单选或多选功能。 3. 图像操作类控件,如`PictureBox`,用于显示图片。 4. 菜单、工具栏与状态栏...
当开发者需要从一个窗体(Form1)访问另一个窗体(Form2)中的控件值时,通常涉及到窗体间的通信问题。本文将详细解析如何实现这一功能,并深入探讨其中的关键技术点。 ### 一、窗体间通信基础 在.NET Framework中...
- **非模态对话框**适用于提供长期运行的功能,例如查找和替换文本、文件管理器等,用户可以在使用这些功能的同时继续其他操作。 4. **VC6.0中的对话框资源**: - 在资源编辑器中,可以创建和编辑对话框资源,...
模态窗体在显示时会阻止用户与程序中的其他非模态窗体交互。 - **ActiveControl/ActiveMdiControl**:`ActiveControl`属性用于获取或设置容器控件中的活动控件;`ActiveMdiControl`属性用于获取多文档界面的当前活动...
在本例中,用户通过树形控件选择项目,触发相应的子窗体显示。 **2. 树形控件的使用** 树形控件(TreeView)是一种常见的GUI元素,用于展示层次结构的数据。在VB中,我们可以使用TreeView控件来创建一个可点击的...
10. **Modal属性**:设置窗体是否为模态对话框,模态窗体必须关闭后才能继续与主窗体交互。 11. **ActiveControl属性**:获取或设置当前激活的控件,即用户交互的对象。 12. **ActiveMdiChild属性**:在多文档界面...
模态窗体在显示期间会阻止用户与父窗体或其他窗体的交互,常用于对话框。 - ActiveControl属性:返回当前在窗体内的活动控件,即用户正在与其交互的控件。 - ActiveMdiChild属性:在MDI(多文档界面)环境下,返回...
10. `Modal`属性:设定窗体是否为模态窗体,模态窗体需关闭后才能操作其他窗体。 11. `ActiveControl`属性:获取或设置当前活动的控件。 12. `ActiveMdiChild`属性:在多文档界面(MDI)中获取当前活动的子窗体。 13...
10. **Modal属性**:设定窗体是否为模态窗体,模态窗体需关闭后才能操作其他窗体。 11. **ActiveControl属性**:获取或设置当前活动的子控件,通常用于处理键盘事件。 12. **ActiveMdiChild属性**:在多文档界面...
- **Modal属性**:设置窗体是否为模态窗体,模态窗体阻止用户与其它非模态窗体交互,直到模态窗体被关闭。 - **ActiveControl属性**:获取或设置当前活动的控件。 - **ActiveMdiChild属性**:对于MDI窗体,用于获取...
- `Modal`:设置窗体是否为模态对话框,模态窗体在关闭前不允许用户操作其他窗体。 - `ActiveControl`:获取或设置窗体内的活动控件。 - `ActiveMdiChild`:在MDI(多文档界面)应用程序中获取当前活动的子窗体。...
14. **Modal属性**:确定窗体是否为模态窗体。如果是模态窗体,则值为true;非模态窗体则为false。 15. **ActiveControl属性**:获取具有活动焦点的控件。 16. **ActiveMdiChild属性**:获取当前活动的MDI子窗体。 ...
2. 对话框窗体:通过设置窗体的Modal属性为True,可以创建模态窗体,确保用户在关闭该窗体前不能与应用程序的其他部分交互。 3. 动态控件:在运行时可以根据需要动态添加或删除控件,以适应不同的场景需求。 综上所...
如果是模态窗体,则其他所有非模态窗体将不可交互,直到模态窗体关闭。 - **ActiveControl属性**:获取或设置容器中的活动控件,即获得焦点的控件。 - **ActiveMdiChild属性**:获取多文档界面(MDI)的当前活动子...
- `Modal`:设定窗体是否为模态对话框,模态窗体需关闭后才能与主窗体交互。 - `ActiveControl`:当前获得焦点的控件。 - `ActiveMdiChild`:在MDI应用程序中当前激活的子窗体。 - `AutoScroll`:启用或禁用窗体...
- **Modal属性**:设置窗体是否为模态窗体,模态窗体会阻止用户与其它窗体的交互,通常用于对话框。 - **ActiveControl属性**:获取或设置容器控件(包括窗体本身)中的当前激活控件。 - **ActiveMdiChild属性**...
这里,`richTextBox1`是父窗体中的一个富文本框控件,`UpdateText`方法会将其文本内容更新为子窗体传递过来的值。 此外,还可以通过属性或事件来实现更复杂的交互。例如,父窗体可以声明一个公开的属性,子窗体可以...
- **Modal属性**:设置窗体是否为模态窗体,模态窗体需关闭后才能与其他窗体交互。 - **ActiveControl属性**:获取或设置当前活动的控件。 - **ActiveMdiChild属性**:在MDI(多文档界面)环境中获取当前活动的子...
这将创建一个非模态窗体,允许用户在两个窗体间切换。 4. **数据刷新**:在接收到新数据后,父窗体需要及时更新相关的控件显示。例如,如果数据传递到了TextBox,可以调用`textBox1.Text = newData;`来更新文本;...