Показать полную графическую версию : Visual Basic 2008
Страниц :
1
2
3
4
[
5]
6
7
8
9
10
11
12
13
14
15
16
17
18
А я нашел более простой спопсоб :
My.Computer.Keyboard.SendKeys("A")
Так у меня та же команда SendKeys, только без Нейм Спейса. А кратко как в VB6м.
И куда одна строчка кода отправит в этом случаи клавишу "A"? В активное окно, которое пользователь выберет?
Да. Ток щас ещё один вопрос возник : как сделать чтобы он отправлял не только буквы, но и нажатия клавишь "Ctrl", "Alt" и т.д. как это сделать?
Писать аргумент функции SendKeys.SendWait нужно в таком виде "{Ctrl}", "{Alt"}" Ctrl - "^", Alt - "%".
Вот так нажмём Enter
SendKeys.SendWait("{Enter}")
Можно ещё и комбинации передавать, например Ctrl+V будет так
SendKeys.SendWait(^V)
По остальным комбинациям нужно смотреть (http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx) их терминальные символы аналоги.
Чет не хочет он {Ctrl} воспринимать :(
Uzvern, А что вообще прога должна делать при Ctrl? Это часть команды в основном. Да это я чёто уже не то пишу, писал по аналогии с Enter.
Правильно Ctrl как ^, а Alt как %
Что б ничего не напутать в будущем, вот стоит почитать SendKeys Class (http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx)
Фух...все-таки я добил его и понял как отменять заверытие формы.
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Dim ms
ms = MsgBox("Выйти из программы?", MsgBoxStyle.YesNo, "Выйти?")
If ms = MsgBoxResult.No Then
e.Cancel = True
End If
End Sub
Красиво, со вкусом. :cool:
Как отпределить : файл или папка post=805673]»[/post]
Я тут одну старую програмулину на VB6м исправлял и нашёл достаточно толковый код по вопросу.
Function FileOrDirectory(ByVal Path As String) As String
If Dir(Path, FileAttribute.Directory) <> "" Then
Return "Directory"
Else
Return "File"
End If
End Function
Только что проверил. Работает и в VB.NET 2008м, изменив на новую константу FileAttribute.Directory вместо VB6й vbDirectory.
Я оформил в виде функции, использовать её можно так
MsgBox(FileOrDirectory("C:\Program Files\")
MsgBox(FileOrDirectory("C:\boot.ini")
Да и любые пути и файлы, впрочем Uzvern ещё тогда вокруг да около возле нужных команд шёл разговор :wink:
Dir("C:\Program Files\") - выводит "Это папка", если Dir("C:\boot.ini") - выводит "Это файл". »
1. Как можно сделать чтобы программа начинала поиск не с певого симола, а с символа последнего найденого слова ?
Например у мнея 3 слов : "String String String" их может быть сколько угодно.
Необходимо сделать чтобы она искала слово : "String". И чтобы можно было выполнять операцию вниз и вверх (вперед, назад).
2. Как создать папку?
Всем спасибо. С поиском разобрался, только пока что он работет только в одну сторону :
Public Class Form1
Dim FindingString As String = "asdgfsdfgsdfgsdfgStringsdfgsdfgsdfgStringsdfgsdfgsdfgString"
Dim FindString As String = "String"
Dim FirstTemp As String = ""
Dim SecondTemp As String = ""
Dim ValidateTemp As Integer = 0
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ValidateTemp = 0 Then
ValidateTemp = 1
FirstTemp = FindingString
SecondTemp = Mid(FirstTemp, InStr(FirstTemp, FindString))
FirstTemp = SecondTemp
MsgBox(FirstTemp)
Else
SecondTemp = Mid(FirstTemp, InStr(FirstTemp, FindString) + Len(FindString))
FirstTemp = SecondTemp
SecondTemp = Mid(FirstTemp, InStr(FirstTemp, FindString))
FirstTemp = SecondTemp
MsgBox(FirstTemp)
End If
End Sub
End Class
Думал не допру как сделать, но бошка походу варит если сделал.
С созданием папок тоже разобрался (Правда приходится создавать через cmd) :
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Shell("cmd /C MD C:\123", AppWinStyle.Hide)
End
End Sub
End Class
Можно ведь искать через Find, а чтобы можно было выполнять операцию вниз и вверх (вперед, назад) существуют операторы FindNext/FindPrevious. Можно и перебирать весь диапазона в цикле For Each.
Пример здесь Search and Highlight Text in a RichTextBox (http://www.dotnetcurry.com/ShowArticle.aspx?ID=146&AspxAutoDetectCookieSupport=1)
также здесь, поиск по таблице в Excel http://www.gotdotnet.ru/LearnDotNet/NETFramework/22054.aspx
Проще некуда
MkDir ("С:\Новая Папка")
Кстати, что такое цикл For Each?
Чет я немогу понять как юзать FindNext/FindPrevious. Можно показать на примере? В том примере не смог ничего путного понять.
Как полностью вырубить в VB.Net
1. синтаксическую проверку во время написания программы (подчерки и т.д.)
2. всяческие исправления
a) табулирование,
b) замены маленьких букв на большие,
c) постановку скобок,
d) авто закрытие циклов,
e) автозакрытие функций
и т.п
Заранее спасибо за ответ
For Each очень удобен когда на перёд не известно количество элементов, а While и Repeat не охота пристраивать, пример ( http://support.microsoft.com/kb/112330). Указанный Find/FindNext/FindPrevious будут работать при табличном представлении строчки, например как в Excel при указание Range.
Сдесь же можно переделать, добавив на форму ещё RichTextBox1 (для хранения строки и отображения результата) и TextBox1(для указания чего искать), указанный код к такому виду.
Public Class Form1
Dim FindingString As String = "asdgfsdfgsdfgsdfgStringsdfgsdfgsdfgStringsdfgsdfgsdfgString"
Dim FindString As String = "String"
'Dim FirstTemp As String = ""
'Dim SecondTemp As String = ""
'Dim ValidateTemp As Integer = 0
Dim start As Integer = 0
Dim indexOfSearchText As Integer = 0
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
RichTextBox1.Text = FindingString
TextBox1.Text = FindString
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'If ValidateTemp = 0 Then
'ValidateTemp = 1
'FirstTemp = FindingString
'SecondTemp = Mid(FirstTemp, InStr(FirstTemp, FindString))
'FirstTemp = SecondTemp
'MsgBox(FirstTemp)
'Else
'SecondTemp = Mid(FirstTemp, InStr(FirstTemp, FindString) + Len(FindString))
'FirstTemp = SecondTemp
'SecondTemp = Mid(FirstTemp, InStr(FirstTemp, FindString))
'FirstTemp = SecondTemp
'MsgBox(FirstTemp)
'End If
Dim startindex As Integer = 0
If TextBox1.Text.Length > 0 Then
startindex = FindMyText(TextBox1.Text.Trim(), start, RichTextBox1.Text.Length)
End If
' If string was found in the RichTextBox, highlight it
If startindex >= 0 Then
' Set the highlight color as red
RichTextBox1.SelectionColor = Color.Red
' Find the end index. End Index = number of characters in textbox
Dim endindex As Integer = TextBox1.Text.Length
' Highlight the search string
RichTextBox1.Select(startindex, endindex)
' mark the start position after the position of
' last search string
start = startindex + endindex
End If
End Sub
Public Function FindMyText(ByVal txtToSearch As String, ByVal searchStart As Integer, ByVal searchEnd As Integer) As Integer
' Unselect the previously searched string
If searchStart > 0 AndAlso searchEnd > 0 AndAlso indexOfSearchText >= 0 Then
TextBox1.Undo()
End If
' Set the return value to -1 by default.
Dim retVal As Integer = -1
' A valid starting index should be specified.
' if indexOfSearchText = -1, the end of search
If searchStart >= 0 AndAlso indexOfSearchText >= 0 Then
' A valid ending index
If searchEnd > searchStart OrElse searchEnd = -1 Then
' Find the position of search string in RichTextBox
indexOfSearchText = RichTextBox1.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None)
' Determine whether the text was found in richTextBox1.
If indexOfSearchText <> -1 Then
' Return the index to the specified search text.
retVal = indexOfSearchText
End If
End If
End If
Return retVal
End Function
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
start = 0
indexOfSearchText = 0
End Sub
End Class
После трёх нажатий в предыдущей версии коде выскакивает ошибка.
mrcnn,
Это всё выключается здесь Project -> Options-> Text Editor Basic -> VB Specific
http://funkyimg.com/u/870/783/VB_2k8_PNG.png
>>Это всё выключается здесь Project -> Options-> Text Editor Basic -> VB Specific
Отключения подчерков нет.
Как работать с Error , Err и т.д. + как выводить справку, после нажатия в MsgBox на кнопку "Справка"
mrcnn, да, верно, но всё другое отключается. Про подчёркивания я уточнил, когда увидел тему Visual Studio .Net (http://forum.oszone.net/thread-108118.html). Вероятно нужно в умной книге почитать, в Helpе так не находится. Искал по UnderLine Speell Check
Uzvern, если в коде нужно обработать одну строчку, в случаи ошибки, и ошибка одна, то можно используя конструкцию On Error Resume Next. Можно её использовать и не обрабатывать ошибки, оставив эту строчку в начале кода, так сказать пусть прога использует без ошибочную философию.
On Error Resume Next
'...
If Err.Number = <Номер ошибки> Then
'...Сообщаем что такая вот ошибка или делаем альтернативу, план Б
End If
Вместо Ifа конечно же можно использовать любой переборщик ошибок, например как case со следующего примера. Его имеет смысл использовать если у нас прям целый проблемный блок, и в котором при малейшой ошибке стоит покинуть и в обработчике разобраться что стряслось и объяснить пользователю в чём дело.
On Error GoTo Corrector
'...
Corrector:
Select Case Err.Number
Case <Номер ошибки>
'...Сообщаем что такая вот ошибка или делаем альтернативу, план Б
Case Else 'Когда не предвиденная ошибка
'...Так вот и так, отправте нам что привело к тому что выскочила такая ошибка
End Select
Узнать описание ошибки можно через код
On Error Resume Next
Err.Raise 6 ' Raise an overflow error иливместо 6ти указываем интересующий номер
MsgBox ("Error # " & CStr(Err.Number) & " " & Err.Description)
Err.Clear ' Clear the error.
Ну и наконец-то в VB добавили конструкцию try, которая лично мне знакома с Delphi, я в начале поста упомянул о без проблемных/безошибочных прогах, так вот эта конструкция пробует(в переводе с try) выполнять ту часть кода, которая может быть потенциально ошибочной.
Try
Catch ex As Exception
End Try
В случаи чего мы предвидим потенциальную ошибку, через Catch ex, и обрабатываем.
Ещё раз повторюсь, что в VB6м данной конструкции не было.
С Helpom не всё в порядке, вроде бы всё просто
MsgBox("Nead Help", MsgBoxStyle.MsgBoxHelp, "Little Help or Not")
Но функция MsgBox не возвращает (http://msdn.microsoft.com/en-us/library/2c42kya8.aspx) никаких значений, если нажали Help. Нужно искать другой подход.
В VB6м сама структура
Function MsgBox(Prompt, [Buttons As VbMsgBoxStyle = vbOKOnly], [Title], [HelpFile], [Context]) As VbMsgBoxResult Member of VBA.Interaction
просит указать файл справки, да и раздел справки.
Не сказал бы, что это уж очень популярная фича, вызов из MsgBoxа справки. Если интерфейс интуитивно понятный то и справка не нужна. Тем не менее, правила хорошего тона обязывают её существование и дистрибуцию вместе с программой.
Что за фигню (в каких единицах) мне возвращает Math.Acos и как эту фигню превратить в градусы?
Мне нужно значение в градусах, полученное из косинуса
mrcnn, MSDN нету? Ставится даже c Express редакцией. Причём на неё можно поставить полный (http://www.microsoft.com/downloads/details.aspx?FamilyId=6FF3BC60-32C8-4C22-8591-A20BF8DFF1A2&displaylang=en) не Express.
Всё верно результата возвращает в specified number.
Math.Acos Method (http://msdn.microsoft.com/en-us/library/system.math.acos.aspx)
Что делает эта комманда : TextBox1.Undo() ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC