符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
selection.start=activedocument.characters.count
公司主营业务:做网站、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出茄子河免费做网站回馈大家。
selection.end=activedocument.characters.count
菜单栏编辑书签清除书签
或者 ctrl+k按完后,再按ctrl+L
可以在选定全部子节点前,发送一个变量给全部子节点(有个tag属性可以利用),告诉它们不应该执行某事件(if语句)。
委托是可用于调用其他对象方法的对象。它们有时被称为类型安全函数指针,因为它们与其他编程语言中所使用的函数指针相似。但不同于函数指针,Visual Basic .NET 委托是基于 System.Delegate 类的引用类型,它可以引用共享方法 —无需特定的类实例即可调用的方法和实例方法。
委托在调用过程和被调用过程需要媒介的情况下是很有用的。例如,您可能想让一个引发事件的对象能够在不同的环境下调用不同的事件处理程序。不幸的是,引发事件的对象无法提前知道处理特定事件的事件处理程序。Visual Basic .NET 通过在使用 AddHandler 语句时创建委托,可让您动态地将事件处理程序与事件关联。在运行时,委托将各种调用转发到相应的事件处理程序。
尽管可以创建自己的委托,但在大多数情况下,Visual Basic .NET 为您创建委托并提供具体信息。例如,Event 语句将名为 EventNameEventHandler 的委托类隐式定义为 Event 语句所在类的嵌套类,且其签字与该事件相同。AddressOf 语句则隐式创建委托的实例。例如,以下两行代码是等效的:
AddHandler Button1.Click, AddressOf Me.Button1_Click
' AddHandler 指向引发事件的对象,AddressOf则确定该事件对象所要调用的事件处理程序
'上述行为又可以称为 监 视
AddHandler Button1.Click, New EventHandler(AddressOf Button1_Click)。
做过一个类似的C#的,以下是C#的代码供参考
private DataTable dbconn(string strSql) //creat a method for datatable model
{
string Con5 = string.Format(@"provider=Microsoft.ACE.oledb.12.0;Jet oledb:Database Password =Jabil123456;User ID =Admin;Data source ={0}\Ele.accdb",System.Windows.Forms.Application.StartupPath);
OleDbConnection conn = new OleDbConnection(Con5);
this.adapter = new OleDbDataAdapter(strSql, conn); //instantiation SqlDataAdapter object
DataTable dtSelect = new DataTable(); //instantiation DataTable object
int rnt = this.adapter.Fill(dtSelect); //Fill DataTable object
return dtSelect; //return DataTable object
}
private Boolean dbUpdate() //function dbUpdate
{
string strSql = "select * from [Materials]"; //statement SQL
DataTable dtUpdate = new DataTable(); //instantiation DataTable
dtUpdate = this.dbconn(strSql);
dtUpdate.Rows.Clear(); //Clear datatable
DataTable dtShow = new DataTable(); //instantiation DataTable
dtShow = (DataTable)this.dataGridView2.DataSource;
for (int i = 0; i dtShow.Rows.Count; i++)
{
dtUpdate.ImportRow(dtShow.Rows[i]);//use ImportRow method to paste the value of dtShow
}
try
{
OleDbCommandBuilder CommandBuiler; //statement SqlCommandBuilder variable
CommandBuiler = new OleDbCommandBuilder(this.adapter);
this.adapter.Update(dtUpdate); //update data
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString()); //pop-up prompt for unnormal situation
return false;
}
dtUpdate.AcceptChanges(); //change successful
return true;
}
private void dataGridView2_CellClick (object sender, DataGridViewCellEventArgs e)
{
i = e.RowIndex;//record current row index
}
public bool ExportcurrentData()
{
if (dataGridView2.Rows.Count == 0)
{
return false;
}
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //creat excel object
excel.Application.Workbooks.Add(true);
for (int i = 0; i dataGridView2.ColumnCount; i++) //creat field name
{
excel.Cells[1, i + 1] = dataGridView2.Columns[i].HeaderText;
}
for (int i = 0; i dataGridView2.RowCount; i++) //fill data
//row cycle
{
for (int j = 0; j dataGridView2.ColumnCount; j++)
//Column cycle
{
if (dataGridView2[j, i].ValueType == typeof(string))
{
excel.Cells[i + 2, j + 1] = "'" + dataGridView2.Rows[i].Cells[j].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = dataGridView2.Rows[i].Cells[j].Value.ToString();
}
}
}
excel.Visible = false;
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false;
excel.Save();
excel.Quit();
return true;
}
void Timer1Tick(object sender, EventArgs e)
{
this.Opacity += 0.2;
label1.Left += -2;
if (label1.Right=0)
{
label1.Left= this.Width;
}
}
private void exportDataToExcelToolStripMenuItem_Click(object sender, EventArgs e)
{
ExportcurrentData();
}
private void deleteDataDToolStripMenuItem_Click(object sender, EventArgs e)
{
dataGridView2.AllowUserToDeleteRows = true; //allow user to delete row
foreach (DataGridViewRow r in dataGridView2.SelectedRows)
{
if (MessageBox.Show("是否删除数据?", "系统消息", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
if (!r.IsNewRow)
{
dataGridView2.Rows.Remove(r);
ChangeData_Click(sender, e);
}
}
}
}
private void backBToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
this.Close();
form2.Show();
}
private void ChangeData_Click(object sender, EventArgs e)
{
if (MessageBox.Show("是否保存数据?", "系统消息", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
if (dbUpdate()) //judgement function dbUpdate execute to true or false, if true then.....
{
MessageBox.Show("修改成功!"); //pop-up prompt
dataGridView2.Update();
}
search_Click(sender, e); //re-load
}
}
问题补充:我用VB.NET写的,FORM2用来实现数据采样并显示实时曲线,关闭后再'取消FORM2的关闭 这样就把FORM2隐藏起来了,需要调出来的时候只需以下代码
不能透过e来屏蔽不需要的事件?
死循环是怎么防止的?道理一样吧
可以在选定全部子节点前,发送一个变量给全部子节点(有个tag属性可以利用),告诉它们不应该执行某事件(if语句)。
没测试,不知道行不行。