比较长 不过支持全部的关键字 直接就可以用了 using System;using System Text;using System Text RegularExpressions;
我们拥有十余年网页设计和网站建设经验,从网站策划到网站制作,我们的网页设计师为您提供的解决方案。为企业提供成都网站设计、网站制作、微信开发、微信平台小程序开发、移动网站建设、HTML5、等业务。无论您有什么样的网站设计或者设计方案要求,我们都将富于创造性的提供专业设计服务并满足您的需求。
namespace Com OSLeague Component{/// summary/// 语法分析器 将所有Code根据语法进行变色/// list type= VB 支持VB NET/list/// list type= CS 支持CS/list/// author掉掉/author/// date 年 月 日/date/// Memo/// 练习正则表达式/// /Memo/// /summarypublic class CodeAnalysis{
////定义HTML开始和结束的语句 用于语法变色//
const string TAG_FNTRED = @ font color= red ;const string TAG_FNTBLUE = @ font color= blue ;const string TAG_FNTGRN = @ font color= green ;const string TAG_FNTMRN = @ font color= maroon ;const string TAG_FNTBLACK = @ font color= black ;const string TAG_EFONT = @ /font ;const string TAG_SPNYELLOW = @ span style= background color: yellow; ;const string TAG_ESPAN = @ /span ;const string TAG_B = @ b ;const string TAG_EB = @ /b ;const string TAG_MENT = @ font colr=# ;const string TAG_EMENT = @ /font ;
//
public CodeAnalysis(){//// TODO: 在此处添加构造函数逻辑//}
/// summary/// 处理VB NET代码 彩色化 /// /summary/// param name= Code 传入的Code/param/// returns处理过后的代码/returnspublic string ParseVB(string Code){////定义VB NET中关键字 将其存为数组//
string[] VB_Keyword = new string[]{ AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType Date Decimal Declare Default Delegate Dim DirectCast Do Double Each Else ElseIf End Enum Erase Error Event Exit False Finally For Friend Function Get GetType GoTo Handles If Implements Imports In Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing NotInheritable NotOverridable Object On Option Optional Or OrElse Overloads Overridable Overrides ParamArray Preserve Private Property Protected Public RaiseEvent ReadOnly ReDim RemoveHandler Resume Return Select Set Shadows Shared Short Single Static Step Stop String Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until Variant When While With WithEvents WriteOnly Xor };
////设定转换代码颜色//
lishixinzhi/Article/program/net/201311/14615
首先你得这段代码不应该放在这个事件里~
因为你输入新的编号并不触发这个事件,这个事件是当选择的索引改变时触发的。
还有哦~
你Msgbox(......)这句之后的
If MsgboxResult.Yes Then这是在判断什么??
其实你这个If实际在判断(Cbool(MsgboxResult.Yes)=True)
Msgboxresult.Yes是一个常量,转换成 Boolean类型 然后判断是否是True,这个地方是一个严重的错误!
实际你要判断的是Msgbox(....)这个对话框的返回结果,对吧。
要这样:
If Msgbox(......)=MsgboxResult.Yes Then
.....
....
End if
Msgbox返回一个结果就是MsgboxResult枚举,这样判断才可以。
先指出错误,现在说说该怎么办:
先发上来,然后再说,我怕一会回答不小心全弄没了。
代码改完了,累死我了。
我给改成了2个事件。
很多地方加了注释,好好看看注释,差不多就明白了。不会再问。
代码:
Private Sub ComboBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyUp
If ComboBox1.Items.Contains(ComboBox1.Text) Then
ComboBox1.SelectedIndex = ComboBox1.Items.IndexOf(ComboBox1.Text)
'因为给ComboBox1.SelectedIndex要赋值的话,也该变了Text属性,所以也触发了TextChanged事件,所以那里和ComboBox2同步选项了,下面就不用 ComboBox2.SelectedIndex = ComboBox1.SelectedIndex语句了。
ComboBox1.SelectAll() '这里把刚才所输入的数字全部选择上
ElseIf e.KeyCode = Keys.Enter AndAlso MsgBox("无此学生,是否添加?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
'我给你改一下,改成输入完编号后按下回车才算确认,否则每输入一个字符都询问一次,很不好 '这里加上了e,KeyCode=Keys.Enter意思 就是当回车的时候并且对话框为是的时候则执行下面的语句,这里用了AndAlso而没用And原因就是如果它不是回车的,那就没必要询问,AndAlso就是当第一条件都不满足的时候,就不判断第二个条件了。
Dim name As String
name = InputBox("请输入姓名:")
ComboBox1.Items.Add(ComboBox1.Text)
ComboBox2.Items.Add(name)
End If
End Sub
'’TextChanged只有两种情况,一种是选择项目后Text改变,一种是用户输入的
'’选择项目的话肯定有此项所以这里写了这个判断语句
'’用户输入的,也必定触发KeyUp事件,所以这里可以不写另一段If语句,放在那个事件里写
'’其实keyUp的那段可以放在这里写,我是为了判断输入的是否为回车,要利用KeyUp事件的e参数的KeyCode属性,所以放那里了。
Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
If ComboBox1.Items.Contains(ComboBox1.Text) Then
ComboBox2.SelectedIndex = ComboBox1.SelectedIndex
End If
End Sub
Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
Dim pos = RichTextBox1.SelectionStart
Dim i As String = Regex.Matches(RichTextBox1.Text, "\bDim\b").ToString
RichTextBox1.SelectAll
RichTextBox1.SelectionColor = Color.Black
If Regex.IsMatch(RichTextBox1.Text, "\bDim\b") = True Then
For Each mat As Match In Regex.Matches(RichTextBox1.Text, "\bDim\b")
RichTextBox1.SelectionStart = mat.Index
RichTextBox1.SelectionLength = mat.Length
RichTextBox1.SelectionColor = Color.YellowGreen
Next
End If
RichTextBox1.SelectionStart = pos
RichTextBox1.SelectionLength = 0
End Sub
我做了一个更详细的正则:
Friend Keys As String =
"\b(#Const|#If|Then|#Else|#Region|Delegate|Namespace|Class|End|Firend|Partial|Module|Interface|Enum|Shared|Overrides|Overloads|Structure|Let|Const|Dim|As|Private|Public|New|Static|Option|Private|Module|IsArray|IsDate|IsEmpty|IsError|IsMissing|IsNull|IsNumeric|IsObject|TypeName|VarType|Me|Option|Explicit|Mod|Like|Is|Not|And|Or|Xor|Eqv|Imp|Clear|Error|Raise|Error|Err|CVErr|On|Error|Resume|IsError|Collection|Add|Remove|Item|DDB|SLN|SYD|FV|Rate|IRR|MIRR|NPer|IPmt|Pmt|PPmt|NPV|PV|Do|Loop|For|Next|For|Each|Next|While|Wend|With|Choose|If|Then|Else|Select|Case|Switch|Call|Function|Property|Get|Property|Let|Property|Set|Sub|Date|Now|Time|DateAdd|DateDiff|DatePart|DateSerial|DateValue|TimeSerial|TimeValue|Date|Time|Timer|CBool|CByte|CCur|CDate|CDbl|CDec|CInt|CLng|CSng|CStr|CVar|CVErr|Fix|Int|Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Object|Atn|Cos|Sin|Tan|Exp|Log|Sqr|Randomize|Rnd|Abs|Sgn|Fix|Int|IsArray|Array|Option|Base|Dim|Private|Public|ReDim|Static|LBound|UBound|Erase|ReDim|DeleteSetting|GetSetting|GetAllSettings|SaveSetting|Chr|Format|LCase|UCase|DateSerial|DateValue|Hex|Oct|Format|Str|CBool|CByte|CCur|CDate|CDbl|CDec|CInt|CLng|CSng|CStr|CVar|CVErr|Fix|Int|Day|Month|Weekday|Year|Hour|Minute|Second|Asc|Val|TimeSerial|TimeValue|StrComp|StrConv|Format|LCase|UCase|Space|String|Len|Format|LSet|RSet|InStr|Left|LTrim|Mid|Right|RTrim|Trim|Option|Compare|Asc|Chr|AppActivate|Shell|SendKeys|Beep|Command)\b"
新闻名称:vb点虐
中cbool的简单介绍
转载来源:https://www.cdcxhl.com/article34/ddisgse.html
成都网站建设公司_创新互联,为您提供网站内链、软件开发、网站制作、App设计、虚拟主机、网站收录
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联