Показать полную графическую версию : Visual Basic 2008
Страниц :
1
2
3
4
5
6
7
8
9
10
11
12
[
13]
14
15
16
17
18
В чем различие Next и Next(x) в цикле For(Each)(x)
Например,
For FEE As Integer = 0 To DisplayOfValues - 1
SB.Append(Args(FEE))
Next
For FEE As Integer = 0 To DisplayOfValues - 1
SB.Append(Args(FEE))
Next FEE
Delirium
21-08-2008, 01:07
НИКАКОГО :) просто в старых версия basic'a необходимо было писать next FEE, а потом упростили и сделали без FEE. Можно писать обоими способами :)
А можно как-то по быстрому заполнить ListBox значение из алфавита?
чтобы не писать вот так
ListBox1.Items.Add("A")
ListBox1.Items.Add("B")
ListBox1.Items.Add("C")
ListBox1.Items.Add("D")
ListBox1.Items.Add("E")
ListBox1.Items.Add("F")
ListBox1.Items.Add("G")
или так
With ListBox1.Items
.Add("A")
.Add("B")
.Add("C")
.Add("D")
.Add("E")
.Add("F")
.Add("G")
End With
а как-то побыстрей. там вроде как-то можно через For или чет типо того, но точно не уверен...
Delirium
21-08-2008, 01:31
Смотрите в сторону CHR - то есть это функция, возвращающая символ по коду. К примеру chr(65) - "а" - по моему. chr(66) - "б".
О, нашел в MSDN:
Dim associatedChar As Char
' Returns "A".
associatedChar = Chr(65)
' Returns "a".
associatedChar = Chr(97)
' Returns ">".
associatedChar = Chr(62)
' Returns "%".
associatedChar = Chr(37)
Соотв-но, надо найти коды русских букв и запулить их через for-next
Parameters
CharCode
Type: System..::.Int32
Required. An Integer expression representing the code point, or character code, for the character. If CharCode is outside the valid range, an ArgumentException error occurs. The valid range for Chr is 0 through 255, and the valid range for ChrW is -32768 through 65535.
______
ЗАчем их искать, если можно тупо самому их узнать
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim RB As New RichTextBox
RB.Dock = DockStyle.Fill
Controls.Add(RB)
For Chars As Integer = 0 To 255
If Chars <> 255 Then
RB.Text &= Chr(Chars) & " - " & Asc(Chr(Chars)) & Chr(13)
Else
RB.Text &= Chr(Chars) & " - " & Asc(Chr(Chars))
End If
Next
End Sub
End Class
Об этом я знал, просто думал, что можно как-то ещё...
Delirium
21-08-2008, 01:46
Коды всех символов всего 255 »
valid range for ChrW is -32768 through 65535. »
ну и не 255 их, а чутка побольше :)
Об этом я знал, просто думал, что можно как-то ещё... »
а зачем изобретать велосипед, если все уже есть :)
Скажем так : я любознательный и хочу знать больше :biggrin:
valid range for ChrW is -32768 through 65535.»
ухух...надо бы как то их тоже достать
Почему данный код не срабатывает?
Me.Controls.AddRange(New Object() {L, TB, B, C})
Delirium
27-08-2008, 01:09
Почему данный код не срабатывает? »
Дык вы приведите хотя бы часть кода и описание ошибки, тогда и видно будет, почему не срабатывает :)
Хочу добавить на форму объекты
Не удалось привести тип объекта "System.Object[]" к типу "System.Windows.Forms.Control[]".
Вот так все прекрасно добавляется
With Controls
.Add(L)
.Add(B)
.Add(TB)
.Add(C)
End With
А вот так не хочет
Dim L As New Label
Dim B As New Button
Dim TB As New TextBox
Dim C As New CheckBox
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Me.Controls.AddRange(New Object() {L, B, TB, C})
Catch ex As Exception
MsgBox(ex.Message)
Clipboard.SetText(ex.Message)
End Try
End Sub
Исходя из ошибки пробовал заменить Object на Control, но тогда вообще никакой ошибки не выскакивает, но и объекты тоже не добавляются!
Delirium
27-08-2008, 01:34
В смысле добавить объекты? ПРограммно, чтобы при загрузке формы добавлялись объекты эти? А сразу нарисовать их не проще? Вы же добавляете дефолтные объекты.
А вообще, вот цитата с MSDN
The following code example adds two Control objects to the Control..::.ControlCollection of the derived class Panel. The example requires that you have created a Panel control and a Button control on a Form. When the button is clicked, two RadioButton controls are added to the panel's Control..::.ControlCollection.
Visual Basic Copy Code
' Create two RadioButtons to add to the Panel.
Dim RadioAddButton As RadioButton = New RadioButton()
Dim RadioAddRangeButton As RadioButton = New RadioButton()
' Add controls to the Panel using the AddRange method.
Private Sub AddRangeButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles AddRangeButton.Click
' Set the Text the RadioButtons will display.
RadioAddButton.Text = "RadioAddButton"
RadioAddRangeButton.Text = "RadioAddRangeButton"
' Set the appropriate location of RadioAddRangeButton.
RadioAddRangeButton.Location = New System.Drawing.Point( _
RadioAddButton.Location.X, _
RadioAddButton.Location.Y + RadioAddButton.Height)
' Add the controls to the Panel.
Panel1.Controls.AddRange(New Control() {RadioAddButton, RadioAddRangeButton})
End Sub
ДОбавляют 2 элемента, НО: объявляют их как Dim RadioAddButton As RadioButton = New RadioButton() и потом задают им свойства. Без этого, скорее всего, они не добавятся.
Delirium
27-08-2008, 02:16
Получилось?
Delirium, ну вроде бы да :)
Как в For Each можно перейти на следующий элемент? Наример мне ненужно записывать какое-то значение, и если оно обнаружено, то переходит на следующий.
вот например пытаюсь сделать обход System Volume Information, но она все-равно проскакивает
Function GetFilesAndFolders(ByVal Folder As String) As String
Dim StringBuilder As New System.Text.StringBuilder
Dim FolderName As IO.DirectoryInfo
StringBuilder.AppendLine(Folder)
For Each Path As String In IO.Directory.GetDirectories(Folder)
Try
FolderName = My.Computer.FileSystem.GetDirectoryInfo(Folder)
If FolderName.Name = "System Volume Information" Then
ChDir("..")
Continue For
End If
ChDir(Path)
StringBuilder.AppendLine(GetFilesAndFolders(Path))
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Ошибка")
End Try
Next
For Each File As String In IO.Directory.GetFiles(Folder)
StringBuilder.AppendLine(File)
Next
Return StringBuilder.ToString
End Function
Delirium
05-09-2008, 01:53
В смысле обход? Нужно именно поймать "System Volume Information" или пропустить его в обходе?
Протестировал код... Когда в качестве параметра функции пишу "C:\", начинается обход с корня диска и подвисает, точнее очень долго делает обход всех папок.
ЧТобы цикл зашел в нужную папку, прописал вот так:
If Path = Folder & "System Volume Information" then
вместо If FolderName.Name = "System Volume Information" Then »
Только я не пойму, что дальше то сделать надо вам :)
Мне необходимо его наоборот пропустить!
Uzvern, оно и будет пропускать если подкорректировать условия, как подсказал Delirium. Проверяется это очень просто добавлением строчки Print.Debug("FolderName.Name") после условия, что б видеть что оно сработало. Можно и до, будут отображаться все пути пройденные программой, это ещё наглядно будет показывать что программа не висит.
Очень хорошо что была найдена (http://forum.oszone.net/post-878011.html#post878011) возможность добавлять свой пункт в контекстное меню. :up:
Delirium по дефолту к данной папке (при условии использовании NTFS) доступ заказан даже админу вот по этому Uzvern потребовалось обойти эту папку.
Как можно открыть папку и выделить неоходимый файл?
Что бы выделить файл, например boot.ini в корне диска C, необходим код следующего вида
Call Shell("Explorer.exe /n,/e,/select, C:\boot.ini", vbNormalFocus)
>> (http://support.microsoft.com/kb/130510/ru)
Call
Что означает? Не первый раз уже вижу это слово в кодах, но так и не понял для чего же оно :dont-know
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC