Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Открыть новую тему     Написать ответ в эту тему

Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть форма. На ней несколько текстбоксов и dataGridView, которые связаны с одним датасетом. А также есть кнопка Button1 в обработчике на онклик которой написано:

Код:
oracleDataAdapter.Update(dataSet1);
dataset1.Clear();
oracleDataAdapter.Fill(dataSet1);

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

Код:
if (dataGridView1.RowCount > 0)
{
    if (textBox1.Text == "")
   {
         MessageBox.Show("Введите имя!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    textBox1.Focus();
    }
    else
    {
         dataGridView1.CurrentRow.Cells[2].Value = textBox1.Text;
    }
}

 
Подскажите, что я не так делаю.

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 04:25 18-06-2008
BaluBig



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Lihonosov
Насколько мне видится, ты собираешься сделать некий грид с записями, при этом текущая запись грида отображалась бы в контролах для редактирования. Почему бы в контролах не использовать Data Binding? А проверку корректности данных делать на событии Validating контрола (оно для этого как раз и сделано), а не на Leave. Уйдет куча ручной работы...

Всего записей: 404 | Зарегистр. 06-02-2004 | Отправлено: 10:49 18-06-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BaluBig

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

Да

Цитата:
Почему бы в контролах не использовать Data Binding?

У меня каждый текстбокс связан с датасет. Это?
Цитата:
А проверку корректности данных делать на событии Validating контрола (оно для этого как раз и сделано)

Попробую.

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 18:52 18-06-2008
BaluBig



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Lihonosov

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

Всего записей: 404 | Зарегистр. 06-02-2004 | Отправлено: 11:15 20-06-2008
SergBSI

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос полного чайника в NET - подскажите пример чтения-записи на физичеком уроне на винт API - фокусы здесь не почемуто не проходят

Всего записей: 516 | Зарегистр. 09-12-2003 | Отправлено: 08:50 21-06-2008
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergBSI
Цитата:
Вопрос полного чайника в NET - подскажите пример чтения-записи на физичеком уроне
Так "урон" всё-таки физический или моральный? Елы-палы, неужели нельзя яснее выражаться? Что это означает
Цитата:
...винт API
Нету никакого "винтAPI". А пример
Цитата:
фокусы здесь не почемуто не проходят
привести было слабо? Тебе, наверное, сюда: http://forum.ru-board.com/topic.cgi?forum=2&bm=1&topic=2359&start=900#lt
А так -- осваивай Windows DDK, там много интересного

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 15:21 21-06-2008
BaluBig



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TeXpert
Перевожу на русский язык
Цитата:
Вопрос полного чайника в NET: подскажите пример чтения-записи на физичеком уровне на винт. API - фокусы здесь не почему-то не проходят.

 
SergBSI
Пренебрегать знаками препинания недостойно программиста
А теперь по теме. Какие имеено фокусы не проходят? Из нета возможен вызов любых функций из любых библиотек. Все Win32 API доступно. Есть такой сайт http://www.pinvoke.net. Там собраны нетовские конструкции для прямого использования большинства старых API. Еще есть такая программа SeaTools for Windows. Программа - полное гуано, но написано оно на нете и по идее должно общаться с винтом на достаточно низком уровне. Если поковыряться в ней с помощью рефлектора, то можно, я думаю, нарыть немало интересного.

Всего записей: 404 | Зарегистр. 06-02-2004 | Отправлено: 18:11 21-06-2008 | Исправлено: BaluBig, 18:12 21-06-2008
recvezitor

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую. Я ищу какие нибудь компоненты, желательно под .Net, которые умели бы "рисовать карты". Как это будет поисходить я пока не представляю даже теоретически. Возможно просто рисовала бы картинку по заданным координатам, а на эту картинку можно было бы наложить какуюнибдуь линию - маршрут.   Если все это дело будет бесплатным будет просто великолепно.

Всего записей: 95 | Зарегистр. 21-11-2006 | Отправлено: 05:22 24-06-2008
bsdfish

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergBSI
Если PInvoke пользоваться неудобно, то можно написать промежуточный слой на C++\CLI а уже с ним работать на C#.

Всего записей: 1 | Зарегистр. 22-12-2006 | Отправлено: 17:50 25-06-2008
Yakon

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопрос по Visual Basic 2005:
 
        If My.Computer.FileSystem.FileExists(FileName_ini) Then
            txt_ini = System.IO.File.ReadAllLines(FileName_ini)
            Shell("C:\3D\3DSmediaplayer.exe ~""C:\3D\playlist_" & txt_ini(0) & ".3dpl", AppWinStyle.MaximizedFocus, False)
        End If
 
Это программа работаетв фоновом режиме.
Проблема в том, что программа нормально запускает плейер, но после её завершения фокус плейеру не передается.
Фокус остается на окне, на котором был фокус до запуска программы.
Как передать фокус?
 
Добавлено:
    Sub Main()
        Dim txt_ini() As String
        Dim FileName_ini As String = "c:\3D\client.ini"
        If My.Computer.FileSystem.FileExists(FileName_ini) Then
            txt_ini = System.IO.File.ReadAllLines(FileName_ini)
            Dim tmp As String = "C:\3D\3DSmediaplayer.exe"
            Dim tmp2 As String = "~""C:\3D\playlist_" & txt_ini(0) & ".3dpl"""
            Dim startInfo As New ProcessStartInfo(tmp)
            startInfo.WindowStyle = ProcessWindowStyle.Normal
            Dim Proc As Process = Process.Start(startInfo)
            System.Threading.Thread.Sleep(2000)
            AppActivate(Proc.Id)
        End If
    End Sub
 
Так тоже самое.
Как победить? Запущенный плейер не имеет фокуса, мне нужно чтоб он был первым окном.

Всего записей: 162 | Зарегистр. 11-01-2004 | Отправлено: 11:44 26-06-2008
Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yakon
В дополнение ко всему попробуй свернуть свое приложение, по идее плеер должен остаться сверху.
Сорри, не заметил, что твое приложение в фоне. Тады попробуй перевести на фон/свернуть активное окно.

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 16:27 26-06-2008 | Исправлено: Mike13x13, 21:26 26-06-2008
Yakon

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А в том то и проблема, что я не знаю какие окна могут быть открыты.
У меня служба висит, которая должна при наступлении события запускать плейер в полноэкранном режиме.
Вернее он всегда в таком режиме стартует.
Так вот если я делаю прогу, которая затем запускает плейер, работающую как Windows application или Console Application, то есть явно в виде окна, то плейер стартует нормально. Он по умолчанию выходит в полный экран.
А если прога как Windows Service, то запускающийся из неё плейер появляется на заднем плане и в  
панеле винды мигает строка этого окна.
А так как прога постоянно отслеживает события, то у меня возможно её работа только в фоне.
Что делать? Как бороться? Может это что-то в политиках Windows XP?
Может в винде нужно что-то подкрутить чтобы запускающиеся от фоновой программы приложения получали фокус?

Всего записей: 162 | Зарегистр. 11-01-2004 | Отправлено: 22:14 26-06-2008 | Исправлено: Yakon, 22:16 26-06-2008
Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На счет подкручивания винды - весьма сомневаюсь
На VB не пишу, не знаю, есть ли там средства передать фокус запущенному приложению/процессу, по идее должны быть, но кто его знает. Посему, могу лищь посоветовать запускать не плеер напрямую, а свое приложение, вся функциональность которого - это запустить плеер поверх всего, возможно перейти в фон и закрыться. Вроде, как доложно сработать.
 
У меня тоже вопорсик: делел ли кто адд-ины к 2007 офису? Интересует механизм интеграции в офис. Более детально: в 2008 студии делаю адд-ин к, при запуске на выполнее из студии он запускает соответствующее приложение офиса и я его там уже вижу. В самой папке проекта появляюстя файлы манифеста, пдб, всто и длл. Но меня интересует, как сделать типа инсталяшку, чтобы можно было этот адд-ин ставить клиенту, у которого, понятное дело, наличие студии вовсе не предвидится.

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 14:24 27-06-2008 | Исправлено: Mike13x13, 14:25 27-06-2008
feor



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yakon
не силен в WinAPI, но, возможно, сработает посылание приложению чего-нить типа WM_ACTIVATE или WM_SETFOCUS. Чтобы послать сообщение, нужно импортировать функцию SendMessage. Сорри, бейсика не знаю, поэтому пример на шарпе:
 

Код:
 
    [DllImport("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
 

Всего записей: 164 | Зарегистр. 04-09-2005 | Отправлено: 16:01 27-06-2008
BaluBig



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Yakon
Копай в сторону API-функции SetWindowPos (описание для бейсика есть на www.pinvoke.net). Ей понадобится хендл окна, которым будешь управлять, его получишь через проперть Process.MainWindowHandle.

Всего записей: 404 | Зарегистр. 06-02-2004 | Отправлено: 08:12 28-06-2008
recvezitor

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно чтото похожее на TinyMCE для вэба только для WinForms. Т.е. хотя бы поминимуму RichTextBox с кнопками параграф, шрифт, размер шрифта(мини Word). Наверяка есть чтото готовое(и желаьелно бесплатно)

Всего записей: 95 | Зарегистр. 21-11-2006 | Отправлено: 09:02 01-07-2008
dkankind

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
проблема с рекурсивными функциями
 
Добавлено:
с помощью этих функций провожу копирование ноуда:
 
public void copy_nodes_from(graph_node from)
        {
            foreach (graph_node t_gn in from.Nodes)  // здесь забывает последний ноуд
            {
                graph_node temp = new graph_node(t_gn.Text);
                this.Nodes.Add(temp);
                temp.copy_nodes_from(t_gn);
            }
            foreach (graph_node t_gn in from.Nodes)
            {
                foreach (graph_node t_gn_2 in t_gn.ar)
                {
                        graph_node temp = (graph_node)this.Nodes[t_gn.Index];
                        temp.connect(find_analog_to(t_gn_2));
                     
                }
            }
        }
 
private graph_node find_analog_to(graph_node to)
        {
            graph_node parent_to = to;
            graph_node parent_this = this;
            ArrayList al = new ArrayList();
            al.Clear();
 
            for (int i = 0; i < to.Level; i++)
            {
                int k = parent_to.Index;
                al.Insert(0, k);
                parent_to = (graph_node)parent_to.Parent;
            }
            for (int i = 0; i < this.Level; i++)
            {
                parent_this = (graph_node)parent_this.Parent;
            }
            foreach (int k in al)
            {
                parent_this = (graph_node)parent_this.Nodes[k];  // здесь выход за предел
            }
            return parent_this;
        }
 
затем преобразовываю иерархию и снова копирую и тп. до тех пор, пока не переберутся все возможные варианты. На простом примере отлично работает (несколько ноудов), уже с пяти в середине выполнения возникает ошибка выхода за предел массива.
Не могу понять, в чем дело. Нахожу место, где это происходит. Такое ощущение, что просто в цикле копирования забывает про последний ноуд, так как в ноуде-образце детей четыре, а цикл выполняется только три раза. Проверяю в дебаге.
Может дело в неправильном обращении с памятью? Не может быть переполнение стека или что-нибудь в этом роде, т.к. функции рекурсивные..

Всего записей: 1 | Зарегистр. 21-06-2006 | Отправлено: 11:56 04-07-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Захотелось сделать интерфейс 2007 офиса.
Какие компоненты нужны для этого?

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 13:08 04-07-2008
GastonR

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov

Цитата:
Захотелось сделать интерфейс 2007 офиса.  
Какие компоненты нужны для этого?

Можно DotNetBar
Так же можешь посмотреть в сторону DXperience и ComponentOne

Всего записей: 555 | Зарегистр. 26-01-2004 | Отправлено: 16:28 04-07-2008
Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov

Цитата:
Захотелось сделать интерфейс 2007 офиса.  
Какие компоненты нужны для этого?

Альтернативное предложение: .Net Framework 3.5+WPF, очень похоже получается

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 19:30 04-07-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru