C# 显示(“您已赢得此产品!”); 这个。_dt.Stop(); } 其他的 ts(计数); }; ts(计数); 这个。_dt.Start(); } 私有无效btnLogout\U单击(对象发送者,路由目标e) { MainWindow main=新的MainWindow(); main.Show(); Close(); MessageBox.Show(“您未登录,请登录竞拍”,“失败”, MessageBoxButton.OK,MessageBoxImage.Information); } 私有无效btnAdd_单击(对象发送者,路由目标e) { 寄存器reg=新寄存器(); reg.Show(); Close(); } private void DataGrid_SelectionChanged(对象发送方,SelectionChangedEventArgs e) { var grid=发送方作为数据网格; var selected=grid.SelectedItem; if(selected==grid.SelectedItem) { btnBid.Visibility=System.Windows.Visibility.Visible; } } 私有void UpdateColumn() { } } }
如果我理解正确,每次用户单击Bid按钮时,您都需要重置计时器。但是,前一个计时器将继续。我还没有将您的代码粘贴到要测试的项目中,但在我看来,您需要将分派计时器设置为类字段或属性,如下所示:C# 显示(“您已赢得此产品!”); 这个。_dt.Stop(); } 其他的 ts(计数); }; ts(计数); 这个。_dt.Start(); } 私有无效btnLogout\U单击(对象发送者,路由目标e) { MainWindow main=新的MainWindow(); main.Show(); Close(); MessageBox.Show(“您未登录,请登录竞拍”,“失败”, MessageBoxButton.OK,MessageBoxImage.Information); } 私有无效btnAdd_单击(对象发送者,路由目标e) { 寄存器reg=新寄存器(); reg.Show(); Close(); } private void DataGrid_SelectionChanged(对象发送方,SelectionChangedEventArgs e) { var grid=发送方作为数据网格; var selected=grid.SelectedItem; if(selected==grid.SelectedItem) { btnBid.Visibility=System.Windows.Visibility.Visible; } } 私有void UpdateColumn() { } } },c#,wpf,C#,Wpf,如果我理解正确,每次用户单击Bid按钮时,您都需要重置计时器。但是,前一个计时器将继续。我还没有将您的代码粘贴到要测试的项目中,但在我看来,您需要将分派计时器设置为类字段或属性,如下所示: private DispatchTimer _dt = new System.Windows.Threading.DispatcherTimer(); 在Bid的事件处理程序中,首先停止当前_dt,然后实例化新计时器: _dt.Stop(); _dt = new System.Windows.Threadi
private DispatchTimer _dt = new System.Windows.Threading.DispatcherTimer();
在Bid的事件处理程序中,首先停止当前_dt,然后实例化新计时器:
_dt.Stop();
_dt = new System.Windows.Threading.DispatcherTimer();
尝试以下更改:
namespace Auction
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
//Class level field:
private DispatchTimer _dt = new System.Windows.Threading.DispatcherTimer();
public MainWindow()
{
InitializeComponent();
GetData("SELECT * FROM Produs");
btnLogout.Visibility = System.Windows.Visibility.Hidden;
btnAdd.Visibility = System.Windows.Visibility.Hidden;
btnBid.Visibility = System.Windows.Visibility.Hidden;
tb.Visibility = System.Windows.Visibility.Hidden;
}
private void GetData(string SelectCommand)
{
SqlConnection conn = new SqlConnection(@"Data Source=ISAAC;Initial Catalog=licitatie;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand(SelectCommand);
cmd.Connection = conn;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable("prod");
sda.Fill(dt);
myGrid.DataContext = dt;
}
private void btnLogin_Click(object sender, RoutedEventArgs e)
{
Login login = new Login();
login.Show();
Close();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Countdown(30, TimeSpan.FromSeconds(1), cur => tb.Text = cur.ToString());
}
void Countdown(int count, TimeSpan interval, Action<int> ts)
{
this._dt.Stop();
this._dt = new System.Windows.Threading.DispatcherTimer();
this._dt.Interval = interval;
this._dt.Tick += (_, a) =>
{
if (count-- == 0)
{
MessageBox.Show("You have won this product!");
this._dt.Stop();
}
else
ts(count);
};
ts(count);
this._dt.Start();
}
private void btnLogout_Click(object sender, RoutedEventArgs e)
{
MainWindow main = new MainWindow();
main.Show();
Close();
MessageBox.Show("You are not logged. Please log in to bid", "Failed",
MessageBoxButton.OK, MessageBoxImage.Information);
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
Register reg = new Register();
reg.Show();
Close();
}
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var grid = sender as DataGrid;
var selected = grid.SelectedItem;
if (selected == grid.SelectedItem)
{
btnBid.Visibility = System.Windows.Visibility.Visible;
}
}
private void UpdateColumn()
{
}
}
}
名称空间拍卖
{
///
///MainWindow.xaml的交互逻辑
///
公共部分类主窗口:窗口
{
//类别级别字段:
private DispatchTimer_dt=new System.Windows.Threading.DispatchTimer();
公共主窗口()
{
初始化组件();
GetData(“从Produs中选择*);
btnLogout.Visibility=System.Windows.Visibility.Hidden;
btnAdd.Visibility=System.Windows.Visibility.Hidden;
btnBid.Visibility=System.Windows.Visibility.Hidden;
tb.Visibility=System.Windows.Visibility.Hidden;
}
私有void GetData(字符串SelectCommand)
{
SqlConnection conn=newsqlconnection(@“数据源=ISAAC;初始目录=licitae;集成安全=True”);
conn.Open();
SqlCommand cmd=新的SqlCommand(SelectCommand);
cmd.Connection=conn;
SqlDataAdapter sda=新的SqlDataAdapter(cmd);
数据表dt=新数据表(“产品”);
sda.填充(dt);
myGrid.DataContext=dt;
}
私有void btnLogin\u单击(对象发送者,路由目标e)
{
Login Login=新登录();
login.Show();
Close();
}
私有无效按钮\u单击(对象发送者,路由目标e)
{
倒计时(30,TimeSpan.FromSeconds(1),cur=>tb.Text=cur.ToString());
}
无效倒计时(整数计数、时间间隔、操作ts)
{
这个。_dt.Stop();
这是。_dt=new System.Windows.Threading.dispatchermer();
这个时间间隔=时间间隔;
这个。dt.Tick+=(dt,a)=>
{
如果(计数--==0)
{
Show(“你赢得了这个产品!”);
这个。_dt.Stop();
}
其他的
ts(计数);
};
ts(计数);
这个。_dt.Start();
}
私有无效btnLogout\U单击(对象发送者,路由目标e)
{
MainWindow main=新的MainWindow();
main.Show();
Close();
MessageBox.Show(“您未登录,请登录竞拍”,“失败”,
MessageBoxButton.OK,MessageBoxImage.Information);
}
私有无效btnAdd_单击(对象发送者,路由目标e)
{
寄存器reg=新寄存器();
reg.Show();
Close();
}
private void DataGrid_SelectionChanged(对象发送方,SelectionChangedEventArgs e)
{
var grid=发送方作为数据网格;
var selected=grid.SelectedItem;
if(selected==grid.SelectedItem)
{
btnBid.Visibility=System.Windows.Visibility.Visible;
}
}
私有void UpdateColumn()
{
}
}
}
您能否再详细描述一下bid按钮的预期行为?每次有人出价时,计时器都应该重置,对吗?你能再描述一下出价按钮的预期行为吗?每次有人出价时,计时器都应该重置,对吗?你能更准确地指出我需要做什么吗。你已经完全明白了。如果这样行的话,请你把我的答案记下来好吗?你能更准确地说明我需要做什么吗。你已经完全明白了。如果这样行的话,请你把我的答案记下来好吗?
_dt.Stop();
_dt = new System.Windows.Threading.DispatcherTimer();
namespace Auction
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
//Class level field:
private DispatchTimer _dt = new System.Windows.Threading.DispatcherTimer();
public MainWindow()
{
InitializeComponent();
GetData("SELECT * FROM Produs");
btnLogout.Visibility = System.Windows.Visibility.Hidden;
btnAdd.Visibility = System.Windows.Visibility.Hidden;
btnBid.Visibility = System.Windows.Visibility.Hidden;
tb.Visibility = System.Windows.Visibility.Hidden;
}
private void GetData(string SelectCommand)
{
SqlConnection conn = new SqlConnection(@"Data Source=ISAAC;Initial Catalog=licitatie;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand(SelectCommand);
cmd.Connection = conn;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable("prod");
sda.Fill(dt);
myGrid.DataContext = dt;
}
private void btnLogin_Click(object sender, RoutedEventArgs e)
{
Login login = new Login();
login.Show();
Close();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Countdown(30, TimeSpan.FromSeconds(1), cur => tb.Text = cur.ToString());
}
void Countdown(int count, TimeSpan interval, Action<int> ts)
{
this._dt.Stop();
this._dt = new System.Windows.Threading.DispatcherTimer();
this._dt.Interval = interval;
this._dt.Tick += (_, a) =>
{
if (count-- == 0)
{
MessageBox.Show("You have won this product!");
this._dt.Stop();
}
else
ts(count);
};
ts(count);
this._dt.Start();
}
private void btnLogout_Click(object sender, RoutedEventArgs e)
{
MainWindow main = new MainWindow();
main.Show();
Close();
MessageBox.Show("You are not logged. Please log in to bid", "Failed",
MessageBoxButton.OK, MessageBoxImage.Information);
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
Register reg = new Register();
reg.Show();
Close();
}
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var grid = sender as DataGrid;
var selected = grid.SelectedItem;
if (selected == grid.SelectedItem)
{
btnBid.Visibility = System.Windows.Visibility.Visible;
}
}
private void UpdateColumn()
{
}
}
}