关于vb.net显示前导0的信息
VB.NET的新麻烦!!!
首先你定义了两个变量x%,y% 其默认值为0
成都创新互联公司是一家集网站建设,济宁企业网站建设,济宁品牌网站建设,网站定制,济宁网站建设报价,网络营销,网络优化,济宁网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
然后执行条件判断满足第一个条件x1000 ,就将x赋值给y 此时x=0,y=0
跳出判断,显示两个0。
我引用他的话, 后面就是你没有给他赋值。 差一点代码。
dim x% ,y%
'可以加一个检测textbox1.text 里只能输入整数的代码。
x=textbox1.text
if...
'就是你后面的啦 不过我也很菜,所以也不知道对不对,对你有 没有用啊。你试试看吧
VB.Net 的Chr(0) 问题
很多文章说Chr(0)是字符串结束符,表示到此字符串已经结束,不必往下读
比如添加
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim g() As Char = TextBox1.Text.ToCharArray
End Sub
在调试时何以查询g() 就可知道TextBox1到底有多少个字符
VB.NET 写日期到access 格式不对
因为Access日期格式设置了,在写入中会出现格式不对,可以根据情况自定义修改日期格式写入Access中。
语法如下:format([日期],"YYYY-MM-DD")
示例:
Format(#2003/10/1#, "aaaa") '星期三
Format(#2003/10/1#, "dddd") 'Wednesday
Format(#2003/10/1#, "ww") '40 2003年的第40周
Format(#2003/10/1#, "mmmm") 'October
Format(#2003/10/1#, "oooo") '十月
Format(#2003/10/1#, "q") '4 2003年的第4季
日期时间扩展:
(:): 时间分隔符。在一些区域,可能用其他符号来当时间分隔符。格式化时间值时,时间分隔符可以分隔时、分、秒。时间分隔符的真正字符在格式输出时取决于系统的设置。
(/) : 日期分隔符。在一些区域,可能用其他符号来当日期分隔符。格式化日期数值时,日期分隔符可以分隔年、月、日。日期分隔符的真正字符在格式输出时取决于系统设置。
c : 以 ddddd 来显示日期并且以 ttttt 来显示时间。如果想显示的数值无小数部分,则只显示日期部分,如果想显示的数值无整数部分,则只显示时间部分。
d : 以没有前导零的数字来显示日 (1 – 31)。
dd : 以有前导零的数字来显示日 (01 – 31)。
ddd : 以简写来表示日 (Sun –Sat)。
dddd : 以全称来表示日 (Sunday –Saturday)。
ddddd : 以完整日期表示法显示(包括年、月、日),日期的显示要依系统的短日期格式设置而定。缺省的短日期格式为 m/d/yy。
dddddd : 以完整日期表示法显示日期系列数(包括年、月、日),日期的显示要依系统识别的长日期格式而定。缺省的长日期格式为 mmmm dd, yyyy。
aaaa : 与dddd 一样,它只是该字符串的本地化版本。
w : 将一周中的日期以数值表示(1 表星期日~ 7表星期六)。
ww : 将一年中的星期以数值表示 (1 – 54)。
m : 以没有前导零的数字来显示月 (1 – 12)。如果 m 是直接跟在 h 或 hh 之后,那么显示的将是分而不是月。
mm : 以有前导零的数字来显示月 (01 – 12)。如果m是直接跟在h或hh之后,那么显示的将是分而不是月。
mmm : 以简写来表示月 (Jan –Dec)。
mmmm : 以全称来表示月 (January –December)。
oooo : 与mmmm一样,它只是该字符串的本地化版本。
q : 将一年中的季以数值表示 (1 – 4)。
y : 将一年中的日以数值表示 (1 – 366)。
yy : 以两位数来表示年 (00 – 99)。
yyyy : 以四位数来表示年 (00 – 99)。
h : 以没有前导零的数字来显示小时 (0 – 23)。
Hh : 以有前导零的数字来显示小时 (00– 23)。
N : 以没有前导零的数字来显示分 (0 – 59)。
Nn : 以有前导零的数字来显示分 (00 – 59)。
S : 以没有前导零的数字来显示秒 (0 – 59)。
Ss : 以有前导零的数字来显示秒 (00 – 59)。
t t t t t : 以完整时间表示法显示(包括时、分、秒),用系统识别的时间格式定义的时间分隔符进行格式化。如果选择有前导零并且时间是在 10:00 A.M. 或 P.M.之前,那么将显示有前导零的时间。缺省的时间格式为 h:mm:ss。
AM/PM : 在中午前以 12 小时配合大写 AM 符号来使用;在中午和 11:59 P.M.间以 12 小时配合大写 PM 来使用。
am/pm : 在中午前以 12 小时配合小写 am 符号来使用;在中午和 11:59 P.M.间以 12 小时配合小写 pm 来使用。
A/P : 在中午前以 12 小时配合大写A符号来使用;在中午和 11:59 P.M.间以12 小时配合大写P来使用。
a/p : 在中午前以 12 小时配合小写a符号来使用;在中午和 11:59 P.M.间以 12 小时配合小写p来使用。
AMPM : 在中午前以 12 小时配合系统设置的 AM字符串文字来使用;在中午和 11:59 P.M. 间以 12 小时配合系统设置的 PM 字符串文字来使用。AMPM 可以是大写或小写,但必须和您的系统设置相配。其缺省格式为 AM/PM。
程序编译无法通过,显示如下提示,可能是什么问题?'>VB.net 窗口属性设置问题->程序编译无法通过,显示如下提示,可能是什么问题?
你主窗口不能设置为Nothing啊,没有主窗口还运行个神马?
你最多把主窗口的边界设置的很小,让人忽略看不到
或者设置窗口为透明
下面是网上找的代码,你研究下,希望有帮助
如何建立一个透明的From
你可以通过两种方法在设计时刻和运行时刻来做到这一点.
设计时刻,你可以在vs.net IDE的 Properties window, 设置Opacity 属性达到这个效果.这个值从0.0到1.0 . 0表示完全透明,1.0表示完全不透明.
运行时刻你可以用下面的编码设置窗体的opactiy属性来做到.具体:
frmtransparentform.opacity = 0.76; ( C# )
看得出现在很简单了,你已经不用再去了解什么alpha变量了.透明始终只是一种效果,不要滥用它.
VB.NET UNICODE码 显示
Public Class Form1
Dim b() As Byte
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
b = System.Text.Encoding.Default.GetBytes(TextBox1.Text)
For i = 0 To UBound(b)
TextBox2.AppendText(i.ToString " ")
Next
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = System.Text.Encoding.Default.GetString(b)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = "Google free online translation service instantly translates text and web pages。 该翻译器支持: 中文(简体), 中文(繁体), shqip, 日本语, русский, langue française ..."
End Sub
End ClassVB.Net中用String类型表示字符串,内部采用Unicode编码。当需要在网络或串口中收发字符串时,就需要在String和Byte数组之间进行转换,这项功能可以通过System.Text.Encoding类实现。
Private zeroChars() As Char = {ChrW(0)}
Dim descBytes() As Byte = System.Text.Encoding.Unicode.GetBytes(mDescription)
Dim description As String = System.Text.Encoding.Unicode.GetString(rBuffer, offset, length).TrimEnd(zeroChars)
说明:C语言中用'\0'表示字符串结束,而String类型中0是有效字符,显示时是空白字符,会占用显示宽度,可以用TrimEnd方法将字符串末尾的零字符去掉。
主要叙说一下StrConv 函数conversion参数最后两个值的含义和用途,并举例说明。
1、语法
StrConv(string, conversion, LCID)
StrConv 函数的语法有下面的命名参数:
部分 说明
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)
设置值
conversion 参数的设置值为:
常数 值 说明
vbUpperCase 1 将字符串文字转成大写。
vbLowerCase 2 将字符串文字转成小写。
vbProperCase 3 将字符串中每个字的开头字母转成大写。
vbWide* 4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。
vbHiragana** 32** 将字符串中片假名字符转成平假名字符。
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。
*应用到远东国别。
**仅应用到日本。
说明:前面3个参数比较简单,后面4个我们用不上,就不说了,主要说说后面两个。
2、ANSI 格式
语法中说的缺省码页就是ANSI模式,英文环境下 的ANSI 格式其实也就是ASCII码,其它环境就不一样了,比如中文环境,就是ASCII,一个字节表示一个字符,GB2312,2个字节表示一个汉字,所以中文环境下的ANSI格式就是ASCII码+GB2312,早期的DOS系统中纯文本就是这种格式,这种格式下,通过最高位来判断是中文字符(最高位是1)还是ASCII字符(最高位是0)。中文环境下保存文本文件时一般都采用ANSI格式,不过也有其他格式,比如UTF-8。
3、Unicode编码
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode用两个字节表示一个字符,涵盖了世界上所有字符,和以前的字符集都不兼容,VB内部字符串就是采用Unicode编码,所以当我们打开一个文本文件读入数据的时候,其内存中的内容和文本文件的内容是不一样的,经过了转换,除非你采用二进制方式读入。
4、vbUnicode和vbFromUnicode含义
有了上面叙说,这两个参数的含义就好理解了,就是Unicode编码和ANSI编码的互换,例如:
textline= StrConv(plaintext,vbUnicode)
这儿textline是以字符串变量,plaintext是以字节变量保存着ANSI模式的字符内容,例如,“2”这个字符,一个字节,值是50,16进制是32,“皖”这个汉字,两个字节,值是205和238,同样是这两个字符,作为字符串在内存中都是两个字节,例如,“2”这个字符在内存中16进制值是0032。当VB打开一个文件读取文本内容是,实际上自动进行了上述转换。
plaintext = StrConv(textline, vbFromUnicode)
这儿进行相反的转换,就是将Unicode字符串转换成ANSI模式,转换结果必须以字节方式保存。
5、vbUnicode和vbFromUnicode用途
由于字符在内存中的内容和文件中的内容不一致,所以必须要用到这种转换,特别是系统间进行数据交换、数据加密和解密,如果不做转换可能导致得不到正确的结果。
比如,我们对一个文本文件进行加密,这个文件是ANSI格式存储的,当从文件内容读入一行到内存的时候,自动将内容转换成了Unicode格式,如果这时候对其做加密运算,其结果和文件中字符串加密结果是不一样的,这样的结果如果让别人解密将无法得到正确的结果。如果对读入内存的内容先做个转换(textline是读入内容):
plaintext = StrConv(textline, vbFromUnicode)
再对plaintext做加密,其结果就一样了。
举例(按行做加密和解密运算,算法是AES+Base64):
[vb] view plain copy
Status = "Encrypting File"
Open FileName For Input As #1 ' 打开输入文件。
Open FileName2 For Output As #2 ' 打开输出文件。
Do While Not EOF(1)
Line Input #1, TextLine
plaintext = StrConv(TextLine, vbFromUnicode)
Status = "Encrypting Data"
m_Rijndael.SetCipherKey pass, KeyBits
m_Rijndael.ArrayEncrypt plaintext, ciphertext, 0
Status = "Converting Text to Base64"
TextLine = Base64Encode(ciphertext)
Status = ""
Print #2, TextLine ' 将字符串写入文件。
Loop
Close
[vb] view plain copy
Status = "Decrypting File"
Open FileName For Input As #1 ' 打开输入文件。
Open FileName2 For Output As #2 ' 打开输出文件。
Do While Not EOF(1)
Line Input #1, TextLine
Status = "Converting Base64 to Text"
ciphertext = Base64Decode(TextLine)
Status = "Decrypting Data"
m_Rijndael.SetCipherKey pass, KeyBits
If m_Rijndael.ArrayDecrypt(plaintext, ciphertext, 0) 0 Then
Status = ""
Exit Sub
End If
TextLine = StrConv(plaintext, vbUnicode)
For i = 0 To UBound(plaintext)
Debug.Print plaintext(i)
Next i
k = InStr(1, TextLine, Chr(0), vbBinaryCompare)
If k 0 Then TextLine = Left(TextLine, k - 1) '截掉加密时补的0
MsgBox TextLine "end"
Status = ""
Print #2, TextLine ' 将字符串写入文件。
Loop
Close
VB.NET想用GetWindowRECT获取某窗口的坐标,但测试结果是L,T,R,B显示都是0,0,0,0
很简单,原因有二。第一,VB里long是32位,但是VB.NET里是64位,Dim ksWND As Integer才对。第二,VB在API里默认传址,而VB.NET默认传值,所以API里要添加Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,添加"ByRef" lpRect As RECT) As Integer
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,byref lpRect As RECT) As Integer
Private Structure RECT
Dim Left As Integer
Dim Top As Integer
Dim Right As Integer
Dim Bottom As Integer
End Structure
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ksWND As integer
Dim ksTitle As String
Dim winS As RECT
If TextBox1.Text "" Then
ksTitle = TextBox1.Text
ksWND = FindWindow(vbNullString, ksTitle)
GetWindowRect(ksWND, winS)
MsgBox("左上角坐标(" winS.Left "," winS.Top ")" vbCrLf "右下角坐标(" winS.Right "," winS.Bottom ")" vbCrLf "窗口高" winS.Bottom - winS.Top "窗口宽" winS.Right - winS.Left)
Else
MsgBox("请填写窗口名称")
End If
End Sub
标题名称:关于vb.net显示前导0的信息
本文来源:http://scjbc.cn/article/dodsipp.html