--首先建立一個使用者控制項 該控制項包含如下控制項
--1:一個重新整理Button控制項
--2:一個webBrowser1控制項
--3:其它可以增加一個狀態提示控制項等 主要控制項為1 和 2
--如:
--------------------
--------------------
就是我們建立的自訂群組件 具體的代碼如下:
------------------------
using System.Security;
using System.Security.Permissions;
namespace Test
{
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class LawRemindHtml : UserControl
{
public LawRemindHtml()
{
InitializeComponent();
webBrowser1.AllowWebBrowserDrop = false;
webBrowser1.IsWebBrowserContextMenuEnabled = false;
webBrowser1.WebBrowserShortcutsEnabled = false;
webBrowser1.ObjectForScripting = this;
}
public void SearchRemind()
{
BuildHtml(CreateDataSet().Tables[0]);
}
private DataSet CreateDataSet()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("PrimaryKey", typeof(String));
dt.Columns.Add("A", typeof(String));
dt.Columns.Add("B", typeof(String));
dt.Columns.Add("C", typeof(String));
ds.Tables.Add(dt);
DataRow dr = dt.NewRow();
dr[0] = "PrimaryKey1";
dr[1] = "A1";
dr[2] = "B1";
dr[3] = "C1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "PrimaryKey2";
dr[1] = "A2";
dr[2] = "B2";
dr[3] = "C2";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "PrimaryKey3";
dr[1] = "A3";
dr[2] = "B3";
dr[3] = "C3";
dt.Rows.Add(dr);
return ds;
}
private void BuildHtml(DataTable refTable)
{
string html2 = "<tr style='color: blue;'><td>A</td><td>B</td><td>C</td></tr>";
foreach (DataRow dr in refTable.Rows)
{
html2 = html2 + string.Format("<tr ondblclick =/"ShowDetail('{3}')/"><td>{0}</a></td><td>{1}</td><td>{2}</td></tr>", dr["A"], dr["B"], dr["C"], dr["PrimaryKey"]);
}
if (string.IsNullOrEmpty(html2)) html2 = "";
string html1 = @"<html>
<head>
<title>幾日內學生學費到期催款列表</title>
</head>
<body style='font-size:9pt'>
<div id='layer1' style='overflow-y:hidden'>
<div id='layer2'>
<table width='95%' border='0' align='center' style='font-size:9pt'> ";
string html3 = @"
</table>
</div>
<div id='layer3'></div>
</div> ";
string js = @"
<script language='javascript' type='text/javascript'>
var layerHeight = 600; // 定義捲動區域的高度.
var iFrame = 1; // 定義每幀移動的象素.
var iFrequency = 50; // 定義幀頻率.
var timer; // 定義時間控制代碼.
if(document.getElementById('layer2').offsetHeight >= layerHeight)
document.getElementById('layer1').style.height = layerHeight;
else
document.getElementById('layer1').style.height = document.getElementById('layer2').offsetHeight;
document.getElementById('layer3').innerHTML = document.getElementById('layer2').innerHTML;
function move(){
if(document.getElementById('layer1').scrollTop >= document.getElementById('layer2').offsetHeight){
document.getElementById('layer1').scrollTop -= (document.getElementById('layer2').offsetHeight - iFrame);
}
else {
document.getElementById('layer1').scrollTop += iFrame;
}
}
timer = setInterval('move()',iFrequency);
document.getElementById('layer1').onmouseover=function() {clearInterval(timer);}
document.getElementById('layer1').onmouseout=function() {timer=setInterval('move()',iFrequency);}
function ShowDetail(saleNo)
{
window.external.SendMessage(saleNo);
}
</script>";
string html4 = @"
</body>
</html>
";
webBrowser1.DocumentText = html1 + html2 + html3 + js + html4;
}
private void bbtRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SearchRemind();
}
private void timer1_Tick(object sender, EventArgs e)
{
SearchRemind();
}
public void SendMessage(string refSaleNo)
{
//MessageBox.Show(refSaleNo);
//FrmLawSendPhoneMessage frmSearch = new FrmLawSendPhoneMessage("01");
//frmSearch.ShowDialog();
//frmSearch.Dispose();
}
}
}
-------------------------
在實際的應用中資料的讀取要從後台資料庫擷取。
如何應用呢 如下:
--------------------------------------------------------
LawRemindHtml html; //引用使用者組件
public TestHtmlUse() ///類TestHtmlUse的夠造函數
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
mainform = this;
DockManager dockManager1 = new DockManager(this); //需要引入 DevExpress.XtraBars.Docking命名空間
DockPanel dp = dockManager1.AddPanel(DockingStyle.Left);
//lawRemiand = new LawRemindControl(this);
//lawRemiand.Dock = DockStyle.Fill;
html = new LawRemindHtml();
html.Dock = DockStyle.Fill;
html.Show();
dp.Text = "幾日內學生學費到期催款列表";
dp.Width = 300;
dp.Visibility = DockVisibility.AutoHide;
dp.ControlContainer.Controls.Add(html);
//
// TODO: Add any constructor code after InitializeComponent call
//
}
-----------------------------------------------------------
大體思路如上,以準備以後修改中用到。