You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForm救护车管理系统:MySQL数据展示与交互实现咨询

C#救护车管理程序列表功能实现思路

1. 将MySQL数据绑定到列表指定列

按你常用的UI框架分两种场景给出实现方案:

WinForms(DataGridView)

  1. 先在设计器里给DataGridView添加对应业务列(比如事件ID、任务名称、优先级、触发时间等),把每个列的DataPropertyName设置成和MySQL查询返回的字段名完全一致。
  2. 把查询到的数据转换成DataTable或者自定义实体集合(比如List<AmbulanceTask>),直接赋值给数据源:
    • 用DataTable的情况:
      dataGridView1.DataSource = yourMySQLDataTable;
      
    • 用自定义实体的情况:
      // 先手动映射列与实体属性
      dataGridView1.Columns["colTaskId"].DataPropertyName = "TaskId";
      dataGridView1.Columns["colTaskName"].DataPropertyName = "TaskName";
      dataGridView1.Columns["colEventTime"].DataPropertyName = "EventTime";
      // 绑定实体集合
      dataGridView1.DataSource = yourAmbulanceTaskList;
      

WPF(DataGrid)

  1. 在XAML里定义固定列,通过Binding绑定到实体的对应属性:
    <DataGrid x:Name="taskDataGrid" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="任务ID" Binding="{Binding TaskId}"/>
            <DataGridTextColumn Header="任务名称" Binding="{Binding TaskName}"/>
            <DataGridTextColumn Header="事件时间" Binding="{Binding EventTime}"/>
        </DataGrid.Columns>
    </DataGrid>
    
  2. 后台把MySQL查询到的实体集合赋值给ItemsSource:
    taskDataGrid.ItemsSource = yourAmbulanceTaskList;
    

2. 双击列表项打开详情窗口

WinForms实现

给DataGridView绑定CellDoubleClick事件,判断点击的是数据行后,取出对应数据并打开详情窗体:

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    // 排除表头行的无效点击
    if (e.RowIndex < 0) return;
    
    var selectedTask = dataGridView1.Rows[e.RowIndex].DataBoundItem as AmbulanceTask;
    if (selectedTask != null)
    {
        // 传递任务ID或实体对象到详情窗体
        TaskDetailForm detailForm = new TaskDetailForm(selectedTask.TaskId);
        detailForm.ShowDialog();
    }
}

WPF实现

绑定MouseDoubleClick事件,或者用命令绑定的方式:

  • 事件绑定写法:
    private void taskDataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        var selectedTask = taskDataGrid.SelectedItem as AmbulanceTask;
        if (selectedTask != null)
        {
            TaskDetailWindow detailWindow = new TaskDetailWindow(selectedTask);
            detailWindow.ShowDialog();
        }
    }
    
  • 命令绑定写法(更符合WPF MVVM模式):
    <DataGrid.InputBindings>
        <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding OpenDetailCommand}" CommandParameter="{Binding SelectedItem}"/>
    </DataGrid.InputBindings>
    

3. 图标按钮仅在有数据时显示

WinForms实现

在绑定数据后,直接判断数据源的数量来控制按钮可见性,或者监听数据源变化自动更新:

  • 直接判断的写法:
    // 绑定数据后执行
    btnDetail.Visible = yourAmbulanceTaskList.Count > 0;
    // 如果用DataTable则判断行数
    btnDetail.Visible = yourMySQLDataTable.Rows.Count > 0;
    
  • 自动监听更新的写法:
    private void dataGridView1_DataSourceChanged(object sender, EventArgs e)
    {
        bool hasData = false;
        var dataSource = dataGridView1.DataSource;
        if (dataSource is DataTable dt)
            hasData = dt.Rows.Count > 0;
        else if (dataSource is IList list)
            hasData = list.Count > 0;
        
        btnDetail.Visible = hasData;
    }
    

WPF实现

可以用后台代码直接判断,或者用值转换器做绑定:

  • 后台代码写法:
    taskDataGrid.ItemsSource = yourAmbulanceTaskList;
    btnDetail.Visibility = yourAmbulanceTaskList.Count > 0 ? Visibility.Visible : Visibility.Collapsed;
    
  • 值转换器写法(适合MVVM场景):
    先创建转换器类:
    public class CountToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value is int count && count > 0 ? Visibility.Visible : Visibility.Collapsed;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    
    然后在XAML里绑定:
    <Window.Resources>
        <local:CountToVisibilityConverter x:Key="CountToVisibility"/>
    </Window.Resources>
    ...
    <Button x:Name="btnDetail" Visibility="{Binding ElementName=taskDataGrid, Path=Items.Count, Converter={StaticResource CountToVisibility}}"/>
    

内容的提问来源于stack exchange,提问作者sup3r93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 09:18:30