C/S系统嵌入技巧(利用用户控件+Web技术)

  --首先新建一个用户控件 该控件包含如下控件
  --1:一个刷新Button控件
  --2:一个webBrowser1控件
  --3:其它可以增加一个状态提示控件等 主要控件为1和 2
  --如下图:
  --------------------
  
  --------------------
  上图就是我们创建的自定义组件 具体的代码如下:
  ------------------------
  using System.Security;
  using System.Security.Permissions;
  namespace Test
  {
  [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
  [System.Runtime.InteropServices.ComVisibleAttribut e(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 = "ABC";
  foreach (DataRow dr in refTable.Rows)
  {
  html2 = html2 + string.Format("{0}{1}{2}", dr["A"], dr["B"], dr["C"], dr["PrimaryKey"]);
  }
  if (string.IsNullOrEmpty(html2)) html2 = "";
  string html1 = @"
  
  几日内学生学费到期催款列表
  
  
  
  
   ";
  string html3 = @"
  
  
  
   ";
  string js = @"
  
  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').οnmοuseοver=func tion() {clearInterval(timer);}
  document.getElementById('layer1').οnmοuseοut=funct ion() {timer=setInterval('move()',iFrequency);}
  function ShowDetail(saleNo)
  {
  window.external.SendMessage(saleNo);
  }
  ";
  string html4 = @"
  
  
  ";
  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
  //
  }
  -------------------------------------------------- ---------
  大体思路如上,以准备以后修改中用到。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值