Найдено результатов: 56

WinForms ComboBox привязка данных попалась

Предположим, что вы делаете что-то вроде следующего

List<string> myitems = new List<string>
{
    "Item 1",
    "Item 2",
    "Item 3"
};

ComboBox box = new ComboBox();
box.DataSource = myitems;

ComboBox box2 = new ComboBox();
box2.DataSource = myitems

Так что теперь у нас есть 2 поля со списком, привязанные к этому массиву, и все работает нормально. Но когда вы меняете значение одного поля со списком, он меняет BOTH полей со списком на тот, который вы только что выбрали.

Теперь я знаю, что массивы всегда передаются по ссылке (узнал это, когда узнал C :D), но с какой стати поля со списком будут меняться вместе? Я не верю, что элемент управления combo box вообще изменяет коллекцию.

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

ComboBox box = new ComboBox();
box.DataSource = myitems.ToArray();

c#   winforms   data-binding    

444   2   16:03, 1st July, 2020


Отображение содержимого Flash в приложении C# WinForms

Как лучше всего отобразить содержимое Flash в приложении C# WinForms? Я хотел бы создать пользовательский элемент управления (аналогичный текущему PictureBox), который сможет отображать изображения и содержимое flash.

Было бы здорово иметь возможность загружать содержимое flash из потока видов, а не из файла на диске.

c#   winforms   flash   adobe   macromedia    

520   2   16:03, 1st July, 2020


Найти узел, щелкнутый в контекстном меню

Как узнать, в каком узле древовидного списка было активировано контекстное меню? Например, щелкните правой кнопкой мыши узел и выберите нужный пункт в меню.

Я не могу использовать свойство TreeViews' SelectedNode , потому что узел был только щелкнут правой кнопкой мыши и не выбран.

c#   winforms   treeview   contextmenu    

519   9   16:03, 1st July, 2020


Глобальная обработка исключений для элемента управления winforms

При работе над ASP.NET 1.1 проектами я всегда использовал Global.asax, чтобы поймать все ошибки. Я ищу аналогичный способ поймать все исключения в пользовательском элементе управления Windows Forms, который в конечном итоге является размещенным элементом управления IE. Каков правильный способ сделать что-то подобное?

winforms   error-handling   user-controls    

523   5   16:03, 1st July, 2020


Как я должен перевести координаты пространства экрана в координаты пространства изображения в A WinForms PictureBox?

У меня есть приложение, которое отображает изображение внутри элемента управления Windows Forms PictureBox . Значение SizeMode элемента управления равно Zoom , так что изображение, содержащееся в PictureBox , будет отображаться корректным образом независимо от размеров PictureBox .

Это отлично подходит для визуального вида приложения, потому что вы можете изменить размер окна, как вы хотите, и изображение всегда будет отображаться с использованием его наилучшего соответствия. К сожалению, мне также нужно обрабатывать события щелчка мыши на изображении и нужно иметь возможность переводить координаты пространства экрана в координаты пространства изображения.

Похоже, что легко перевести из пространства экрана в пространство управления, но я не вижу очевидного способа перевести из пространства управления в пространство изображения (т. е. координату пикселя в исходном изображении, которая была масштабирована в поле изображения).

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

c#   winforms   picturebox    

584   2   16:03, 1st July, 2020


Возможно "spin off" несколько GUI потоков? (Не останавливая систему на Application.Run)

Моя Цель

Я хотел бы иметь основной поток обработки (не GUI) и иметь возможность выделять GUIs в своих собственных фоновых потоках по мере необходимости, а мой основной поток не GUI продолжает работать. Другими словами, Я хочу, чтобы мой основной не GUI-поток был владельцем GUI-потока, а не наоборот. Я не уверен, что это возможно даже с формами Windows (?)

Фон

У меня есть система на основе компонентов, в которой контроллер динамически загружает сборки и создает экземпляры и запускает классы, реализующие общий интерфейс IComponent с одним методом DoStuff() .

Какие компоненты, которые загружаются, настраиваются с помощью файла конфигурации xml и путем добавления новых сборок, содержащих различные реализации IComponent . Компоненты предоставляют служебные функции главному приложению. В то время как основная программа делает это вещь, например управляя ядерной установкой, компоненты могут выполнять служебные задачи (в своих собственных потоках), например, очищать базу данных, отправлять электронные письма, печатать смешные шутки на принтере, что у вас есть. Я бы хотел, чтобы один из этих компонентов мог отображать GUI, например, с информацией о состоянии для указанного компонента отправки email.

Время жизни всей системы выглядит следующим образом

  1. Запуск приложения.
  2. Проверьте файл конфигурации для загрузки компонентов. Загружать их.
  3. Для каждого компонента запустите DoStuff() , чтобы инициализировать его и заставить его жить своей собственной жизнью в своих собственных потоках.
  4. Продолжать делать основное применение-штука царем работать, навсегда.

Я еще не смог успешно выполнить пункт 3, если компонент запускает GUI в DoStuff() . Он просто останавливается, пока GUI не будет закрыт. И только после закрытия GUI программа переходит к пункту 4.

Было бы здорово, если бы этим компонентам было разрешено запускать свои собственные формы Windows GUIs.

Проблема

Когда компонент пытается запустить GUI в DoStuff() (точная строка кода - это когда компонент запускает Application.Run(theForm)), компонент и, следовательно, наша система "hangs" в строке Application.Run() , пока GUI не будет закрыт. Ну, только что загорелся GUI работает нормально, как и ожидалось.

Пример компонентов. Один не имеет ничего общего с GUI, в то время как второй запускает симпатичный windows с розовыми пушистыми кроликами в них.

public class MyComponent1: IComponent
{
    public string DoStuff(...) { // write something to the database  }
}

public class MyComponent2: IComponent
{
    public void DoStuff()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form());

        // I want the thread to immediately return after the GUI 
        // is fired up, so that my main thread can continue to work.
    }
}

Я пробовал это без удачи. Даже когда я пытаюсь запустить GUI в своем собственном потоке, выполнение останавливается до тех пор, пока GUI не будет закрыт.

public void DoStuff()
{
    new Thread(ThreadedInitialize).Start()
}

private void ThreadedInitialize()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form());
}

Можно ли открутить GUI и вернуться после Application.Run() ?

c#   .net   winforms    

476   3   16:03, 1st July, 2020


Как сделать элемент управления похожим на ComboBox с включенными визуальными стилями?

У меня есть элемент управления, который моделируется на ComboBox . Я хочу сделать контроль таким образом, чтобы граница контроля выглядела как стандартная Windows ComboBox . В частности, я следовал документации MSDN, и все рендеринг элемента управления является правильным, за исключением рендеринга, когда элемент управления отключен.

Просто чтобы быть ясным, это для системы с включенными визуальными стилями . Кроме того, все части элемента управления отображаются правильно, за исключением границы вокруг отключенного элемента управления, которая не соответствует отключенному цвету границы ComboBox .

Я использую класс VisualStyleRenderer . MSDN предлагает использовать элемент VisualStyleElement.TextBox для части TextBox элемента управления ComboBox , но стандартный отключенный TextBox и стандартный отключенный ComboBox рисуют несколько иначе (один имеет светло-серую границу, другой-светло-синюю границу).

Как я могу получить правильный рендеринг элемента управления в отключенном состоянии?

c#   .net   winforms    

425   0   16:03, 1st July, 2020


Является ли вход "Confirm Email" хорошей практикой, когда пользователь меняет адрес email?

В моей организации есть форма, позволяющая пользователям обновлять свой адрес email вместе с нами. Предполагается, что у нас есть два поля ввода для email: второй в качестве подтверждения email.

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

Независимо от того, считается ли это хорошей практикой? Лично я этого не выношу, но также понимаю, что это, вероятно, не для меня. Если кто-то испортит свой email, они не смогут войти в систему, и они должны позвонить, чтобы разобраться.

html   email   forms   confirm    

470   9   16:03, 1st July, 2020


Как сделать так, чтобы символ button выглядел так, как будто он нажат?

Используя VS2008, C#, .Net 2 и Winforms как я могу сделать обычный Button вид "pressed"? Представьте себе, что этот button-это переключатель включения/выключения. ToolStripButton имеет свойство Checked, а обычный Button-нет.

c#   .net   winforms   user-interface   button    

466   3   16:03, 1st July, 2020


Как я могу опубликовать и затем перенаправить на внешний URL из ASP.Net?

ASP.NET серверные элементы управления обратной связью на свою собственную страницу. Это приводит к тому, что вы хотите перенаправить пользователя на внешнюю страницу, но по какой-то причине (например, для аутентификации) должны разместить на этой странице сообщение.

HttpWebRequest отлично работает, если вы не хотите перенаправлять, а JavaScript в некоторых случаях подходит, но может стать сложным, если вам действительно нужен код на стороне сервера,чтобы собрать данные для публикации.

Так как же вы одновременно отправляете сообщение на внешний URL и перенаправляете пользователя на результат из вашего кода ASP.NET codebehind?

javascript   c#   asp.net   forms   postback    

463   6   16:03, 1st July, 2020


Печать элемента Winform / visual

Все статьи, которые я нашел через Google либо устарели, либо противоречат друг другу.

Каков самый простой способ распечатать форму или, скажем, richtextbox в c#? я думаю, что он использует класс PrintDiaglog , установив Document, но как это преобразуется?

c#   winforms    

539   2   16:03, 1st July, 2020


Выбрали компактный рамках/нарезание резьбы - MessageBox отображается над другими элементами управления после того, как опция

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

  • Нажимает кнопку
  • Метод проверяет наличие обновлений, возвращается счетчик.
  • Если больше 0, то спросите пользователя, если они хотят установить с помощью MessageBox.Show().
  • Если да, то он проходит через цикл и вызывает BeginInvoke() в методе run() каждого обновления, чтобы запустить его в фоновом режиме.
  • В моем классе обновления есть некоторые события, которые используются для обновления индикатора выполнения и т. д.

Обновления индикатора выполнения в порядке, но MessageBox не полностью очищается от экрана, потому что цикл обновления начинается сразу после нажатия пользователем кнопки да (см. снимок экрана ниже).

  • Что я должен сделать, чтобы сделать messagebox исчезнуть мгновенно до начала цикла обновления?
  • Должен ли я использовать потоки вместо BeginInvoke()?
  • Должен ли я выполнять начальную проверку обновления в отдельном потоке и вызывать MessageBox.Show() из этого потока?

Код

// Button clicked event handler code...
DialogResult dlgRes = MessageBox.Show(
    string.Format("There are {0} updates available.\n\nInstall these now?", 
    um2.Updates.Count), "Updates Available", 
    MessageBoxButtons.YesNo, 
    MessageBoxIcon.Question, 
    MessageBoxDefaultButton.Button2
);

if (dlgRes == DialogResult.Yes)
{
    ProcessAllUpdates(um2); 
}

// Processes a bunch of items in a loop
private void ProcessAllUpdates(UpdateManager2 um2)
{
    for (int i = 0; i < um2.Updates.Count; i++)
    {
        Update2 update = um2.Updates[i];

        ProcessSingleUpdate(update);

        int percentComplete = Utilities.CalculatePercentCompleted(i, um2.Updates.Count);

        UpdateOverallProgress(percentComplete);
    }
}

// Process a single update with IAsyncResult
private void ProcessSingleUpdate(Update2 update)
{
    update.Action.OnStart += Action_OnStart;
    update.Action.OnProgress += Action_OnProgress;
    update.Action.OnCompletion += Action_OnCompletion;

    //synchronous
    //update.Action.Run();

    // async
    IAsyncResult ar = this.BeginInvoke((MethodInvoker)delegate() { update.Action.Run(); });
}

Скриншот

Windows Mobile Bug

c#   winforms   multithreading   compact-framework    

586   3   02:34, 7th August, 2020


В WinForms, почему вы не можете обновить элементы управления UI из других потоков?

Я уверен, что для этого есть хорошая (или, по крайней мере, приличная) причина. Что это?

winforms   multithreading    

504   2   10:27, 5th August, 2020


Форматирование текста в метке WinForm

Можно ли отформатировать определенный текст в метке WinForm вместо того, чтобы разбивать текст на несколько меток? Пожалуйста, не обращайте внимания на теги HTML в тексте этикетки; он используется только для того, чтобы получить мою точку зрения.

Например:

Dim myLabel As New Label
myLabel.Text = "This is <b>bold</b> text.  This is <i>italicized</i> text."

Который будет производить текст в метке как:

Это жирный текст. Это текст выделен курсивом .

winforms   text   formatting   label    

569   12   22:57, 29th August, 2020


Простая анимация в WinForms

Представьте, что вы хотите анимировать какой-то объект на WinForm. Вы настраиваете таймер для обновления состояния или модели и переопределения события рисования формы. Но с этого момента, каков лучший способ постоянно перекрашивать форму для анимации?

  • Аннулировать форму, как только вы закончите рисовать?
  • Установить второй таймер и аннулировать форму на регулярной основе?
  • Может быть, в этом деле есть какая-то общая закономерность?
  • Есть ли какие-нибудь полезные классы .NET, чтобы помочь?

Каждый раз, когда мне нужно это сделать, я обнаруживаю новый метод с новым недостатком. Каковы опыт и рекомендации сообщества SO?

.net   winforms   animation    

554   3   09:43, 23rd August, 2020


Каков наилучший способ загрузить файл через сообщение HTTP с веб-формой?

В принципе, что-то лучше, чем это:

<input type="file" name="myfile" size="50">

Прежде всего, кнопка browse выглядит по-разному в каждом браузере. В отличие от кнопки submit на форме, вы должны придумать какой-то Хак-y способ его стиля.

Во-вторых, нет индикатора прогресса, показывающего, сколько файлов было загружено. Обычно вам нужно реализовать какой-то способ на стороне клиента, чтобы отключить несколько отправок (например, изменить кнопку отправки на отключенную кнопку, показывающую "отправка формы... подождите пожалуйста.") или flash гигантское предупреждение.

Есть ли хорошие решения для этого, которые не используют Flash или Java?

Яаков : этот продукт выглядит именно так, как я ищу, но стоимость составляет $1000 и его специально для ASP.NET. есть ли какие-либо проекты с открытым исходным кодом, которые охватывают ту же или подобную функциональность?

html   http   forms   post   upload    

691   4   16:02, 27th August, 2020


Windows формы потоков и событий - ListBox обновления быстро, но progressbar испытывает огромную задержку

Наша команда создает новую систему документооборота по подбору персонала взамен старой. Мне было поручено перенести старые данные в новую схему. Я решил сделать это, создав небольшой проект Windows Forms, поскольку схема радикально отличается, а прямые скрипты TSQL не являются адекватным решением.

Основной запечатанный класс 'ImportController', выполняющий эту работу, объявляет следующее событие делегата:

public delegate void ImportProgressEventHandler(object sender, ImportProgressEventArgs e);
public static event ImportProgressEventHandler importProgressEvent;

Главное окно запускает статический метод в этом классе, используя новый поток:

Thread dataProcessingThread = new Thread(new ParameterizedThreadStart(ImportController.ImportData));
dataProcessingThread.Name = "Data Importer: Data Processing Thread";
dataProcessingThread.Start(settings);

ImportProgressEvent args содержит строковое сообщение, максимальное значение int для индикатора выполнения и текущее значение progress int. В Windows форма зарегистрировавшегося на мероприятие:

ImportController.importProgressEvent += new ImportController.ImportProgressEventHandler(ImportController_importProgressEvent);

И реагирует на событие таким образом, используя свой собственный делегат:

    private delegate void TaskCompletedUIDelegate(string completedTask, int currentProgress, int progressMax);

private void ImportController_importProgressEvent(object sender, ImportProgressEventArgs e)
            {
                this.Invoke(new TaskCompletedUIDelegate(this.DisplayCompletedTask), e.CompletedTask, e.CurrentProgress, e.ProgressMax);
            }

Наконец, индикатор выполнения и listbox обновляются:

private void DisplayCompletedTask(string completedTask, int currentProgress, int progressMax)
        {
            string[] items = completedTask.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

            foreach (string item in items)
            {
                this.lstTasks.Items.Add(item);
            }

            if (currentProgress >= 0 && progressMax > 0 && currentProgress <= progressMax)
            {
                this.ImportProgressBar.Maximum = progressMax;
                this.ImportProgressBar.Value = currentProgress;
            }
        }

Дело в том, что ListBox, похоже, обновляется очень быстро ,но индикатор выполнения никогда не перемещается, пока пакет не будет почти завершен??? а что дает ?

windows   multithreading   events   forms   delegates    

474   6   22:12, 17th August, 2020


Переопределить поведение вкладки в WinForms

У меня есть UserControl, который состоит из трех TextBoxes. На форме я могу иметь один или несколько или мой UserControl. Я хочу реализовать свое собственное поведение вкладки, поэтому, если пользователь нажимает Tab во втором TextBox, я должен перейти только к третьему TextBox, если во втором TextBox что-то введено. Если ничего не вводится во втором TextBox следующий элемент управления формы должен получить фокус в соответствии с обычным поведением вкладки. Если пользователь ничего не ввел в первом или втором TextBox и на вкладке presses есть этот особый случай, когда элемент управления в форме должен быть пропущен.

С помощью ProcessDialogKey мне удалось заставить его работать нормально, но у меня все еще есть одна проблема. Мой вопрос заключается в том, есть ли способ определить, как элемент управления WinForms получил фокус, так как я также хотел бы знать, получил ли мой UserControl фокус с вкладки или Shift-Tab, а затем сделал свои странные вещи, но если пользователь нажимает на элемент управления, я не хочу делать ничего особенного.

c#   .net   winforms    

533   5   01:34, 13th August, 2020


Предложения по переходу с ASP.NET WebForms на ASP.NET MVC?

ASP.NET MVC обсуждалось на этом форуме несколько раз. Я собираюсь сделать большую миграцию нескольких веб-сайтов с классического ASP/ASP.NET WebForms на ASP.NET MVC и задавался вопросом, какие советы у вас есть с опытом работы в обеих технологиях.

Что у меня есть: типичное приложение ASP.NET с сильно связанной презентацией / бизнес-логикой, всевозможные грязные ASP.NET-generated Javascript cruft и т. д.

Что я хочу: чистый ASP.NET MVC-сгенерированный агностик markup. 'Nuff сказал.

Любые указатели, советы, трюки или gotchas, чтобы быть в курсе?

Спасибо!

.net   asp.net   asp.net-mvc   webforms    

478   4   02:17, 4th August, 2020


Отключение ListView в C#,, но все еще показывает текущий выбор

У меня есть элемент управления ListView, и я пытаюсь найти самый простой/лучший способ запретить изменение выбранных строк, не скрывая выбранные строки.

Я знаю, что есть свойство HideSelection , но это работает только тогда, когда ListView все еще включен (но не сфокусирован). Мне нужно, чтобы выбор был видимым, даже если ListView отключен.

Как я могу это реализовать?

c#   .net   winforms   listview    

442   3   15:08, 16th August, 2020


Множественный выбор на WinForms

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

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

winforms   combobox    

620   5   21:06, 1st October, 2020


Как отключить Alt + F4 закрывающую форму?

Что является лучшим способом, чтобы отключить Alt + F4 в c# выиграть форму, чтобы предотвратить пользователей от закрытия формы?

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

c#   .net   winforms    

788   11   09:38, 6th August, 2020


Кнопка цикла фоновые изображения в C#

У меня есть форма в C#, которая имеет кнопку, при нажатии на которую я хочу, чтобы фоновое изображение циклически проходило через набор изображений (которые у меня есть в качестве ресурсов для проекта). Изображения по имени '_1', '_2', и т. д. и каждый раз, когда я нажимаю кнопку, Я хочу, чтобы его фоновое изображение увеличивалось до следующего и возвращалось к "_1", когда оно достигнет самого высокого. Есть ли способ сделать это?

Я попытался получить button1.BackgroundImage.ToString() , но это дает System.Drawing.Bitmap вместо Resources._1 , как я думал (в этом случае я мог бы просто получить последний символ и включить его, чтобы изменить фон на соответствующее новое изображение).

Спасибо за вашу помощь.

c#   .net   winforms    

500   3   11:18, 6th August, 2020


Инструмент в Visual Studio 2008 для помощи в локализации

Есть ли у кого-нибудь рекомендации по инструментам, которые могут помочь с перемещением литеральных значений в файлы ресурсов для локализации?

Я использовал плагин resharper под названием RGreatX, но мне было интересно, есть ли что-нибудь еще.

Это чертовски длинный ручной процесс для перемещения строк и думаю, что должен быть лучший способ! RGreatX-это OK но может быть немного дождевик, я чувствую.

visual-studio   winforms   internationalization   vsx   extensibility    

457   4   01:34, 18th August, 2020


Ошибка отсечения чертежа .Net

Функция GDI+ DrawLines имеет ошибку отсечения, которую можно воспроизвести, выполнив следующий код c#. При выполнении кода появляются два пути строк, которые должны быть идентичными, потому что оба они находятся внутри области отсечения. Но когда область отсечения установлена, один из сегментов линии не рисуется.

protected override void OnPaint(PaintEventArgs e)
{
   PointF[] points = new PointF[] { new PointF(73.36f, 196), 
             new PointF(75.44f, 32), 
             new PointF(77.52f, 32), 
             new PointF(79.6f, 196), 
             new PointF(85.84f, 196) };

   Rectangle b = new Rectangle(70, 32, 20, 164);         
   e.Graphics.SetClip(b);
   e.Graphics.DrawLines(Pens.Red, points); // clipped incorrectly
   e.Graphics.TranslateTransform(80, 0);
   e.Graphics.ResetClip();
   e.Graphics.DrawLines(Pens.Red, points);
 }

Установка режима антиали на графическом объекте решает эту проблему. Но это не настоящее решение.

Кто-нибудь знает обходной путь?

winforms   graphics   gdi+   system.drawing    

498   3   09:18, 4th August, 2020


C# Автоматическая Очистка Winform Textbox

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

Содержимое должно быть обработано при нажатии enter. Эту часть я думаю, что я понял, но любые предложения будут приветствоваться.

Часть, в которой мне нужна помощь, заключается в том, что после нажатия enter любая запись в textbox должна снова очистить содержимое.

Изменить: textbox управляет частью оборудования RF. То, что пользователь хочет иметь возможность сделать, это ввести настройку и нажать enter. Настройка отправляется на аппаратное обеспечение. Не делая ничего другого, пользователь хочет иметь возможность ввести новую настройку и снова нажать enter.

c#   winforms   textbox    

609   2   20:27, 5th August, 2020


C# включают производного элемента управления на панели инструментов

Это относится к моему другому вопросу автоматической очистки Textbox .
Если я решу получить новый элемент управления TextBox из TextBox вместо реализации пользовательского элемента управления, содержащего только мой Textbox, как бы я включил его в набор инструментов.

c#   visual-studio   winforms   textbox    

456   2   15:21, 23rd August, 2020


Рекомендация для библиотеки проверки формы javascript

Любые рекомендации для библиотеки проверки формы javascript. Я мог бы попробовать свернуть свой собственный (но я не очень хорош в javascript). Необходимо поддерживать проверку обязательных полей, а также желательно регулярное выражение проверки полей.

javascript   forms   validation    

489   4   06:35, 24th August, 2020


Как зашифровать строку подключения в WinForms 1.1 app.config?

Просто ищу первый шаг основное решение здесь, что держит честных людей.

Спасибо, Майк

database   winforms    

457   2   00:35, 25th August, 2020


Есть ли рекомендации для легких .net Win форм HTML элементов управления рендерером?

Пытаясь избежать управления .net WebBrowser (мне не нужно переходить к url, печатать визуализированные html или любые другие встроенные лакомства). Обертывание IE dll кажется немного тяжеловесным.

Мне просто нужно что - то, что может отображать основной html помеченный текст-эквивалент html RichTextBox в действительности. У кого-нибудь есть опыт / рекомендации / военные истории?

.net   winforms   user-interface   controls    

461   5   00:57, 1st August, 2020


Запретить проглатывание исключений элементом управления WebBrowser

Я использую System.Windows.Forms.WebBrowser, чтобы сделать представление a-la начальной страницы Visual Studio. Однако, похоже, что элемент управления ловит и обрабатывает все исключения, молча погружая их! Не нужно говорить, что это очень неудачное поведение.

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
    // WebBrowser.Navigating event handler
    throw new Exception("OMG!");
}

Приведенный выше код отменит навигацию и проглотит исключение.

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
    // WebBrowser.Navigating event handler
    try
    {
        e.Cancel = true;
        if (actions.ContainsKey(e.Url.ToString()))
        {
            actions[e.Url.ToString()].Invoke(e.Url, webBrowser.Document);
        }
    }
    catch (Exception exception)
    {
        MessageBox.Show(exception.ToString());
    }
}

Итак, то, что я делаю (выше), - это поймать все исключения и открыть окно, это лучше, чем молча терпеть неудачу, но все же явно далек от идеала. Я бы хотел, чтобы он перенаправлял исключение через обычный путь сбоя приложения, чтобы оно в конечном итоге становилось необработанным или обрабатывалось приложением из корня.

Есть ли способ сказать элементу управления WebBrowser , чтобы остановить потопление исключений и просто переслать их естественным и ожидаемым способом? Или есть какой-то хакерский способ бросить исключение через родные границы?

.net   winforms   exception-handling   webbrowser-control    

433   2   04:48, 2nd August, 2020


Что является лучшим способом, чтобы написать форму по ASP.NET ДТП?

Каков наилучший способ написать форму для отправки некоторых данных в ASP.NET MVC? Это так, как Скотт Гатри демонстрирует здесь? Есть ли лучшие подходы? Возможно, с меньшим использованием строк?

alt text

asp.net-mvc   forms    

389   1   23:55, 17th August, 2020


Вызов базовых методов при переопределении событий уровня страницы

В моем коде за спиной я связываю свои события вот так:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    btnUpdateUser.Click += btnUpateUserClick;
}

Я сделал это таким образом, потому что это то, что я видел в примерах.

  • Нужно ли вызывать метод base.OnInit()?
  • Будет ли он неявно называться?
  • Лучше ли вызывать его в начале метода или в конце?
  • Каков будет пример, когда путаница в базовом методе может привести вас к неприятностям?

asp.net   events   webforms    

429   6   11:00, 15th August, 2020


Как зашифровать строку подключения в WinForms 1.1 app.config?

Просто ищу первый шаг основное решение здесь, что держит честных людей.

Спасибо, Майк

database   winforms    

467   2   15:15, 27th August, 2020


Есть ли рекомендации для легких .net Win форм HTML элементов управления рендерером?

Пытаясь избежать управления .net WebBrowser (мне не нужно переходить к url, печатать визуализированные html или любые другие встроенные лакомства). Обертывание IE dll кажется немного тяжеловесным.

Мне просто нужно что - то, что может отображать основной html помеченный текст-эквивалент html RichTextBox в действительности. У кого-нибудь есть опыт / рекомендации / военные истории?

.net   winforms   user-interface   controls    

509   5   20:31, 2nd August, 2020


Запретить проглатывание исключений элементом управления WebBrowser

Я использую System.Windows.Forms.WebBrowser, чтобы сделать представление a-la начальной страницы Visual Studio. Однако, похоже, что элемент управления ловит и обрабатывает все исключения, молча погружая их! Не нужно говорить, что это очень неудачное поведение.

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
    // WebBrowser.Navigating event handler
    throw new Exception("OMG!");
}

Приведенный выше код отменит навигацию и проглотит исключение.

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
    // WebBrowser.Navigating event handler
    try
    {
        e.Cancel = true;
        if (actions.ContainsKey(e.Url.ToString()))
        {
            actions[e.Url.ToString()].Invoke(e.Url, webBrowser.Document);
        }
    }
    catch (Exception exception)
    {
        MessageBox.Show(exception.ToString());
    }
}

Итак, то, что я делаю (выше), - это поймать все исключения и открыть окно, это лучше, чем молча терпеть неудачу, но все же явно далек от идеала. Я бы хотел, чтобы он перенаправлял исключение через обычный путь сбоя приложения, чтобы оно в конечном итоге становилось необработанным или обрабатывалось приложением из корня.

Есть ли способ сказать элементу управления WebBrowser , чтобы остановить потопление исключений и просто переслать их естественным и ожидаемым способом? Или есть какой-то хакерский способ бросить исключение через родные границы?

.net   winforms   exception-handling   webbrowser-control    

412   2   20:05, 14th August, 2020


Подавать форму без веб-интерфейса

Кто - нибудь делает какую-либо работу с использованием форм "offline"? У нас есть приложение, которое требует ввода данных из-за пределов нашей компании. Я думал о том, чтобы отправить форму через email, позволяя заполнить форму, а затем отправить обратно. Очевидно, что веб-приложение было бы лучшим решением, но руководство, похоже, не готово создавать инфраструктуру и безопасность для поддержки этого. Я немного читал о формах PDF это хорошее решение или есть другие решения?

forms   offline    

344   2   13:02, 19th August, 2020


Отображение пути в метке

Существуют ли какие-либо автоматические методы для обрезки строки пути .NET?

Например:

C:\Documents and Settings\nick\My Documents\Tests\demo data\demo data.emx

становится

C:\Documents...\demo data.emx

Было бы особенно здорово, если бы это было встроено в класс Label, и я, кажется, помню, что это-не могу найти его!

c#   .net   winforms   path    

521   5   18:12, 29th August, 2020


Каков наилучший способ создания развертываний ClickOnce

Наша команда разрабатывает распределенные приложения winform. Мы используем ClickOnce для deployment и очень довольны этим.

Однако мы обнаружили, что болевая точка с ClickOnce заключается в создании развертываний. У нас есть стандартные среды dev/test/production, и мы должны иметь возможность создавать развертывания для каждого из них, которые устанавливают и обновляют отдельно друг от друга. Кроме того, мы хотим контролировать, какие сборки будут развернуты. Просто потому, что assembly был скомпилирован, не означает, что мы хотим его развернуть.

Очевидным первым выбором для создания развертываний является Visual Studio. Однако VS действительно не решает заявленные проблемы. Следующий на очереди-инструмент SDK, маг. Маг работает OK, но создание развертываний довольно утомительно, и мы не хотим, чтобы каждый разработчик имел наш сертификат подписи кода и пароль.

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

Я доволен нашим текущим решением, но похоже, что будет общепромышленный, принятый подход к этой проблеме. Есть?

winforms   deployment   clickonce    

470   2   22:48, 15th August, 2020


Как переместить элемент из одного меню в другое?

Как переместить элемент меню из одного меню в другое в конструкторе Visual Studio?

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

Я обычно прибегаю к редактированию .Designer.cs файлов вручную.

c#   winforms   visual-studio-2005    

545   1   01:17, 14th August, 2020


Определение Загруженных Сборок

Как я могу определить все сборки, которые мои .NET настольное приложение загрузилось? Я хотел бы поместить их в поле about, чтобы я мог запрашивать клиентов по телефону, чтобы определить, какая версия XYZ у них есть на их PC.

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

.net   winforms   dll   assemblies    

449   5   21:08, 22nd August, 2020


C#.NET Winforms: можно ли переопределить Label.Autosize?

Мне не нравится свойство AutoSize элемента управления Label. У меня есть собственный ярлык, который рисует причудливую округлую границу среди прочего. Я помещаю AutoSize = false в свой конструктор, однако, когда я помещаю его в режим конструктора, свойство всегда истинно.

Я успешно преодолел другие свойства, но этот счастливо игнорирует меня. Есть ли у кого-нибудь ключ, если это "by MS design"?

Вот полный исходный код моего лейбла на случай, если кто-то заинтересуется.

using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace Dentactil.UI.WinControls
{
    [DefaultProperty("TextString")]
    [DefaultEvent("TextClick")]
    public partial class RoundedLabel : UserControl
    {
        private static readonly Color DEFAULT_BORDER_COLOR = Color.FromArgb( 132, 100, 161 );
        private const float DEFAULT_BORDER_WIDTH = 2.0F;
        private const int DEFAULT_ROUNDED_WIDTH = 16;
        private const int DEFAULT_ROUNDED_HEIGHT = 12;

        private Color mBorderColor = DEFAULT_BORDER_COLOR;
        private float mBorderWidth = DEFAULT_BORDER_WIDTH;
        private int mRoundedWidth = DEFAULT_ROUNDED_WIDTH;
        private int mRoundedHeight = DEFAULT_ROUNDED_HEIGHT;

        public event EventHandler TextClick;

        private Padding mPadding = new Padding(8);

        public RoundedLabel()
        {
            InitializeComponent();
        }

        public Cursor TextCursor
        {
            get { return lblText.Cursor; }
            set { lblText.Cursor = value; }
        }

        public Padding TextPadding
        {
            get { return mPadding; }
            set
            {
                mPadding = value;
                UpdateInternalBounds();
            }
        }

        public ContentAlignment TextAlign
        {
            get { return lblText.TextAlign; }
            set { lblText.TextAlign = value; }
        }

        public string TextString
        {
            get { return lblText.Text; }
            set { lblText.Text = value; }
        }

        public override Font Font
        {
            get { return base.Font; }
            set
            {
                base.Font = value;
                lblText.Font = value;
            }
        }

        public override Color ForeColor
        {
            get { return base.ForeColor; }
            set
            {
                base.ForeColor = value;
                lblText.ForeColor = value;
            }
        }

        public Color BorderColor
        {
            get { return mBorderColor; }
            set
            {
                mBorderColor = value;
                Invalidate();
            }
        }

        [DefaultValue(DEFAULT_BORDER_WIDTH)]
        public float BorderWidth
        {
            get { return mBorderWidth; }
            set
            {
                mBorderWidth = value;
                Invalidate();
            }
        }

        [DefaultValue(DEFAULT_ROUNDED_WIDTH)]
        public int RoundedWidth
        {
            get { return mRoundedWidth; }
            set
            {
                mRoundedWidth = value;
                Invalidate();
            }
        }

        [DefaultValue(DEFAULT_ROUNDED_HEIGHT)]
        public int RoundedHeight
        {
            get { return mRoundedHeight; }
            set
            {
                mRoundedHeight = value;
                Invalidate();
            }
        }

        private void UpdateInternalBounds()
        {
            lblText.Left = mPadding.Left;
            lblText.Top = mPadding.Top;

            int width = Width - mPadding.Right - mPadding.Left;
            lblText.Width = width > 0 ? width : 0;

            int heigth = Height - mPadding.Bottom - mPadding.Top;
            lblText.Height = heigth > 0 ? heigth : 0;
        }

        protected override void OnLoad(EventArgs e)
        {
            UpdateInternalBounds();
            base.OnLoad(e);
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            SmoothingMode smoothingMode = e.Graphics.SmoothingMode;
            e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

            int roundedWidth = RoundedWidth > (Width - 1)/2 ? (Width - 1)/2 : RoundedWidth;
            int roundedHeight = RoundedHeight > (Height - 1)/2 ? (Height - 1)/2 : RoundedHeight;

            GraphicsPath path = new GraphicsPath();
            path.AddLine(0, roundedHeight, 0, Height - 1 - roundedHeight);
            path.AddArc(new RectangleF(0, Height - 1 - 2*roundedHeight, 2*roundedWidth, 2*roundedHeight), 180, -90);
            path.AddLine(roundedWidth, Height - 1, Width - 1 - 2*roundedWidth, Height - 1);
            path.AddArc(new RectangleF(Width - 1 - 2*roundedWidth, Height - 1 - 2*roundedHeight, 2*roundedWidth, 2*roundedHeight), 90, -90);
            path.AddLine(Width - 1, Height - 1 - roundedHeight, Width - 1, roundedHeight);
            path.AddArc(new RectangleF(Width - 1 - 2*roundedWidth, 0, 2*roundedWidth, 2*roundedHeight), 0, -90);
            path.AddLine(Width - 1 - roundedWidth, 0, roundedWidth, 0);
            path.AddArc(new RectangleF(0, 0, 2*roundedWidth, 2*roundedHeight), -90, -90);

            e.Graphics.DrawPath(new Pen(new SolidBrush(BorderColor), BorderWidth), path);

            e.Graphics.SmoothingMode = smoothingMode;
            base.OnPaint(e);
        }

        protected override void OnResize(EventArgs e)
        {
            UpdateInternalBounds();
            base.OnResize(e);
        }

        private void lblText_Click(object sender, EventArgs e)
        {
            if (TextClick != null)
            {
                TextClick(this, e);
            }
        }
    }
}

(есть некоторые проблемы с переполнением стека markup и подчеркиванием, но легко следовать коду).


Я действительно удалил это переопределение некоторое время назад, когда увидел, что оно не работает. Я добавлю его снова сейчас и проверю. В основном я хочу заменить метку на какую-то новую метку под названием: IWillNotAutoSizeLabel ;)

Я в принципе ненавижу свойство autosize "on by default".

c#   winforms    

472   4   01:32, 12th August, 2020


Есть ли способ автоматизировать тестирование форм windows?

Я знаком с nunit для модульного тестирования бизнес-уровня, однако сейчас я ищу, чтобы автоматизировать тестирование уровня gui win forms.

Я видел watin и watin рекордер для автоматизации тестов в веб-приложении, получая доступ к элементам управления и автоматизируя их. Однако я изо всех сил пытаюсь найти эквивалент watin для windows форм (написанных в c# или vb.net), предпочтительно с открытым исходным кодом.

Существует ли один или все продукты основаны на записи нажатий мыши и клавиатуры?

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

c#   .net   vb.net   winforms   automated-tests    

603   7   06:17, 18th August, 2020


MVC-где реализовать проверку формы (на стороне сервера)?

При кодировании традиционного приложения MVC, какова наилучшая практика для кодирования проверки формы на стороне сервера? Принадлежит ли код контроллеру или уровню модели? И почему?

model-view-controller   validation   forms    

469   4   15:37, 29th August, 2020


Изменение размера задачи Infragistics GanttChart с помощью мыши

Я загрузил пользовательский DataTable в UltraChart типа GanttChart .

Данные загружаются успешно. Вы знаете, можно ли добавить поддержку изменения размера мыши(перетаскивания) к задачам, которые отображаются на диаграмме? Я не смог выяснить, поддерживается ли это элементом управления Infragistics .

winforms   charts   infragistics   gantt-chart    

370   1   09:26, 23rd August, 2020


Можно ли встроить геккона или Webkit в форму Windows так же, как и WebView?

Я хотел бы знать, существует ли такая вещь, как Gecko.NET ;) я имею в виду, точно так же, как мы можем встроить WebView, и это "instance" из IE7 внутри любого приложения Windows Forms (и сказать это navigateto(fancy_url); ). Я бы с удовольствием использовал Firefox или WebKit.

Кто-нибудь пробовал это?

UPDATE: пожалуйста, имейте в виду, что хотя можно встроить Gecko с помощью упомянутых элементов управления, это все еще невозможно напечатать при использовании Gecko.

Обновление от марта 2010 года : по-прежнему невозможно печатать изначально с помощью GeckoFX, однако существует несколько методов, которых может быть достаточно, в зависимости от того, что вы пытаетесь сделать. Смотрите: http://geckofx.org/viewtopic.php?id=796 для получения дополнительной информации.

Обновление октябрь 2013 : я больше не занимаюсь разработкой Windows, поэтому у меня нет интереса к этому, но, похоже, что разработка Gecko может быть найдена здесь: https://bitbucket.org/geckofx , и она, похоже, недавно обновлена. Оставив это здесь для будущих Windows разработчиков ;)

Обновление январь 2017 : я получил email от компании под названием TeamDev . Они создали основанный на хроме компонент браузера .NET под названием "DotNetBrowser", который может использоваться для отображения современных веб-страниц в приложениях Windows Forms.

Чтобы цитировать email напрямую:

Вот некоторые сведения о компоненте, которые могут быть полезны:

  1. DotNetBrowser основан на хроме, таким образом поддерживая HTML5, CSS3, JS и самые последние веб-стандарты. Базовая версия библиотеки Chromium регулярно обновляется.
  2. Компонент подходит как для WPF, так и для Windows форм настольных приложений и работает как для C#, так и для VB.NET.
  3. Библиотека имеет коммерческую лицензию, однако бесплатные лицензии предоставляются для проектов с открытым исходным кодом и академических проектов.

Отказ от ответственности: я не использовал этот DotNetBrowser для того, чтобы я больше не делал Windows разработки, но, возможно, стоит проверить, если вы ищете решение для этого.

c#   .net   winforms   webkit   gecko    

505   10   11:36, 12th August, 2020


Как я могу убедиться, что полосы прокрутки не перекрывают содержимое?

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

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

Есть ли лучший способ заставить все это работать? Какой-то способ сохранить ненужные и нежелательные полосы прокрутки от появления вообще?

.net   winforms    

437   2   20:39, 7th August, 2020


UITypeEditor и IExtenderProvider

У меня есть экстендер (IExtenderProvider), который расширяет некоторые типы элементы управления с дополнительными свойствами. Для одного из этих свойств у меня есть написано а UITypeEditor. Пока что все работает просто отлично.

Экстендер также имеет несколько свойств сам по себе, которые я пытаюсь Используйте как своего рода дефолт для UITypeEditor. То, что я хочу сделать, - это быть возможность установить свойство на самом расширителе (не расширенные элементы управления), и когда я открываю UITypeEditor для одного из дополнительных свойств на расширенный элемент управления, я хочу установить значение в UITypeEditor на значение из имущества на расширителе.

Простой пример: ExtenderProvider имеет свойство DefaultExtendedValue. В форме я установил значение этого свойства в "My Value". Расширенные элементы управления имеют, через поставщика, свойство ExtendedValue с UITypeEditor. Когда я открываю редактор для свойства ExtendedValue, значение по умолчанию (начальное) должно быть равно "My Value".

Мне кажется, что лучшим местом для этого было бы UITypeEditor.EditValue, как раз перед звонком IWindowsFormsEditorService.DropDownControl или .ShowDialog.

Единственная проблема заключается в том, что я не могу (или не знаю, как это сделать) получить доступ самого поставщика расширителя в EditValue, чтобы прочитать значение рассматриваемого свойства и установить его в UITypeEditor. Контекст дает мне расширенное представление контроль, но в данном случае он мне ни к чему.

Есть ли какой-то способ достичь того, что я пытаюсь? Любая помощь ценится!

Спасибо Том


- Это неплохая идея, но, к сожалению, она меня не совсем устраивает. Я бы очень хотел иметь возможность установить это значение по умолчанию индивидуально для каждого экземпляра поставщика расширителя. (У меня может быть больше одного на одной форме с разными значениями для разных групп расширенных элементов управления.)

.net   winforms   design-time   uitypeeditor   iextenderprovider    

546   3   07:00, 4th August, 2020


Динамический нисходящий список элементов управления в WindowsForms и C#?

В нашем проекте SharpWired мы пытаемся создать компонент загрузки, аналогичный загрузке windows в Firefox или Safari. То есть, один единственный сверху вниз список загрузок, которые являются пользовательскими элементами управления, содержащими индикаторы выполнения, кнопки и то, что нет.

Требования состоят в том, что должен быть один единственный список, с одним элементом в каждой строке. Каждый элемент должен быть пользовательским элементом управления. Весь список должен быть динамически изменяемым, чтобы при увеличении / уменьшении длины списка при необходимости добавлялась полоса прокрутки,а при уменьшении / расширении настраиваемые элементы управления изменялись по ширине списка.

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

Это должно быть довольно распространенный случай использования, и мне кажется немного странным, что FlowLayoutPanel не имеет интуитивного способа сделать это. Кто-нибудь делал что-то подобное или имел советы или хитрости, чтобы заставить нас двигаться вперед?

Ваше здоровье!
/Adam

c#   .net   winforms   user-interface   user-controls    

467   2   04:47, 1st August, 2020


Создание UserControl программно внутри ретранслятора?

У меня есть ретранслятор, который привязан к некоторым данным.

Я привязываюсь к событию ItemDataBound и пытаюсь программно создать UserControl :

В двух словах:

void rptrTaskList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    CCTask task = (CCTask)e.Item.DataItem;

    if (task is ExecTask)
    {
        ExecTaskControl foo = new ExecTaskControl();
        e.Item.Controls.Add(foo);
    }
}

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

Есть какие-нибудь идеи?

asp.net   user-controls   webforms    

538   4   22:06, 7th August, 2020


Как сделать так, чтобы PictureBox использовало пересчет ближайших соседей?

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

c#   .net   winforms   gdi+   picturebox    

477   4   22:18, 17th August, 2020


DoDragDrop и MouseUp

Есть ли простой способ гарантировать, что после того, как drag-and-drop не завершится, событие MouseUp не будет съедено и проигнорировано платформой?

Я нашел сообщение в блоге, описывающее один механизм, но он включает в себя много ручного учета, включая флаги состояния, события MouseMove, ручную проверку "mouse leave" и т. д. все это я предпочел бы не реализовывать, если этого можно избежать.

.net   winforms   events   drag-and-drop    

495   1   09:33, 9th August, 2020


Остановите мигание панели задач

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

c#   winforms   taskbar    

477   3   22:44, 2nd August, 2020


Не удается получить доступ к удаленному объекту - как это исправить?

В проекте VB.NET WinForms я получаю исключение

Невозможно получить доступ к удаленному объекту

при закрытии формы. Это происходит очень редко, и я не могу воссоздать его по требованию. Стек trace выглядит следующим образом:

Cannot access a disposed object. Object name: 'dbiSchedule'.
  at System.Windows.Forms.Control.CreateHandle()
  at System.Windows.Forms.Control.get_Handle()
  at System.Windows.Forms.Control.PointToScreen(Point p)
  at Dbi.WinControl.Schedule.dbiSchedule.a(Boolean A_0)
  at Dbi.WinControl.Schedule.dbiSchedule.a(Object A_0, EventArgs A_1)
  at System.Windows.Forms.Timer.OnTick(EventArgs e)
  at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
  at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

dbiSchedule - это управление расписанием от Dbi-tech. В форме есть таймер, который обновляет расписание на экране каждые несколько минут.

Есть идеи, что вызывает исключение и как я могу его исправить? или даже просто возможность воссоздать его по требованию?


Hej и! Спасибо за все ответы. Мы останавливаем таймер на событии FormClosing и проверяем свойство IsDisposed в компоненте расписания, прежде чем использовать его в событии Timer Tick, но это не помогает.

Это действительно раздражающая проблема, потому что если кто - то действительно придумал решение, которое сработало-я не смогу подтвердить решение, потому что я не могу воссоздать проблему вручную.

.net   vb.net   winforms    

464   11   14:46, 26th August, 2020


WinForms привязка данных и внешние ключевые связи

Я разрабатываю приложение WinForms (.Net 3.5, no WPF), где я хочу иметь возможность отображать внешние ключи поиска в базе данных DataGridView.

Примером такого рода отношений является то, что у меня есть таблица OrderLines. Линии заказов имеют отношение внешнего ключа к продуктам, а продукты, в свою очередь, имеют отношение внешнего ключа к ProductTypes.

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

Пользователи могут добавлять или редактировать строки заказов непосредственно в сетку и выбирать продукт для строки заказа из comboBoxColumn - это должно затем обновить столбец producttype, отображающий тип продукта для выбранного продукта, в той же строке.

Самый близкий к хорошему подходу, который я нашел до сих пор, - это ввести объект домена, представляющий линию порядка, а затем привязать DataGridView к коллекции этих линий порядка. Затем я добавляю свойства к объекту orderline, которые предоставляют продукт и producttype, и вызываю соответствующие события notifypropertychanged, чтобы поддерживать все в актуальном состоянии. В моем репозитории orderline я могу затем связать сопоставления между этим объектом orderline и тремя таблицами в моей базе данных.

Это работает на стороне привязки данных, но необходимость передавать код всего этого OR-mapping в репозитории кажется плохой. Я думал, что nHibernate сможет помочь с этим подключением, но я борюсь с сопоставлениями через все внешние ключи - они, кажется, работают нормально (поиск foreignkey для продукта orderline создает правильный объект product на основе внешнего ключа), пока я не попытаюсь выполнить привязку данных, я не могу получить столбцы идентификаторов databound для обновления моего продукта или объектов producttype.

Является ли мой общий подход даже в правильном направлении? Если это так, то каково хорошее решение проблемы картографирования?

Или есть ли лучшее решение для привязки данных строк, включая поиск внешних ключей, которое я даже не рассматривал?

c#   .net   winforms    

475   5   07:22, 14th August, 2020


Как остановить конструктор, генерирующий код для общедоступных свойств в пользовательском элементе управления?

Как остановить конструктор от автоматического создания кода, задающего значение для общих свойств пользовательского элемента управления?

c#   winforms    

445   3   10:01, 22nd August, 2020