文本框保留最后输入的值
TextBox hold last entered value
我有一个带有窗体和 WPF(xaml) 的项目,该项目通过在窗体中单击按钮弹出。 WPF 有文本框,用户可以输入一些值,然后单击以在我的项目中使用这些值。我试图实现的是,在第一次调用时用户输入值,如果他再次调用它,文本框将显示最后输入的值。另外我想防止用户输入的值例如小于 1。
这是我的 WPF 代码:
<Window x:Class="Alarms.AlarmsFC_Popup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Alarms"
mc:Ignorable="d"
Title="Alarms" Height="150" Width="525" Background="LightSteelBlue" Icon="warningred.ico">
<Border Padding="10">
<StackPanel>
<!--IO Fields-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!--Begin Alarm-->
<StackPanel Grid.Column="0" Margin="0 0 10 0">
<TextBlock Text="Number From" FontWeight="Black"/>
<TextBox x:Name="BeginAlarmBox1" Padding="1" Margin="0 5 0 0" Background="White" Text="1"></TextBox>
</StackPanel>
<!--End Alarm-->
<StackPanel Grid.Column="1" Margin="0 0 0 0">
<TextBlock Text="Number To" FontWeight="Black"/>
<TextBox x:Name="EndAlarmBox1" Padding="1" Margin="0 5 0 0" Background="White" Text="32"></TextBox>
</StackPanel>
</Grid>
<!--Buttons-->
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Name="BtnExport" Content="Export" Grid.Column="0" Margin="0,10,10,0" Padding="8" Click="BtnExport_Click" />
<Button Name="BtnCancel" Content="Cancel" Grid.Column="1" Margin="10,10,0,0" Padding="8" Click="BtnCancel_Click" />
</Grid>
</StackPanel>
</Border>
</Window>
以及背后的代码
public partial class AlarmsFC_Popup : Window
{
public AlarmsFC_Popup(int BAlarm)
{
InitializeComponent();
BeginAlarm = BAlarm;
}
public int BeginAlarm
{
get { return int.Parse(BeginAlarmBox1.Text); }
set {
BeginAlarmBox1.Text = value.ToString();
if (value < 1) MessageBox.Show("Value has to be 1 or higher!");
}
}
private void BtnExport_Click(object sender, RoutedEventArgs e)
{
if (!String.IsNullOrEmpty(BeginAlarmBox1.Text)) && (!String.IsNullOrEmpty(EndAlarmBox1.Text))
{
BeginAlarm = int.Parse(BeginAlarmBox1.Text);
MessageBox.Show(String.Format("Your for loop start at {0}", BeginAlarm.ToString()));
this.Close();
}
else
{
MessageBox.Show("One or more fields are empty. Fill all fields then press Export!");
}
}
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
//MessageBox.Show("You clicked me at " + e.GetPosition(this).ToString());
}
}
然后我在主窗体中调用它
private void BtnAlarms_Click(object sender, EventArgs e)
{
AlarmsFC_Popup Alarms = new AlarmsFC_Popup(1, 32);
Alarms .ShowDialog();
int FirstAlarm = Alarms .BeginAlarm;
}
我做错了什么?为什么它不保留我最后输入的值,而是它总是显示 1 作为开始警报
您需要将该值存储在某处,否则一旦您关闭 window,它就会消失。
例如,您可以在主 window:
中使用私有字段来执行此操作
int _beginAlarm = 1;
private void BtnAlarms_Click(object sender, EventArgs e)
{
AlarmsFC_Popup Alarms = new AlarmsFC_Popup(_beginAlarm, 32);
Alarms.ShowDialog();
_beginAlarm = Alarms.BeginAlarm;
}
我有一个带有窗体和 WPF(xaml) 的项目,该项目通过在窗体中单击按钮弹出。 WPF 有文本框,用户可以输入一些值,然后单击以在我的项目中使用这些值。我试图实现的是,在第一次调用时用户输入值,如果他再次调用它,文本框将显示最后输入的值。另外我想防止用户输入的值例如小于 1。
这是我的 WPF 代码:
<Window x:Class="Alarms.AlarmsFC_Popup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Alarms"
mc:Ignorable="d"
Title="Alarms" Height="150" Width="525" Background="LightSteelBlue" Icon="warningred.ico">
<Border Padding="10">
<StackPanel>
<!--IO Fields-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!--Begin Alarm-->
<StackPanel Grid.Column="0" Margin="0 0 10 0">
<TextBlock Text="Number From" FontWeight="Black"/>
<TextBox x:Name="BeginAlarmBox1" Padding="1" Margin="0 5 0 0" Background="White" Text="1"></TextBox>
</StackPanel>
<!--End Alarm-->
<StackPanel Grid.Column="1" Margin="0 0 0 0">
<TextBlock Text="Number To" FontWeight="Black"/>
<TextBox x:Name="EndAlarmBox1" Padding="1" Margin="0 5 0 0" Background="White" Text="32"></TextBox>
</StackPanel>
</Grid>
<!--Buttons-->
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Name="BtnExport" Content="Export" Grid.Column="0" Margin="0,10,10,0" Padding="8" Click="BtnExport_Click" />
<Button Name="BtnCancel" Content="Cancel" Grid.Column="1" Margin="10,10,0,0" Padding="8" Click="BtnCancel_Click" />
</Grid>
</StackPanel>
</Border>
</Window>
以及背后的代码
public partial class AlarmsFC_Popup : Window
{
public AlarmsFC_Popup(int BAlarm)
{
InitializeComponent();
BeginAlarm = BAlarm;
}
public int BeginAlarm
{
get { return int.Parse(BeginAlarmBox1.Text); }
set {
BeginAlarmBox1.Text = value.ToString();
if (value < 1) MessageBox.Show("Value has to be 1 or higher!");
}
}
private void BtnExport_Click(object sender, RoutedEventArgs e)
{
if (!String.IsNullOrEmpty(BeginAlarmBox1.Text)) && (!String.IsNullOrEmpty(EndAlarmBox1.Text))
{
BeginAlarm = int.Parse(BeginAlarmBox1.Text);
MessageBox.Show(String.Format("Your for loop start at {0}", BeginAlarm.ToString()));
this.Close();
}
else
{
MessageBox.Show("One or more fields are empty. Fill all fields then press Export!");
}
}
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
//MessageBox.Show("You clicked me at " + e.GetPosition(this).ToString());
}
}
然后我在主窗体中调用它
private void BtnAlarms_Click(object sender, EventArgs e)
{
AlarmsFC_Popup Alarms = new AlarmsFC_Popup(1, 32);
Alarms .ShowDialog();
int FirstAlarm = Alarms .BeginAlarm;
}
我做错了什么?为什么它不保留我最后输入的值,而是它总是显示 1 作为开始警报
您需要将该值存储在某处,否则一旦您关闭 window,它就会消失。
例如,您可以在主 window:
中使用私有字段来执行此操作int _beginAlarm = 1;
private void BtnAlarms_Click(object sender, EventArgs e)
{
AlarmsFC_Popup Alarms = new AlarmsFC_Popup(_beginAlarm, 32);
Alarms.ShowDialog();
_beginAlarm = Alarms.BeginAlarm;
}