Во-первых, перед вызовом f2.b();
для обновления некоторых элементов управления убедитесь, что дескриптор окна создан:
f2.Show();
Если вы вызываете функцию aa()
из другого Form
(скажем, из Form1
) сделайте Thread-Safe Call
, который включает в себя вызов потока, если требуется.
class a
{
private void aa()
{
Form2 f2 = new Form2();
f2.Show();
f2.b();
}
}
public partial class Form2 : Form
{
public void b()
{
Action a = delegate
{
UpdateControls();
};
MethodInvoker Invoker = new MethodInvoker(a);
if (InvokeRequired)
this.Invoke(Invoker);
else
a();
}
public void UpdateControls()
{
textbox1.Text = "xyz";
}
}
Вот ваш модифицированный код, который, я считаю, достигает того, о чем вы просите. Я удалил класс search
из вашего поиска, так как родительский узел имеет тот же класс.
.search-container{
display:flex;
width:70%;
}
.search{
width:100%;
position:relative;
display: flex;
flex-direction: row;
border: 1px solid black;
}
.search:focus-within {
outline-width: 1px;
outline-color: rgb(166,200,255);
outline-style: solid;
}
.search input{
height:50px;
width: 90%;
padding:4px 0 4px 30px;
font-size: 20px;
border: none;
outline: none;
}
.search i{
display: flex;
width: 10%;
justify-content: center;
align-items: center;
font-size: 35px;
padding: 0 .5em 0 .5em;
color: dimgray;
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"
integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
</head>
<body>
<div class="search-container">
<select class="name">
<option value="Name-1">Name-1</option>
<option value="Name-2">Name-2</option>
<option value="Name-3">Name-3</option>
<option value="Name-4">Name-4</option>
<option value="Name-5">Name-5</option>
<option value="Name-6">Name-6</option>
<option value="Name-7">Name-7</option>
</select>
<div class="search">
<input class="search-bar" type="text" name="search" autofocus placeholder="You can search for a name.">
<i class="fas fa-search"></i>
</div>
</div>
</body>
</html>
Вы можете добавить право padding
к вашему входу и установить box-sizing
на border-box
.
Есть пробел, потому что значок расположен не справа относительно входа, а относительно <div class="search">
, потому что это его первый позиционный (не статичный) элемент-предок . И если вы проверяете его в своем браузере, ваш значок находится там, где заканчивается этот div
.
Вот фиксированный фрагмент:
.search-container{
display:flex;
width:70%;
}
.search{
width:100%;
position:relative;
}
.search input{
height:50px;
padding:4px 50px 4px 30px;
font-size: 20px;
box-sizing: border-box;
}
.search i{
position: absolute;
top:50%;
right:10px;
transform: translateY(-50%);
font-size: 35px;
color: dimgray;
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"
integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
</head>
<body>
<div class="search-container">
<select class="name">
<option value="Name-1">Name-1</option>
<option value="Name-2">Name-2</option>
<option value="Name-3">Name-3</option>
<option value="Name-4">Name-4</option>
<option value="Name-5">Name-5</option>
<option value="Name-6">Name-6</option>
<option value="Name-7">Name-7</option>
</select>
<div class="search">
<input class="search-bar search" type="text" name="search" autofocus placeholder="You can search for a name.">
<i class="fas fa-search"></i>
</div>
</div>
</body>
</html>
[1122 ] Из http://jsfiddle.net/Sadhana/2LHh9/ :
.search_box {
background:url("http://png-5.findicons.com/files/icons/980/yuuminco/256/search.png");
background-size:20px 20px;
background-repeat:no-repeat;
background-position: right;
padding-right: 20px !important;
padding-top: 2px !important;
padding-bottom: 2px !important;
padding-left: 5px !important;
float: left;
}
<input type="text" class="textbox search_box" name="keywords" placeholder="Search..." />