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

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


Выпуск # 727

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


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

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

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

Форумы Kbyte.Ru

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

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

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

Среда Visual Basic STUDIO’2010 Professional
Dim
dBaseDataReader As System.Data.OleDb.OleDbDataReader = dBaseCommand.ExecuteReader(CommandBehavior.SequentialAccess)
TextBox1.Text = (dBaseDataReader("FIO").ToString) 
TextBox2.Text = (dBaseDataReader("DataOpen").ToString)  ' "DataOpen" – НОЛЕВОЙ СТОЛБЕЦ
Недопустимая попытка считывания из столбца с порядковым номером "0".
С помощью CommandBehavior.SequentialAccess считывание разрешено только
из столбцов с порядковым номером "1" и выше.

СПАСИБО.

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

Здравствуйте люди, как подсветить текст в Rich или просто TextBox слова, сразу скажу что хочу подсветить теги из HTML.
Допустим пусть <> должны быть серые
html - красный
Body - красный
Head - красный
title - зеленый
Заранее спасибо!

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

Ответ #1 @Crash666 08.05.2013 17:09
Ответ #2 @Shark1 08.05.2013 18:08
Все люди разбежались - раньше 12-го никого не будет ...

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

Ответ #4 @Crash666 09.05.2013 10:07
Shark1 :D
Алексей Немиро как всегда вы велеколепны

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

Ответ #5 @Crash666 09.05.2013 10:24
Даааа, кучи ошибок может я лучше сам попробую? Алексей готовтесь это будет жестоко, наверно так же как и с Регулярными выражениями, подскажите с чего начать?

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

Добавить свой ответ в эту тему · В теме есть еще 6 ответов. Смотреть все ответы.
Допустим на форме размещен элемент управления StatusStrip, который включает 20 панелей. Просьба отвечать на такой вопрос: при нажатии кнопки мыши как можно определить номер выбираемой панели?

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

Ответ #1 @Алексей Немиро 30.04.2013 20:22
Каждая панель является отдельным полноценным объектом, который способен обрабатывать любые свойственные ему события. В том числе и событие Click, MouseUp и MouseDown.

У панелей может быть один обработчик, либо множество отдельных.

Например,
Private Sub ToolStripStatusLabel1_MouseUp(sender As System.Object, e
As System.Windows.Forms.MouseEventArgs) Handles ToolStripStatusLabel2.MouseUp, ToolStripStatusLabel1.MouseUp, ToolStripProgressBar1.MouseUp
End Sub
  Private Sub ToolStripStatusLabel1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripStatusLabel2.Click, ToolStripStatusLabel1.Click, ToolStripProgressBar1.Click
    If sender Is ToolStripStatusLabel2 Then
      MsgBox(1)
    ElseIf sender Is ToolStripStatusLabel1 Then
      MsgBox(2)
    End If
  End Sub

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

Добавить свой ответ в эту тему
И так как сделать так что бы при потере фокуса программа все равно могла реагировать на горячие клавиши??

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

Ответ #1 @smerch1201 03.05.2013 17:53
Ответ #2 @Алексей Немиро 03.05.2013 18:54
Хуки нужно использовать, глобальные :)

http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C (C#)

Вот еще нашел класс на Visual Basic .NET:
Imports System.Runtime.InteropServices

Public Class KeyboardHook

    <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
    Private Overloads Shared Function SetWindowsHookEx(ByVal idHook As Integer, ByVal HookProc As KBDLLHookProc, ByVal hInstance As IntPtr, ByVal wParam As Integer) As Integer
    End Function
    <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
    Private Overloads Shared Function CallNextHookEx(ByVal idHook As Integer, ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
    End Function
    <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
    Private Overloads Shared Function UnhookWindowsHookEx(ByVal idHook As Integer) As Boolean
    End Function

    <StructLayout(LayoutKind.Sequential)> _
    Private Structure KBDLLHOOKSTRUCT
        Public vkCode As UInt32
        Public scanCode As UInt32
        Public flags As KBDLLHOOKSTRUCTFlags
        Public time As UInt32
        Public dwExtraInfo As UIntPtr
    End Structure

    <Flags()> _
    Private Enum KBDLLHOOKSTRUCTFlags As UInt32
        LLKHF_EXTENDED = &H1
        LLKHF_INJECTED = &H10
        LLKHF_ALTDOWN = &H20
        LLKHF_UP = &H80
    End Enum

    Public Shared Event KeyDown(ByVal Key As Keys)
    Public Shared Event KeyUp(ByVal Key As Keys)

    Private Const WH_KEYBOARD_LL As Integer = 13
    Private Const HC_ACTION As Integer = 0
    Private Const WM_KEYDOWN = &H100
    Private Const WM_KEYUP = &H101
    Private Const WM_SYSKEYDOWN = &H104
    Private Const WM_SYSKEYUP = &H105

    Private Delegate Function KBDLLHookProc(ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer

    Private KBDLLHookProcDelegate As KBDLLHookProc = New KBDLLHookProc(AddressOf KeyboardProc)
    Private HHookID As IntPtr = IntPtr.Zero

    Private Function KeyboardProc(ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
        If (nCode = HC_ACTION) Then
            Dim struct As KBDLLHOOKSTRUCT
            Select Case wParam
                Case WM_KEYDOWN, WM_SYSKEYDOWN
                    RaiseEvent KeyDown(CType(CType(Marshal.PtrToStructure(lParam, struct.GetType()), KBDLLHOOKSTRUCT).vkCode, Keys))
                Case WM_KEYUP, WM_SYSKEYUP
                    RaiseEvent KeyUp(CType(CType(Marshal.PtrToStructure(lParam, struct.GetType()), KBDLLHOOKSTRUCT).vkCode, Keys))
            End Select
        End If
        Return CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam)
    End Function

    Public Sub New()
        HHookID = SetWindowsHookEx(WH_KEYBOARD_LL, KBDLLHookProcDelegate, System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly.GetModules()(0)).ToInt32, 0)
        If HHookID = IntPtr.Zero Then
            Throw New Exception("Could not set keyboard hook")
        End If
    End Sub

    Protected Overrides Sub Finalize()
        If Not HHookID = IntPtr.Zero Then
            UnhookWindowsHookEx(HHookID)
        End If
        MyBase.Finalize()
    End Sub

End Class
Использование:
Private WithEvents kbHook As New KeyboardHook
Private Sub kbHook_KeyDown(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyDown 
  Debug.WriteLine(Key.ToString) 
End Sub 

Private Sub kbHook_KeyUp(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyUp 
  Debug.WriteLine(Key) 
End Sub
Не проверял.

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

Добавить свой ответ в эту тему
Добрый день.
Просьба ответить на следующие вопросы:
- если программа уже запущена, VB6 позволяет выяснить с помощью вызова App.PrevInstance. Как это определяется в VB.NET
- какой метод VB.NET заменяет метода zOrder VB6?
- в VB.NET невозможно индексирование элементов управления, поэтому массив элементов управления можно создать, например, так:
Dim pBox(5) as PictureBox
Как можно определять индекс элемента, например, при поступлении события MouseDown?
- при помощи свойств Height, Width, TwipsPerPixelX и TwipsPerPixelY объекта Screen можно определить разрешение экрана монитора. Как это делается в VB.NET

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

Ответ #1 @Алексей Немиро 26.04.2013 18:57
- если программа уже запущена, VB6 позволяет выяснить с помощью вызова App.PrevInstance. Как это определяется в VB.NET
Dim onlyInstance As Boolean = False
Dim mtx As New System.Threading.Mutex(True, System.Reflection.Assembly.GetEntryAssembly().GetName().Name, onlyInstance)
If Not onlyInstance Then
  MessageBox.Show("Приложение уже запущено!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Stop)
End If
- какой метод VB.NET заменяет метода zOrder VB6?
Не помню, что делает этот метод. Позже гляну.
- в VB.NET невозможно индексирование элементов управления, поэтому массив элементов управления можно создать, например, так:
Dim pBox(5) as PictureBox
Как можно определять индекс элемента, например, при поступлении события MouseDown?
Массив создавать - лишнее. Проще создавать отдельные элементы. Вот пример с кнопками:
  Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    For i As Integer = 1 To 5
      Dim btn As New Button()

      'размер кнопки 30x30px
      btn.Width = 30
      btn.Height = 30

      'позиция кнопки
      btn.Top = 8
      btn.Left = i * 30

      'текст кнопки
      btn.Text = i.ToString()

      'обработчик события
      AddHandler btn.Click, AddressOf btn_Click

      'добавляем кнопку
      Me.Controls.Add(btn)
    Next
  End Sub

  Private Sub btn_Click(sender As Object, e As EventArgs)
    Dim btn As Button = CType(sender, Button) 'ссылка на объект, вызвавшего событие находится в sender
    MsgBox(btn.Text)' показываем текст кнопки, по которой произведен клик
  End Sub
- при помощи свойств Height, Width, TwipsPerPixelX и TwipsPerPixelY объекта Screen можно определить разрешение экрана монитора. Как это делается в VB.NE
Dim s As Screen = Screen.PrimaryScreen'экранов может быть больше одного, в данном случае получаем главный экран
's.Bounds.Width ' ширина экрана
's.Bounds.Height ' высота экрана

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

Ответ #2 @Алексей Немиро 26.04.2013 19:03
- какой метод VB.NET заменяет метода zOrder VB6?
Порядок элементов можно установить методом SetChildIndex коллекции элементов управления. Получить методом GetChildIndex.

Вот пример:
Public Class Form1

  Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'добавляем кнопки без сортировки
    For i As Integer = 1 To 5
      Dim btn As New Button()

      'размер кнопки 30x30px
      btn.Width = 30
      btn.Height = 30

      'позиция кнопки
      btn.Top = i * 15
      btn.Left = 8


      'текст кнопки
      btn.Text = i.ToString()

      'обработчик события
      AddHandler btn.Click, AddressOf btn_Click

      'добавляем кнопку
      Me.Controls.Add(btn)
    Next

    'добавляем кнопки с явным указанием позиции
    For i As Integer = 1 To 5
      Dim btn As New Button()

      'размер кнопки 30x30px
      btn.Width = 30
      btn.Height = 30

      'позиция кнопки
      btn.Top = i * 15
      btn.Left = 40


      'текст кнопки
      btn.Text = i.ToString()

      'обработчик события
      AddHandler btn.Click, AddressOf btn_Click

      'добавляем кнопку
      Me.Controls.Add(btn)

      'переносив вниз
      Me.Controls.SetChildIndex(btn, 0)
    Next

  End Sub

  Private Sub btn_Click(sender As Object, e As EventArgs)
    Dim btn As Button = CType(sender, Button) 'ссылка на объект, вызвавшего событие находится в sender
    MsgBox(btn.Text)
  End Sub

End Class

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

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

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

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

"Live" UserControl.

Visual Basic .NET: Интерфейс @Shark1 08.05.2013 02:15
Пример похожий на предыдущий, но здесь используется собственный переопределенный стиль и анимация уже включена в UserControl. Результат - при использовании UserControl экономится время на разработку основного проекта и пишется намного меньше кода.

Live_Button_Control.zip - UserControl.
Live_Buttons.zip - application for demonstration.

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

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

An example of a custom (live) animation for the application.

Visual Basic .NET: Графика @Shark1 08.05.2013 00:36
Пример построения пользовательской (живой) анимации для приложения.

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

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

Construct an indicator of CPU

Visual Basic .NET: Интерфейс @Shark1 06.05.2013 16:53
Конструируем индикатор загрузки CPU на WPF.

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

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

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

Вакансии в IT

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

Россия, Чебоксары | Работа в офисе | 35 000,00 KBP

JS-программист (Developer)

Россия, Красноярск | Работа в офисе | 35 000,00 KBP

Дизайнер интерфейсов

Россия, Красноярск | Удаленная работа | 35 000,00 KBP

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

Россия, Казань | Работа в офисе | 50 000,00 KBP

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

Россия, Новосибирск | Удаленная работа

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

Россия, Новосибирск | Удаленная работа

PHP-developer

Россия, Новосибирск | Работа в офисе | 40 000,00 KBP

PHP Developer

Россия, Новосибирск | Работа в офисе | 50 000,00 KBP

Junior PHP Developer

Россия, Новосибирск | Работа в офисе | 35 000,00 KBP

Программист 1С 8

Россия, Новосибирск | Работа в офисе | 75 000,00 KBP

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

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

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

с Днём Победы!


 

09.05.2013 08:48 · Категория: Новости Kbyte.Ru · Источник: Kbyte.Ru

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

HP анонсировала новые решения для обнаружения сетевых атак

HP представила новые решения в линейке TippingPoint NX Series Next Generation Intrusion Prevention System (NGIPS), предназначенные для выявления и устранения угроз для компьютерных сетей.

Новые решения в линейке HP NX — HP S7500NX, HP S6200NX и HP S2600NX NGIPS — предназначены для сетей 20, 10 и 3 Гбит/с соответственно. Модель для сетей 20 Гбит/с, поставляемая в двухстоечном форм-факторе с различными сетевыми интерфейсами от 1 до 40Гбит/с, обеспечивает один из самых высоких показателей пропускной способности сети в мире, а также помогает сэкономить ценное пространство в ЦОДе и сократить потребление электроэнергии.

Все продукты HP TippingPoint разработаны инженерами HP TippingPoint DVLabs в рамках программы Zero Day Initiative, цель которой — создать решения, способные выявлять и блокировать уязвимости в сетевой инфраструктуре.

07.05.2013 12:29 · Категория: Железо · Источник: CyberSecurity.ru

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

AMD предлагает по-новому взглянуть на процессоры

AMD сегодня анонсировала свою новую разработку - Heterogeneous Systems Architecture (HSA), которая, по мнению компании, олицетворяет будущее компьютерных архитектур. В AMD говорят, что в HSA воплощены многие вещи над которыми компания трудилась последние несколько лет.

Центральная концепция HSA заключается в том, что системы будут иметь множество разнообразных процессоров, которые будут подключены друг к другу и будут работать как сравнительно автономные узлы. Две основных разновидности узлов очевидны: традиционные центральные процессоры и более специализированные графические чипы.

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

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

Чтобы решить эту проблему и повысить эффективность процессинга, AMD в качестве первого шага в реализации архитектуры HSA анонсировала решение heterogeneous Uniform Memory Access (hUMA), которая позволяет во многом сохранить подход к написанию программного обеспечения, но в то же время предоставить разработчикам единый пул памяти для центрального и графического процессоров. Это позволяет центральному процессору получить доступ к областям памяти графического процессора и наоборот.

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

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

Одновременно с этим, от программистов это все-таки потребует изменения принципов работы с системными страницами, системами подкачки данных, с текстируированием и др.

Ожидается, что первыми процессорами, поддерживающими hUMA, станут анонсированные сегодня чипы Kaveri. Они объединят в себе 2-3 вычислительных узла (два целых ядра, но разделяемый блок работы с плавающей запятой). В качестве GPU тут будут использоваться ядра Steamroller, которые получат полный доступ к области памяти центральных ядер процессора. Ожидается, что Kaveri появятся во второй половине года.

Неофициально в AMD говорят, что прелесть hUMA заключается в том, что при помощи нее на одной логической базе можно объединять не только x86-решения, но и микроядра ARM, что позволит делать более экономичные чипы. Впрочем, последнее - это пока чистая теория, так как ARM еще не поддерживают 64-битную адресацию и сама ARM Holdings еще не соглашалась на работу в направлении hUMA.

06.05.2013 10:09 · Категория: Железо · Источник: 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 если иное не указано отдельно.


В избранное