Добавить комментарий - CodeHelper

Добавить комментарий

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

Во-первых, нужно убрать чисто служебный код:

button1.Anchor = (AnchorStyles.Right | AnchorStyles.Top);
textBox1.Anchor = (AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Left);
label1.Anchor = (AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Left);
textBox2.Anchor = (AnchorStyles.Right | AnchorStyles.Top);
label2.Anchor = (AnchorStyles.Right | AnchorStyles.Top);
dataGridView1.Anchor = (AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left);
label3.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left);
listBox1.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right |  AnchorStyles.Left);

/*---header---*/
Column3.HeaderCell.Style.BackColor = System.Drawing.Color.Blue;
Column3.HeaderCell.Style.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline);

Все эти действия (настройка внешнего вида и расположения компонентов) можно выполнить непосредственно в дизайнере формы. Тогда весь этот код переместиться в автогенерирующийся файл и не будет смешиваться с логикой формы (реакция на события и т.п.).

Во-вторых, основное зло приведённого кода (как и многих других WinForms-приложений) — наличие логики обращения к базе в коде формы. При нормальном подходе к архитектуре, эта логика должна инкапсулироваться в специальном классе. Если интересно, как архитектурно правильно реализовать настольное приложение, прочитайте классический труд Мартина Фаулера в пяти томах:

В качестве быстрого решения, можно вынести логику работы с базой в специальный слой. Для этого нужно:

1) Создать класс предметной области:

public class Feed
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Url { get; set; }
}

2) Создать интерфейс для слоя доступа к данным:

public interface IFeedRepository
{
    IEnumerable<Feed> GetAllFeeds();
}

3) Создать реализацию интерфейса доступа к данным:

public class AdoNetFeedRepository : IFeedRepository
{
    // ...
    public IEnumerable<Feed> GetAllFeeds()
    {
        var result = new List<Feed>();
        SqlConnection cn = new SqlConnection(strConn);
        SqlCommand cmd = new SqlCommand("Select FeedID, Feed, Nameoffeed FROM edik_1", cn);
        try
        {
            cn.Open();
            SqlDataReader rdr = default(SqlDataReader);
            rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                result.Add(new Feed
                {
                    Id = rdr["FeedID"],
                    Name = rdr["Nameoffeed"],
                    Url = rdr["Feed"]
                });
            }
            rdr.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        finally
        {
            if ((cn != null))
            {
                cn.Close();
            }
        }
        return result;
    }
}

4) На форме использовать созданный слой доступа к данным:

// ...
var allFeeds = feedRepository.GetAllFeeds();
foreach(var feed in allFeeds)
{
    dataGridView1.Rows.Add(feed.Id, feed.Url, feed.Name);
}
Внимание! Вы собираетесь отправить информацию от имени анонимного пользователя.
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.