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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

Zvezdmii_Lord

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
datagrid у меня заполняет всю форму (fill), горизонтальный скрол работает. Просто хотелось бы, чтобы форма автоматически применяла к себе размер равный размеру содержимому в datagridview (по краю последней колонки)

Всего записей: 20 | Зарегистр. 25-08-2017 | Отправлено: 09:57 11-02-2019
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zvezdmii_Lord
Тогда после полной загрузки грида установите width формы равным width грида.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 17:09 11-02-2019
IHmG

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кто-нибудь знает качественный OpenSource проект на ASP.Net Core C# ?
 
читаю https://metanit.com/sharp/aspnet5 и хочется посмотреть как теория работает в реальных проектах... в идеале, что-нибудь использующее JSON-API
 
Добавлено:

Цитата:
одна из самых популярных либ для json-a в .net - Newtonsoft.Json

как использовать эту либу в Asp net core web-application-empty?

Всего записей: 248 | Зарегистр. 07-06-2006 | Отправлено: 09:06 14-02-2019
Zvezdmii_Lord

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

Цитата:
Zvezdmii_Lord
Тогда после полной загрузки грида установите width формы равным width грида.

 
Помогло каждому столбцу в датагрид выставить свойство AutoSizeMod в NotSet, а в свойствах самого датагрида свойство AutoSizeColumnsMode в Fill и AutoSizeRowsMode в AllCells. Свойство Dock тоже в Fill естественно. В итоге датагрид подстраивается под любой экран. При развертывании во весь экран столюцы занимают все место от края до края. При уменьшении и увеличении формы происходит увеличение ширины столбцов, а не увеличение рабочей зоны датагрид.  
 
Посмотрел что с такими свойствами не идут автоматическое увеличение ширины столбца в соответствии с содержимым.
 
Теперь новая задачка. Сделал форму авторизации. Пароли и логины хранятся в MySQL. Думаю что нужно как то шифровать пароль. Наверное нужно пароль уже хранить шифрованным в базе и при вводе юзером пароля в форму обрабатывать его и сравнивать уже зашифрованный пароль введенный с паролем из базы?

Всего записей: 20 | Зарегистр. 25-08-2017 | Отправлено: 05:51 18-02-2019 | Исправлено: Zvezdmii_Lord, 07:03 18-02-2019
dneprcomp



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

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

А также хранить в базе рандом SALT, использованный при первоначальном шифровании.
 
Hashing Passwords
c# sha256 hash with salt Google

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 06:23 18-02-2019 | Исправлено: dneprcomp, 06:25 18-02-2019
Zvezdmii_Lord

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
 
 
Еще не могли бы подсказать, как вывести строку подключения к базе в текстовый документ? Чтобы потом указать в программе ссылку на txt и конфиг подключения.

Всего записей: 20 | Зарегистр. 25-08-2017 | Отправлено: 07:15 18-02-2019
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zvezdmii_Lord
Я использую Excel. Особенно если нужно работать с несколькими подключениями.
Например, делать одно подключение активным для текста, а другое для работы. И т.п.
С Excel можно работать как с базой данных. Создать струтуру table и хранить данные  
для connection string в fields(cells). Выборку легче делать. Редактировать проще,  
изменяя только необходимые cells.
Но если планирутся иметь только одно подключение и хранить его как цельный string,
то можно и txt.
Using Excel as a Database
c# excel database Google
 
File.ReadAllText
StreamReader
Read From a Text File

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 18:46 18-02-2019 | Исправлено: dneprcomp, 20:03 18-02-2019
Zvezdmii_Lord

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp спасибо дружище, да, у меня только одно подключение, простенькая прога для работы с базой. Просто сама база изначально тупо в экселе в доступе на гугл диске. Не понравилось что там логины и пароли висят всякие и на гугле. Расположил мускул во франции на vds linux. вот теперь марокаюсь)

Всего записей: 20 | Зарегистр. 25-08-2017 | Отправлено: 04:57 19-02-2019
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zvezdmii_Lord
BTW, размер password после шифрации займет значительно больше места в БД.
Особенно если размер ключа(Salt) выбрать 132.  
Data size поля надо просчитать для максимального размера hash. И binary для хранения salt тоже.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 06:35 19-02-2019 | Исправлено: dneprcomp, 07:26 19-02-2019
Zvezdmii_Lord

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp че то не могу догнать с чего начать, вот код моей формы:
 
 

Код:
 
    public partial class Autorization : Form
    {
        private MySqlConnection MySqlConnection = null;
        public Autorization()
        {
            InitializeComponent();
 
        }
 
        public static string connectionString
        {
            get
            {
                return ConfigurationManager.ConnectionStrings["Conn"].ConnectionString;
            }
        }
 
 
        private void buttonLogin_Click(object sender, EventArgs e)
        {
 
            MySqlCommand check = new MySqlCommand("SELECT * FROM users WHERE login=@login AND password=@password", MySqlConnection);
            System.Data.Common.DbDataReader sqlReader = null;
 
            bool success = false;
            try
            {
                check.Parameters.AddWithValue("@login", textBox1.Text);
                check.Parameters.AddWithValue("@password", textBox2.Text);
 
                using (sqlReader = check.ExecuteReader())
                {
                    success = sqlReader.Read();
                }
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                if (sqlReader != null && !sqlReader.IsClosed)
                {
                    sqlReader.Close();
                }
            }
            if (success)
            {
                Form1 form1 = new Form1(MySqlConnection);
                form1.Show();
                this.Hide();    
            }
             
             
            else
            {
                MessageBox.Show("Неверный логин или пароль");
            }
 
        }
 
        private async void Autorization_Load(object sender, EventArgs e)
        {
            MySqlConnection = new MySqlConnection(connectionString);
            await MySqlConnection.OpenAsync();
        }
 
 
 
        private void buttonCancel_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void Autorization_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }
 
    }
}
 

откуда начать смотреть по шифрованию пароля? и еще вопрос, у меня после ввода логина и пароля при соответствии с базой форма сворачивается и прячется. Можно ли как то сделать чтобы она полностью выключалась и открывала за собой основную форму? если писать this.Close(); закрывается вообще вся программа.

Всего записей: 20 | Зарегистр. 25-08-2017 | Отправлено: 08:27 19-02-2019 | Исправлено: Zvezdmii_Lord, 08:28 19-02-2019
dneprcomp



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

Цитата:
форма сворачивается и прячется

Начинать десктоп app надо с класс модуля, а не с формы. Тогда закрываться не будет.
The Main program called Program.cs is default code file which is created when a new application is created in Visual Studio. This code will contain the startup code for the application as a whole.

Код:
 
static void Main()
    {
        Application.Run(new Form1());   //загрузит login форму  
    }
 

.NET C# main method and windows forms
 
C# Database Connection Tutorial with Example  
Алгоритм работы с логином должен быть следующий:
0. Загрузка connection string из файла и подключение к DB
1. Получение encrypted password and salt из DB WHERE login=@login без всяких "and" - использовать ТОЛЬКО login name.
    Login name дожен быть уникальным для table. Т.е НЕ должен ПОВТОРЯТЬСЯ.
2. Если recordset не пустой, encrypt textBox2.Text используя salt из DB
3. Сравниваем encrypt textBox2.Text результат с полученным из базы password
Username and hashed password authentication on login form C#

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 09:28 19-02-2019 | Исправлено: dneprcomp, 09:44 19-02-2019
Zvezdmii_Lord

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, еще такой вопрос. Можно ли где- то в свойствах datagrid убрать выделение ячеек цветом, а сделать выделение просто рамкой с толстой линией например?

Всего записей: 20 | Зарегистр. 25-08-2017 | Отправлено: 04:53 05-03-2019
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zvezdmii_Lord
Цитата:
в свойствах datagrid убрать выделение ячеек цветом, а сделать выделение просто рамкой

Штатными средствами это не предусмотрено, там выделение регулируется только цветом:

А если хочешь по своему, то здесь придется создавать свой класс со своими свойствами, а это уже требует определенного мастерства и времени.

Всего записей: 5512 | Зарегистр. 31-05-2009 | Отправлено: 11:19 05-03-2019 | Исправлено: 4seasons, 11:20 05-03-2019
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zvezdmii_Lord
На cell_click или row_click
Draw Rectangle or Bold Border on selected Cell in DataGridView
c# datagridview selected cell border style
 
How to: Change the Border and Gridline Styles in the Windows Forms DataGridView Control
SetUp Function Example  
 
 

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 17:15 05-03-2019 | Исправлено: dneprcomp, 08:49 06-03-2019
AnTul

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Учебный проект из книги Троелсена. 23-я глава. Последняя, четвёртая версия AutoLotDAL. Подключена entity framework 2. Не компилируется файл, выходят сообщения:
 
Ошибка    CS1674    'InventoryRepo": тип, использованный в операторе using, должен иметь неявное преобразование в System.IDisposable.    C:\Learn\C#\TrLearn\AutoLotDAL\AutoLotTestDrive\Program.cs    46
 
Подскажите, пожалуйста, в чём проблема. Код лежит здесь:
http://rgho.st/6gnRsMYN5
 


----------
Василий Великий: «Кто смотрит на зло без отвращения, тот скоро будет смотреть на него с удовольствием».

Всего записей: 5477 | Зарегистр. 13-07-2004 | Отправлено: 18:03 06-03-2019 | Исправлено: AnTul, 18:04 06-03-2019
Mavrikii

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

Цитата:
'InventoryRepo": тип, использованный в операторе using, должен иметь неявное преобразование в System.IDisposable

тоже все ясно написано. аргументом using должен быть объект класса IDisposable
https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/using-statement
или иметь неявный метод его преобразования в IDisposable
https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/language-specification/statements#the-using-statement

Цитата:
Объект ресурсов — это класс или структура, реализующие System.IDisposable, который включает один метод без параметров, с именем Dispose. Код, использующий ресурс может вызвать Dispose для указания, что ресурс больше не нужен. Если Dispose не вызывается, то автоматически со временем возникает в результате сборки мусора.

система будет пытаться вызывать ((IDisposable)InventoryRepo).Dispose();, но не сможет
 
ps: https://www.codeproject.com/Articles/15360/Implementing-IDisposable-and-the-Dispose-Pattern-P
 
pps: ну а ваша проблема, что вы неправильно читаете книгу.

Код:
    public abstract class BaseRepo : IDisposable
    {
        protected AutoLotEntities Context { get; } = new AutoLotEntities();
        bool disposed = false;
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
        protected virtual void Dispose(bool disposing)
        {
            if (disposed)
                return;
            if (disposing)
            {
                Context.Dispose();
            }
            disposed = true;
        }  
    }

это должно быть не отдельное описание, а добавка к public abstract class BaseRepo<T> where T : class, new()
 
вы же хотите, чтобы IDisposable был у того класса, что вы используете.
 
как и говорил, я не программлю на C#, но скорее всего должно быть как

Код:
public abstract class BaseRepo<T> : IDisposable where T : class, new()

и в код добавляете то, чего не хватает (метод Dispose и атрибут disposed)

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:04 06-03-2019 | Исправлено: Mavrikii, 00:21 07-03-2019
Zvezdmii_Lord

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp Приветствую снова) Теперь такая проблема, верней не проблема даже, а так, пустяк. При загрузке приложения, после формы авторизации, главная рабочая форма сначала наполняется данными из мускула(не использую DataTable), секунд 5, дак вот вопрос. Как и можно ли поместить прогрессБар на форму, чтобы он зависел от прогрузки datagridview (то есть полоса идет пока датагридгрузится и пропадает когда прогрузился грид и вывел данные пользователю) ?
 
Либо как вариант как то подставить гифку в центре и пускай она работает типа Please wait... и точки бегают, а как грид подгрузится убрать гифку) Просто украшательство)

Всего записей: 20 | Зарегистр. 25-08-2017 | Отправлено: 10:22 13-03-2019 | Исправлено: Zvezdmii_Lord, 11:27 13-03-2019
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zvezdmii_Lord
Цитата:
наполняется данными из мускула, секунд 5

Зачем разводить геморрой с прогрессбаром на 5 секунд, когда можно просто создать форму сообщений и, пока грузится мускул, вывести её с предупреждением типа: "Подождите пожалуйста, осталось совсем немного."
 
Лично я именно так у себя и делаю.

Всего записей: 5512 | Зарегистр. 31-05-2009 | Отправлено: 11:26 13-03-2019 | Исправлено: 4seasons, 11:28 13-03-2019
Zvezdmii_Lord

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4seasonsПриветствую,ну вот я и думаю гифку там запихнуть или как вы сказали, думаю даже прогрессбар еще больше увеличит только загрузку)
 
 
Добавлено:
4seasons примером можете поделиться?

Всего записей: 20 | Зарегистр. 25-08-2017 | Отправлено: 11:33 13-03-2019 | Исправлено: Zvezdmii_Lord, 11:34 13-03-2019
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zvezdmii_Lord
Цитата:
примером можете поделиться?

Создаем форму frmСообщения и размещаем на ней лэйбл с текстом:"Подождите пожалуйста, осталось совсем немного." или всё что вам захочется (картинку, гифку, музыку, кино, танцы с бубном ...).
В событии Load формы с датагрид пишем:
 
frmСообщения.Show
Загружаем датагрид из мускула.
frmСообщения.Close
 
Надеюсь идея понятна?
А если не понятна, то придется букварь почитать, здесь для этого просто времени нет.

Всего записей: 5512 | Зарегистр. 31-05-2009 | Отправлено: 12:12 13-03-2019 | Исправлено: 4seasons, 12:19 13-03-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 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