Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование (VB,C#,ASP,.NET): новости, советы, примеры


Выпуск # 720

Очередной выпуск рассылки! За последнее время на сайте произошло столько всего, столько всего, что все просто не уместилось в этот выпуск! Но ничего, ведь вы всегда можете ознакомиться со всеми обновлениями непосредственно посетив сайт. Кстати, помимо изменения в содержании Kbyte.Ru, появлении новых интересных материалов, проект постоянно совершенствуется технически, и вы можете принять в этом непосредственное участие, присылая свои идеи и предложения.
Надеюсь, этот выпуск будет интересен для вас. Если вы хотите увидеть в следующих выпусках что-то конкретное, напишите мне об этом на ящик subscribe@kbyte.ru.


Содержание выпуска

Читайте в этом выпуске:

Если у вас есть вопросы по программированию или работе с компьютером, не стесняйтесь, спрашивайте.

Форумы Kbyte.Ru

На форумах Kbyte.Ru постоянно появляются новые интересные темы и обсуждения. В этом выпуске представлены лишь новые темы, с момента прошлой рассылки.

Кстати, любой желающий может на форумах Kbyte.Ru совершенно свободно получить помощь грамотных специалистов в области программирования, да и в целом информационных технологий.

Задать свой вопрос прямо сейчас

И снова я с вопросом! У меня такой вопрос как открыть файл в софтине когда я открываю файл через проводник? То есть когда в системе стоит ассоциация на расширение файла на софтину в системе.

[- к содержанию -]

Ответ #1 @Алексей Немиро 14.03.2013 20:44
Process.Start("C:\путь к файлу")

[- к содержанию -]

Ответ #2 @Алексей Немиро 14.03.2013 21:25
А если нужно ассоциировать тип файлов со своей программой, то вот пример: http://www.codeproject.com/Articles/18594/File-Association-in-VB-NET

[- к содержанию -]

Ответ #3 @Rotgar405 14.03.2013 22:14
Да нет всё ка как раз наоборот. Причём тут Process.Start("C:\путь к файлу").
Адрес то каким боком прогу попадёт? Наверное приёмная часть должна же быть. Проводник то направляет по ассоциации. Наверное событие же возникнет когда ОС данные отправит.

[- к содержанию -]

Ответ #4 @Алексей Немиро 14.03.2013 22:35
Тогда ответ #2 содержит решение.

[- к содержанию -]

Добавить свой ответ в эту тему
Можно ли загрузить файлы на yandex.narod ??

[- к содержанию -]

Ответ #1 @Алексей Немиро 14.03.2013 19:49
Нет ничего невозможного.

Как я понимаю, Яндекс.Диск для работы использует свой софт. Нужно скачать его, установить и настроить подключение через Fiddler. Посмотреть на трафик.
Это должно быть даже проще, чем загружать на сайты.

[- к содержанию -]

Добавить свой ответ в эту тему
Всем привет и как поместить программу в трей при запуске? И так при автозапуске компьютера?

[- к содержанию -]

Ответ #1 @Shark1 14.03.2013 20:12
Всем привет и как поместить программу в трей при запуске?

ну например так :

(форма не будет отображена на экране)

Public taskIcon As New NotifyIcon

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Left = Screen.PrimaryScreen.WorkingArea.Width + Me.Width
        Me.Top = Screen.PrimaryScreen.WorkingArea.Height + Me.Height
        taskIcon.Icon = My.Resources.redbox (здесь ресурс вашей иконки)
        taskIcon.Visible = True
End Sub

[- к содержанию -]

Ответ #2 @Crash666 14.03.2013 20:18
А это идея =))

[- к содержанию -]

Ответ #3 @Shark1 14.03.2013 20:22
И так при автозапуске компьютера?

CheckBox - это например у вас в настройках есть такой элемент управления "CheckBox" для указания автозапуска при старте операционной системы.

Public taskIcon As New NotifyIcon

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
	    Me.Left = Screen.PrimaryScreen.WorkingArea.Width + Me.Width
	    Me.Top = Screen.PrimaryScreen.WorkingArea.Height + Me.Height
	    taskIcon.Icon = My.Resources.redbox (здесь ресурс вашей иконки)
	    taskIcon.Visible = True
            autoLoad()
	End Sub

Private Sub autoLoad()
        Try
            Dim KeyValue As String = "Software\Microsoft\Windows\CurrentVersion\Run"
            Dim regVersion As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(KeyValue, True)
            If Not regVersion Is Nothing Then
                If CheckBox.Checked Then
                    If regVersion.GetValue("Название вашей программы") <> Application.ExecutablePath Then
                        regVersion.SetValue("Название вашей программы"", Application.ExecutablePath, Microsoft.Win32.RegistryValueKind.String)
                    End If
                Else
                    regVersion.DeleteValue("Название вашей программы"", False)
                End If
                regVersion.Close()
            End If
        Catch ex As Exception
            CheckBox.Checked = False
        End Try
    End Sub


[- к содержанию -]

Ответ #4 @Crash666 14.03.2013 20:49
я так понял запись в реестр, а как удалить?=)

[- к содержанию -]

Ответ #5 @Shark1 14.03.2013 23:06
я так понял запись в реестр, а как удалить
При изменении состояния элемента управления CheckBox на ISChecked=False

Ну например в событии:

Private Sub CheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox.CheckedChanged
     autoLoad()
End Sub

[- к содержанию -]

Добавить свой ответ в эту тему
ИИИИИИИИИИИИИИИИИИИИИИИИИии всееееееем здарова у меня такой вопрос: при старте моей программы мне нужно указать где появляться(допустим верхний левый угол) а так же еще 5 мест правый верхний левый нижний и левый правый центер(ну это CenterScreen поэтому не берем в голову) и трей(с треем думаю я разберусь вроде вот:) и дело в том что нам не известен размер манитора поэтому заранее не получится установить кардинаты...
И вот код для трея
Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
        Me.Show()
        Me.WindowState = FormWindowState.Normal
    End Sub
 
    Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
        If Me.WindowState = FormWindowState.Minimized Then
            Me.Hide()
        End If
    End Sub

[- к содержанию -]

Ответ #1 @Алексей Немиро 14.03.2013 12:37
Me.Left - позиция по X
Me.Top - позиция по Y.
Например:
Me.Left
= 100
Me.Top = 100
'отступ в 100 пикселей от левой и верхней части экрана

Что касается экрана, то:
Screen.PrimaryScreen.WorkingArea.Width 'ширина рабочей области
Screen.PrimaryScreen.WorkingArea.Height 'высота рабочей области
'рабочая область - область экрана, исключая закрепленные элементы, такие как Панель задач.

Screen.PrimaryScreen.Bounds.Width 'ширина всего экрана
Screen.PrimaryScreen.Bounds.Height 'высота всего экрана

[- к содержанию -]

Ответ #2 @Crash666 14.03.2013 13:10
Получается способом вычитания?

[- к содержанию -]

Ответ #3 @Алексей Немиро 14.03.2013 13:28
Да. Например, чтобы поместить форму в правом верхнем углу, нужно вычесть ширину формы от ширины рабочей области экрана:
Me.Left = Screen.PrimaryScreen.WorkingArea.Width - Me.Width

[- к содержанию -]

Ответ #4 @Crash666 14.03.2013 16:28
Ответ #5 @Crash666 14.03.2013 16:42
А как в верхнем левом?

[- к содержанию -]

Добавить свой ответ в эту тему · В теме есть еще 8 ответов. Смотреть все ответы.
Приветствую!
Если
PictureBox.Image = Image.FromFile("D:\Izo\C3.gif")
У меня вопрос. A как мне сохранить с picturBox-a на диск?
С уважением, Akiva.

[- к содержанию -]

Ответ #1 @Алексей Немиро 12.03.2013 17:18
PictureBox.Image.Save("D:\Izo\C3.gif", ImageFormat.Gif)
JPEG:
Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality
Dim myEncoderParameter As System.Drawing.Imaging.EncoderParameter
Dim myEncoderParameters As New System.Drawing.Imaging.EncoderParameters(1)
Dim myImageCodecInfo As System.Drawing.Imaging.ImageCodecInfo
myImageCodecInfo = GetEncoderInfo(System.Drawing.Imaging.ImageFormat.Jpeg)
myEncoderParameter = New System.Drawing.Imaging.EncoderParameter(myEncoder, CType(75L, Integer)) '75 - качество изображение, от 0 до 100
myEncoderParameters.Param(0) = myEncoderParameter
PictureBox.Image.Save("D:\Izo\C3.jpg", myImageCodecInfo, myEncoderParameters)
  ''' <summary>
  ''' Returns JPEG codec / Создает кодек для сохранения JPEG
  ''' </summary>
  Private Function GetEncoderInfo(ByVal format As System.Drawing.Imaging.ImageFormat) As System.Drawing.Imaging.ImageCodecInfo
    Dim j As Integer = 0
    Dim encoders() As System.Drawing.Imaging.ImageCodecInfo
    encoders = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
    While j < encoders.Length
      If encoders(j).FormatID = format.Guid Then
        Return encoders(j)
      End If
      j += 1
    End While
    Return Nothing
  End Function

[- к содержанию -]

Добавить свой ответ в эту тему
Reg4 @i32 12.03.2013 12:56
День добрый Что то не вьезжаю как стереть значение .От двоеточия до конца..
 Dim sFileContent As String = TextBox1.Text
        If sFileContent.Count = "(:)" Then Regex.Replace((sFileContent.Count - 1), "", RegexOptions.Multiline)
        TextBox1.Text = sFileContent
Естественно до ":" оставить в Т.Б,
Спасибо..

[- к содержанию -]

Ответ #1 @Алексей Немиро 12.03.2013 13:39
If sFileContent.Count = "(:)" Then Regex.Replace((sFileContent.Count - 1), "", RegexOptions.Multiline)
Этот код ничего не делает.
Replace - это функция, она возвращает измененный текст. В данном случае, измененный текст никуда не передается.
А sFileContent.Count = "(:)" это вообще как. Свойства Count - это число, его сравнивать со строкой нельзя.
Dim sFileContent As String = TextBox1.Text
If Not sFileContent.IndexOf(":") = -1 Then sFileContent = Regex.Replace(sFileContent, "([\w]{1}):(\\.*)", "$1")
TextBox1.Text = sFileContent
Не проверял.

[- к содержанию -]

Ответ #2 @i32 12.03.2013 17:40
Dim sFileContent As String = TextBox1.Text
        If Not sFileContent.IndexOf("\x3A") = -1 Then sFileContent = Regex.Replace(sFileContent, "([\w]{1}):(\\.*)", "$1")
        TextBox1.Text = sFileContent
Не удаляет в Т.Б. Все по старому..Я уже поменял ":" на Хекс - не фига.

[- к содержанию -]

Ответ #3 @i32 12.03.2013 17:51
Понял...(Невнимательно подошел..Длинное горазд значение..) Там 3 -и -ПОСТОЯННЫХ (:) -Удалил последнюю . Как удалить все после Первого..?Не понимаю
"([\w]{1}):(\\.*)", "$1")

[- к содержанию -]

Ответ #4 @Алексей Немиро 12.03.2013 17:58
Если образец строки отличается от C:\коакой-то\путь, то мой шаблон работать не будет. Нужен образец текста.
А если не отличается, то все работает. Проверил, остается только буква диска.

[- к содержанию -]

Ответ #5 @Алексей Немиро 12.03.2013 18:01
Кстати, если нужен первый символ, то можно так получить:
TextBox1.Text = sFileContent.Substring(0, 1)
или до первого двоеточия:
TextBox1.Text = sFileContent.Substring(0, sFileContent.IndexOf(":"))

[- к содержанию -]

Добавить свой ответ в эту тему · В теме есть еще 7 ответов. Смотреть все ответы.
Всем привет и вопрос: как(если возможно) изменить OpenFileDialog конкретно мне нужно изменить текст на кнопке "Открыть" на "Добавить" и сделать в OPF мультивыбор?!

[- к содержанию -]

Ответ #1 @Алексей Немиро 12.03.2013 12:16
сделать в OPF мультивыбор
В нем свойство есть такое, которое так и называется - Multiselect :)
изменить текст на кнопке "Открыть" на "Добавить"
Так просто не получится сделать. Вот пример: http://www.codeproject.com/Articles/16276/Customizing-OpenFileDialog-in-NET

[- к содержанию -]

Ответ #2 @Crash666 14.03.2013 05:27
Как мне это сделать?

Представьте себе, OpenFileDialogEx как абстрактный класс: единственная причина, я не делал этого класса абстрактных потому, что VS IDE не может создать экземпляр абстрактного класса, который позволяет избежать оказания на экране.

Вы можете использовать OpenFileDialogEx класса, как это, но не имеет смысла, поскольку она не содержит дополнительной функциональности, просто пустой UserControl .

Таким образом, вы должны наследовать OpenFileDialogEx, чтобы создать свою собственную версию диалог открытия файла.

После того как вы наследуют OpenFileDialogEx , вы создали таможенный контроль, где вы можете добавить любой элемент управления, вы можете добавить дополнительные кнопки, панели, или группа ящики. В основном, это контроль контейнера, а позже этот контейнер будет "прилагается" к сети. OpenFileDialog объекта на лету.

Есть три дополнительных свойств, три метода, и два события в этом элементе управления, которые отличаются от любых UserControl .
не в ту тему опубликовал

[- к содержанию -]

Ответ #3 @Алексей Немиро 14.03.2013 10:44
Видимо имеется ввиду, что создавать экземпляр OpenFileDialogEx имеет смысл только программно, как показано в примере (см. код обработчика нажатия кнопки основной формы).
private void button1_Click(object sender, EventArgs e)
{
    FormOpenFileDialog controlex            = new FormOpenFileDialog();
    controlex.StartLocation                 = AddonWindowLocation.Right;
    controlex.DefaultViewMode               = FolderViewMode.Thumbnails;
    controlex.OpenDialog.InitialDirectory   = Path.GetFullPath(Application.ExecutablePath);
    controlex.OpenDialog.AddExtension       = true;
    controlex.OpenDialog.Filter             = "Image Files(*.bmp;*.jpg;*.gif;*.png)|*.bmp;*.jpg;*.gif;*.png";
    controlex.ShowDialog(this);
    controlex.Dispose();
}

PS: Только что проверил, у меня это решение в Windows 7 не работает. Открывается стандартное окно.

[- к содержанию -]

Ответ #4 @Crash666 14.03.2013 11:51
Тогда оставлю стандарт

[- к содержанию -]

Добавить свой ответ в эту тему
Среда Visual Basic NET STUDIO’2010 Professional
На "Form1" имеется "DataGridView 1", который заполнен из ACCESS
Внёс изменения в столбец номер 1 строки номер 4.
Изменения ввожу в TextBox, находящемся на другой форме "SubFormForEnter2".
После закрытия второй формы указатель в "DataGridView 1" становится на
Нолевую строку, а надо поставить на 4-ую строку, т.е. ту, которую отредактировал.

Public
LastPos As Integer ' храню номер редактируемой строки. Объявлена в "Module1"
На "Form1" имеется кнопка Button9, к которой прикреплён код:
LastPos = Me.DataGridView1.CurrentCellAddress.Y ' запоминаю номер РЕДАКТИРУЕМОЙ строки – это 4-ая строка
With SubFormForEnter2 
     .txtLastName.Text = DataGridView1.CurrentRow.Cells(1).Value
    .Show() ' показываю форму "SubFormForEnter2"
End With

Для возврата на 4-ую строку после закрытия SubFormForEnter2
Использую нижеприведенную строку
Me.DataGridView1.CurrentCell = Me.DataGridView1.Item(0, LastPos) 
в событии щелчка на кнопке Button9 после "End With"
1. В коде, прикреплённом к кнопке " Button1", находящейся на "SubFormForEnter2"
Form1.DataGridView1.CurrentCell = Form1.DataGridView1.Item(0,
LastPos) 
Эта кнопка закрывает форму "SubFormForEnter2" и сохраняет внесенніе изменения в таблицу
2. В коде события формы SubFormForEnter2:
Private Sub SubFormForEnter2_FormClosing
События Validating< Validated НЕ ПОДХОДЯТ.
Проверка значения в переменной LastPos показывает, что оно = 0,
А должно быть 4. Проверял по всему решению не изменется ли значение
Переменной LastPos? – не меняю нигде. Только один раз вверху:
СПАСИБО!

[- к содержанию -]

Ответ #1 @Алексей Немиро 11.03.2013 17:11
Значение LastPos можно передавать в свойство Tag создаваемого экземпляра формы:
With
SubFormForEnter2 
   .Tag = Me.DataGridView1.CurrentCellAddress.Y 'или Me.DataGridView1.CurrentCell.RowNumber
   .txtLastName.Text = DataGridView1.CurrentRow.Cells(1).Value
   .Show() ' показываю форму "SubFormForEnter2"
End With
Form1.DataGridView1.CurrentCell = Form1.DataGridView1.Item(0, Me.Tag)

Это самый простой, но не идеальный, вариант.
Правильней передавать подобные значения через конструктор. В форме SubFormForEnter2 объявить метод New:
Private _LastPos As Integer
Public Sub New(lastPos As Integer) 'можно указать любое количество переменных, любого типа
  'код, который должна сгенерировать Visual Studio нужно оставить без изменений
   _LastPos = lastPost ' передаем полученное значение в локальную переменную на уровне формы
End Sub
Form1.DataGridView1.CurrentCell = Form1.DataGridView1.Item(0, _LastPos)
при создании экземпляра формы передать номер строки:
Dim SubFormForEnter2 As New SubFormForEnter2(Me.DataGridView1.CurrentCell.RowNumber)
With SubFormForEnter2 
   .txtLastName.Text = DataGridView1.CurrentRow.Cells(1).Value
   .Show() ' показываю форму "SubFormForEnter2"
End With

Или можно сделать свойство в форме SubFormForEnter2, и использовать по аналогии с Tag.

В коде формы SubFormForEnter2:
Public Property LastPos As Integer
With SubFormForEnter2 
   .LastPos = Me.DataGridView1.CurrentCellAddress.Y 'или Me.DataGridView1.CurrentCell.RowNumber
   .txtLastName.Text = DataGridView1.CurrentRow.Cells(1).Value
   .Show() ' показываю форму "SubFormForEnter2"
End With

[- к содержанию -]

Ответ #2 @capetownn 12.03.2013 18:07
Большое спасибо за столь много приложенных Вами усилий
помочь решить проблему.
К сожалению она к успеху не привела.
Вот что имеем после ИЗМЕНЕНИЙ В ТЕКСТЕ процедур:
Конструктор с параметром, который Вы предложили создать, приводит
к error если конструктор без параметров временно закомментировать, на Form1 оператор
With SubFormForEnter2 
   .MaskTxtBoxtxtNumPensCertificate.Text = DataGridView1.CurrentRow.Cells(0).Value
  .Tag = Me.DataGridView1.CurrentCellAddress.Y 'или Me.DataGridView1.CurrentCell.RowNumber  
   '- .Tag = Me.DataGridView1.CurrentCell. ' RowNumber - отсутствует после точки
End With
Ошибка 11 "SubFormForEnter2" является типом и не может использоваться как выражение.
Public Sub New(ByVal lastPos As Integer) 'можно указать любое количество переменных, любого типа  
        InitializeComponent()
        _LastPos = lastPos ' передаем полученное значение в локальную переменную на уровне формы  
End Sub
Public Sub New() 
        InitializeComponent()
        _LastPos = LastPos ' передаем полученное значение в локальную переменную на уровне формы  
End Sub
Транслятор выбирает ТОЛЬКО конструктор без параметров, несмотря на присутствие их обоих в классе формы "SubFormForEnter2"

Ниже строка, используемая Me.Tag корректна, НО НЕ ВЫБИРАЕТ 4-УЮ строку в DataGridView1
Form1.DataGridView1.CurrentCell = Form1.DataGridView1.Item(0, Me.Tag)
Строку
Dim SubFormForEnter2 As New SubFormForEnter2(Me.DataGridView1.CurrentCell.RowNumber)

Перед With SubFormForEnter2 транслятор НЕ ПРОПУСКАЕТ из-за "RowNumber"
Ошибка 15 Ссылка на член, не являющийся общим, должна быть ссылкой на объект.
Это сообщение выводится если закомментировать конструктор без парметров в Form1. Предполагаю, что Ваше намерение
Dim SubFormForEnter2 As New SubFormForEnter2(Me.DataGridView1.CurrentCell.RowNumber)
Правильное, ЕСЛИ бы не RowNumber.
Я, к сожалению, НЕ МОГУ ЭТОГО РЕШИТЬ.
PS: Форма "SubFormForEnter2" "знает" номер редактируемой строки, например, 4.

СПАСИБО!

[- к содержанию -]

Ответ #3 @Алексей Немиро 12.03.2013 19:15
'- .Tag = Me.DataGridView1.CurrentCell. ' RowNumber - отсутствует после точки
Значит RowIndex. Всех названий не запомнить, нужно логику использовать :)
Public Sub New()
InitializeComponent()
_LastPos = LastPos ' передаем полученное значение в локальную переменную на уровне формы
End Sub
В безпараметизированном конструкторе невозможно принять LastPos, т.к. его просто там нет.


В целом, мне не понятно, при каких обстоятельствах вообще теряется выбранная строка.
Набросал пример, см. прикрепленный файл. В примере форма редактирования открывается в виде диалогового окна, блокируя основное окно. В форму редактирования передается ссылка на DataGridView и вся дальнейшая работе делается по этой ссылке. Но вообще, вариантов решения данной задачи может быть множество.

[- к содержанию -]

Добавить свой ответ в эту тему
Ну собственно всем привет, и давайте я поясню вопрос мне нужно отобразить в progressbar одну строчку кода то есть и прошлой темы там файл загружается на файлообменник и если он большой программа виснет мне нужно сделать прогресс бар для этого, но как?

[- к содержанию -]

Ответ #1 @Алексей Немиро 11.03.2013 11:36
Либо использовать потоки:
Private Sub SendKudaUgodno() 'это может быть, например, обработчик нажатия кнопки
    Dim t As New Thread(AddressOf SendKudaUgodno_Start)'создаем поток
    t.IsBackground = True 
    t.Start()'запускаем поток
End Sub

Private Sub SendKudaUgodno_Start()
    'веб-запрос в потоке
    Using w As New FoxTools.Lib.Net.Web()
      w.Method = [Lib].Net.Enums.HttpMethod.POST
      w.Url = "http://example.com"
      w.ContentType = "multipart/form-data" 'важно, если указать неверно, то сервер может не понять, что ему суют
      w.Queries.AddFile("myfile", "test.png", GetImageBuffer(), "image/png")'снимок экрана в виде массива байт можно получить при помощи функции GetImageBuffer()
      Dim result As String = w.ExecuteString()
      ShowResultOfSending(result)
    End Using
End Sub

Private Sub ShowResultOfSending(result As String)
    If Me.InvokeRequired Then
      Me.Invoke(New Action(Of String)(AddressOf ShowResultOfSending), result)
      Return
    End If
    'в этом месте можно безопасно обращаться к элементам формы (окна)
    'например:
    Me.Text = result
End Sub
Либо использовать асинхронные методы (имеют суффикс Async).

Выше представлен пример кода для программы "Хитрый стрелок экранов".

Получить размер отправленных/принятых данных возможности нет (не реализовано).

[- к содержанию -]

Ответ #2 @Crash666 11.03.2013 12:40
У меня ошибки в коде выходят, можете как уже готовый проект кинуть?

[- к содержанию -]

Ответ #3 @Алексей Немиро 11.03.2013 13:55
Какие конкретно ошибки?
Готовый код есть в коде Хитрого стрелка.

Работа с потоками, относительно сложная тема, которая имеет некоторые нюансы.

[- к содержанию -]

Ответ #4 @Crash666 11.03.2013 14:08
Сейчас скриншот сделаю

[- к содержанию -]

Ответ #5 @Crash666 11.03.2013 14:20
Добавить свой ответ в эту тему · В теме есть еще 21 ответов. Смотреть все ответы.
Здравствуйте знатоки
Вопрос следующего характера имеется на форме DataGridView привязанная к БД подскажите как можно выгрузить всё содержимое в полях имеютсяизображение (по фильтру) в .xml

По примеру без привязанных данных, работает :
Imports System.Xml
Imports System.Data

Public Class WorkToXML

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        'Creating a openfile dialog
        Dim open_file As New OpenFileDialog
        open_file.Filter = "Files (*.xml)|*.xml"

        Try
            'if ok click at opendialog
            If open_file.ShowDialog() = DialogResult.OK Then
                'define a xml reader
                Dim xmlFile As XmlReader
                'get xml data from the path
                xmlFile = XmlReader.Create(open_file.FileName, New XmlReaderSettings())
                'define a new dataset
                Dim ds As New DataSet
                'read xml data
                ds.ReadXml(xmlFile)
                'show xml data in datagridview
                DataGridView1.DataSource = ds.Tables(0)
            End If

        Catch ex As Exception
            'if any problem show error
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim save_file As New SaveFileDialog
        save_file.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*"
        save_file.FilterIndex = 2
        Dim my_datatable As New DataTable
        If save_file.ShowDialog() = DialogResult.OK Then

            'get datagridview source to datatable
            my_datatable = CType(DataGridView1.DataSource, DataTable)


            'save datatable with xml format
            my_datatable.WriteXml(save_file.FileName)


        End If

    End Sub
End Class
Спасибо

[- к содержанию -]

Ответ #1 @Shark1 10.03.2013 15:02
Не совсем все понятно выложите полный пример, да и измените индекс :save_file.FilterIndex = 2 на save_file.FilterIndex = 1 или 0 , так как у вас там всего два индекса.(индексирование начинается с 0)...

[- к содержанию -]

Добавить свой ответ в эту тему

Все темы и обсуждения

Исходные коды

Реализация HTTP-запросов через Sockets

C#: Протоколы и стандарты @Алексей Немиро 11.03.2013 18:26
Пример реализации отправки запросов методом GET по протоколу HTTP на языке C#.

К данном исходному коду прилагаются файлы примеров. Скачать.

[- к содержанию -]

Image Mark Solution

Visual Basic .NET: Графика @Shark1 10.03.2013 14:37
Пример нанесения меток (отметок) на изображение.

К данном исходному коду прилагаются файлы примеров. Скачать.

[- к содержанию -]

Все исходные коды

Вакансии в IT

Программист 1С на подряд со свободным графиком

Россия, Москва | Работа в офисе

1с программист

Россия, Москва | Работа в офисе

Ведущий разработчик PHP

Россия, Москва | Работа в офисе | 165 000,00 KBP

Инженер-программист

Россия, Москва | Работа в офисе | 80 000,00 KBP

Web программист

Россия, Москва | Работа в офисе | 60 000,00 KBP

Программист-аналитик (алгоритмическая торговля)

Россия, Москва | Работа в офисе | 120 000,00 KBP

Web программист

Россия, Москва | Работа в офисе | 60 000,00 KBP

Программист PHP со знанием Битрикс

Россия, Москва | Работа в офисе | 100 000,00 KBP

Программист PHP

Россия, Москва | Работа в офисе | 100 000,00 KBP

Ведущий инженер - программист

Россия, Москва | Работа в офисе | 30 000,00 KBP

Все вакансии в IT · Создать резюме

[- к содержанию -]

Новости мира IT

Новый Android-вредонос Perkele перехватывает короткие сообщения

Обнаружена новая вирусная программа, перехватывающая входящие sms-сообщения при пользовании мобильными устройствами под управлением ОС Android. Независимый эксперт по компьютерной безопасности Брайен Кребс нашел на одном из интернет-форумов выставленную на продажу программу, пересылающую тексты входящих sms организаторам вирусной атаки, «сливая» конфиденциальную информацию пользователя – например, данные для интернет-банкинга.

Часть банковских учреждений во многих странах используют двухуровневую аутентификацию – клиенту для подтверждения платежа нужно вводить не только пароль, но еще и особый sms-код.

Вирус Perkele (название программы переводится как финское нецензурное ругательство) действует совместно с другой вредоносной программой, которая устанавливает вирус и подменяет инструкции на платежной веб-странице – в результате пользователя просят установить на телефон «специальную защищенную программу для Android», под видом которой и скрывается Perkele.

Анализируя данные за прошлый год, эксперты по антивирусной безопасности сходятся во мнении: лидером по количеству атак остаётся ОС Android. Учитывая возможности мобильных Android-устройств и увеличение числа их пользователей, многие специалисты прогнозируют дальнейший рост популярности данной ОС у киберпреступников.

Финский антивирусный вендор F-Secure на днях опубликовал отчет, согласно которому в 2012 году открытая операционная система Android показала стремительный рост не только по популярности, но и по количеству выпускаемого вредоносного ПО. В 2012 году Android стала целью для 79% выпускаемого вредоносного программного обеспечения. Годом ранее этот показатель составлял 65%.

13.03.2013 10:16 · Категория: Безопасность · Источник: CyberSecurity.ru

[- к содержанию -]

HTC задерживает на две недели релиз флагманского смартфона One

Источники в компании HTC сообщают, что производитель отложил минимум на две недели выход своего флагманского смартфона HTC One на базе новой версии ОС Android. Данный аппарат должен конкурировать с другими флагманскими аппаратами, такими как Samsung Galaxy S IV. Впервые HTC презентовала One еще 5 февраля, но во время презентации компания не объявила дату начала продаж. Источники изначально сообщали, что в Европе смартфон должен появиться примерно 15 марта, но сейчас сообщается, что он поступит в розницу не ранее 29-30 марта. Возможно и позже.

С чем именно связана задержка, пока неизвестно. Официально в HTC говорят, что в ряде стран на данный аппарат был открыт предзаказ и этот предзаказ работает и по сей день. В HTC говорят, что вначале будут отгружать смартфон по предзаказам. Оформить предварительный заказ можно и в России, цена аппарата составляет чуть менее 30 000 рублей.

Новый смартфон имеет 4,7-дюймовый ЖК-экран с разрешением 1920х1080 пикселей (468 ppi), позволяющий просматривать видео в формате Full HD, а также работает под управлением ОС Android Jelly Bean.

В HTC говорят, что новинка имеет фирменную камеру Ultrapixel, а также аллюминиевый корпус, указывающий на премиальную природу смартфона.

Чтобы привлечь внимание взыскательных пользователей, компания предлагает помимо родного Android также несколько новых программных функций, присутствующих в аппарате. Одна из них - это BlinkFeed, представляющая собой персонализированный поток контента на рабочем столе. В HTC говорят, что новинка "собирает свежайший контент из наиболее интересных источников, выбранных вами, предоставляя мгновенный доступ к новостям социальным лентам, без необходимости перехода между различными источниками и сайтами".

Вторая необычная функция - это HTC Zoe, позволяющая снимать за одно нажатие серию фотографий, чтобы пользователь мог выбрать наиболее подходящий снимок Кроме того, Zoe может склеивать несколько снимков в короткое видео, а пользователи могут размещать в интернете свои коллекции мини-видео.

Что касается камеры Ultrapixel, то она представляет собой программно-аппаратную связку, позволяющую снимать в условиях плохой освещенности, а также стабилизировать видео во время съемки в динамике. Также компания увеличила качество работы камеры (как фронтальной, так и задней). В HTC говорят, что камера у нового смартфона имеет разрядность всего в 4 мегапикселя, но здесь используется иная система строения объектива и захвата картинки, что позволяет делать снимки, сопоставимые по качеству с 13-мегапиксельными фото в других смартфонах.

13.03.2013 10:15 · Категория: Железо · Источник: CyberSecurity.ru

[- к содержанию -]

Аналитики ожидают рост цен на DRAM-память

После нескольких лет падения цен на DRAM-память, эксперты говорят, что сейчас рынок имеет все шансы на стабилизацию и столь необходимый производителям рост цен на чипы, так как на рынке наметился баланс спроса и предложения, а производители уже не выпускают оперативную память такими объемами, чтобы она залеживалась на складах.

Согласно данным компании IC Insights, в январе 2013 года цены на DRAM выросли на 13% от уровня января 2012. По словам Брайена Матаса, вице-президента IC Insights, подобный рост отметился впервые за последние несколько лет и это является уже нетипичным для рынка. "Рынок DRAM за последние годы стал чрезвычайно волотильным. Если рынок испытывает перенасыщенность, то цены мгновенно летят вниз опережающими темпами, но при минимальной нехватке они также быстро растут", - говорит Матас.

По его словам, спрос на DRAM был довольно слабым за последние три года, частично снижение объясняется падением спроса на сами компьютеры. Производители памяти исторически работали с минимальной доходностью и любое падение цен для них ощутимо. С другой стороны, рынок компьютерной памяти является одним из самых динамичных и производители тут очень быстро корректируют цены.

По прогнозам IC, в этом году средняя цена памяти DRAM в этом году составит 1,85 долларов за Гб. Правда, компания замечает, что этот показатель очень условен и многие типы современных форматов памяти будут стоить дороже. В прошлом году цены на память достигли минимальной цены в 1,56 долларов, тогда как еще в 2011 этот показатель составлял 1,88 долларов за Гб. Компания также прогнозирует, что в этом году объем продаж DRAM-памяти составит 30,7 млрд долларов.

11.03.2013 08:35 · Категория: Железо · Источник: CyberSecurity.ru

[- к содержанию -]

Все новости


Подпишитесь на тематические RSS-ленты Kbyte.Ru, чтобы быть в курсе последних новостей:

Основная лента · Форумы (темы и сообщения) · Visual Basic 5.0/6.0 · Visual Basic .NET · C# (Си шарп) · Delphi · JavaScript · ActionScript · ASP .NET · ASP .NET MVC

Ищите Kbyte.Ru в социальных сетях FaceBook, ВКонтакте, Twitter.

Если вы занимаетесь программированием, то наверняка вам пригодятся хитрые инструменты.


Международный портал для программистов и разработчиков Kbyte.Ru основан в 2006 году. Целью портала является объединение программистов и специалистов IT-бизнеса, студентов и преподавателей для обмена опытом и знаниями, оказания помощи во всех делах и начинаниях в области IT.
Kbyte.Ru является парнёром компаний Mail.Ru Group, WebMoney Transfer, Ozon.Ru и др.
Выпуск рассылки подготовлен автоматически. Все права на материалы выпуска принадлежат Kbyte.Ru если иное не указано отдельно.


В избранное