Windows Forms - Несколько циклов событий

<div id="shipping-section"></div>

Поскольку раздел отгрузки здесь закрыт, и в вашей форме не указан атрибут ширины, он принимает ширину 100%. Попробуйте обернуть форму доставки в контейнере секции отгрузки.

Ваши формы не плавают рядом из-за их ширины и полей.

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

См. Ниже рабочий код

<html>
<style>
/* SHIPPING FORM 
===============================================================================================
*/
::placeholder{
  font-weight: 600;
}

#shipping-section {
width: 40%;
float: left;
}
#shipping-form{
  margin-top: 120px;
  margin-left: 150px;
  max-width: 440px;
}

.input-element{
  background-color: #0C0C0D !important;
  height: 30px;
  width: 200px;
  margin-bottom: 20px;
  border: none;
  padding: 15px;
  z-index: 1;
  color: #fff;
}

.full-length{
  width: 440px !important;
}

.left{
  float: left;
}
.right{
  float: right;
}

#shipping-title{
  color: white;
  margin-bottom: 50px;
}

#shipping-title-wrapper{
  margin-left: 170px;
}

#shipping-icon{
  width: 15%;
  margin-left: 25px;
}

/* BILLING FORM 
===============================================================================================
*/

#billing-form{
  float: left;
  margin-right: 100px;
  width: 40%;
}

#billing-title{
  color: white;
  margin-bottom: 50px;
  margin-left: 15px;
}

#add-button{

  background-color: #4FEB75;
}

.billing-buttons{
  font-size: 14px;
  color: white;
  font-weight: 800;
  border: none;
  width: 136px;
  height: 30px; 
  margin-right: 15px;
  margin-top: 30px;
}

#delete-button{
  background-color: #F5576C;
}
</style>


<div id="shipping-section">
    <form id="shipping-form">
            <div id="shipping-title-wrapper">
                <img src="Profiles Icon.svg" id="shipping-icon"></img>
                    <h2 id="shipping-title">Shipping</h2>
                </div>
        <input class="input-element left" id="first-name" placeholder="First Name"></input>
        <input class="input-element right" id="last-name" placeholder="Last Name"></input>
        <input class="input-element left full-length" id="email-address" placeholder="Email Address"></input>
        <input class="input-element left full-length" id="adress-line-1" placeholder="Address Line 1"></input>
        <input class="input-element left full-length" id="address-line-2" placeholder="Address Line 2"></input>
        <input class="input-element left" id="house-name" placeholder="House Name/Num"></input>
        <input class="input-element right" id="country-name" placeholder="Country"></input>
        <input class="input-element left" id="city-name" placeholder="City/State"></input>
        <input class="input-element right" id="postcode-name" placeholder="Postcode/Zipcode"></input>

        <div>
                <button class="billing-buttons" id="add-button">Add</button>
                <button class="billing-buttons" id="delete-button">Delete</button>
            </div>

    </form>

</div>



<div id="billing-form">
        <form id="shipping-form">
                <div id="shipping-title-wrapper">
                    <img src="Billing Icon.svg" id="shipping-icon"></img>
                        <h2 id="billing-title">Billing</h2>
                    </div>
            <input class="input-element left" id="first-name" placeholder="First Name"></input>
            <input class="input-element right" id="last-name" placeholder="Last Name"></input>
            <input class="input-element left full-length" id="email-address" placeholder="Email Address"></input>
            <input class="input-element left full-length" id="adress-line-1" placeholder="Address Line 1"></input>
            <input class="input-element left full-length" id="address-line-2" placeholder="Address Line 2"></input>
            <input class="input-element left" id="house-name" placeholder="House Name/Num"></input>
            <input class="input-element right" id="country-name" placeholder="Country"></input>
            <input class="input-element left" id="city-name" placeholder="City/State"></input>
            <input class="input-element right" id="postcode-name" placeholder="Postcode/Zipcode"></input>
            <input class="input-element left full-length" id="card-name" placeholder="Card Name"></input>
            <input class="input-element left full-length" id="card-number" placeholder="Card Number"></input>
            <input class="input-element left" id="exp-date" placeholder="Exp Date (MM/YY)"></input>
            <input class="input-element right" id="exp-date" placeholder="CVV"></input>







        </form>
</div>
7
задан fuzzyman 29 October 2008 в 21:17
поделиться

5 ответов

Я думаю, что это прекрасно подходит, действительно создают несколько циклов сообщения на различных потоках. Единственная вещь не упустить при контакте с третьей стороной инструментариев UI, они иногда хранят дескрипторы как статичные (вместо ThreadStatic) участники и если у Вас будет несколько потоков UI в Вашем приложении, то это будет иметь проблемы (в моем случае, я нашел, что меню / сочетания клавиш панели инструментов не работало правильно).

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

И, как Kevin говорил, не упустите перекрестное окно (перекрестный поток) вызовы. Можно использовать Управление. BeginInvoke или Управление. Вызовите для регистрации делегата, обращается к другим потокам UI.

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

4
ответ дан 7 December 2019 в 12:26
поделиться

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

1
ответ дан 7 December 2019 в 12:26
поделиться

Немодальные формы могли бы более подходить для Вашей цели. Используйте форму. Покажите () вместо формы. ShowDialog ().

0
ответ дан 7 December 2019 в 12:26
поделиться

Просто будьте осторожны с доступом к элементам GUI от потоков.

0
ответ дан 7 December 2019 в 12:26
поделиться

Почему Вы думаете, что Вам нужен больше чем один цикл сообщения? Один цикл сообщения может обработать любое количество окон.

Если Вы находите, что продолжительная операция в одном окне способна к зависанию целого приложения, то ответ должен разделить продолжительную работу на что-то как BackgroundWorker, оставив UI быстро реагирующим.

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

0
ответ дан 7 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: