iModel中二个窗口界面同时共享一个实体数据的方法

iModel中二个窗口界面同时共享一个实体数据的方法

在iModel中可以在一个窗口启动后,再启动另一个窗口来显示同一个实体数据的另一部分,一个示例界面如下:


点击详细后会如下弹出一个浮动窗口,显示明细数据。

后面的窗体是一个子窗口风格,旁边的对话框小窗口是一个浮动窗口,其中显示的是后面子窗口中的明细数据,会随着用户点击明细记录而变动。

该种类型的界面实现步骤如下:

1,子窗口界面实现按正常定义即可,父实体为EditEntityBase。

2,再定义一个父窗口类型为PopupFormBase的窗口界面,其中实体与上面子窗口的实体相同,控件设置对应的显示子对象。

3,在子窗口界面的实体中增加一个名称为“Details”的功能,并配置FormOpenForFunc插件,如下:

FormName中的名称就是对话盒窗口的界面名称,OpenOptions是浮动窗口,SameEntity为true。

4,在子窗口的明细业务对象中增加一个动作属性“Details”,并设置其存储和装载为false。

5,在子窗口界面模型中增加动作属性对应的按钮控件,并设置其功能为上面已增加的功能“Details”。

如上步骤就可以实现同一个实体同时显示多种窗口风格的方式。
好的,下面是一个简单的 RabbitMQ 帮助类的封装示例,使用 .NET 6: ```csharp using System; using System.Text; using RabbitMQ.Client; namespace RabbitMQHelper { public class RabbitMQHelper { private readonly string _hostName; private readonly int _port; private readonly string _userName; private readonly string _password; private readonly string _queueName; private readonly string _exchangeName; private readonly string _routingKey; private IConnection _connection; private IModel _channel; public RabbitMQHelper(string hostName, int port, string userName, string password, string queueName, string exchangeName, string routingKey) { _hostName = hostName; _port = port; _userName = userName; _password = password; _queueName = queueName; _exchangeName = exchangeName; _routingKey = routingKey; CreateConnection(); } private void CreateConnection() { var factory = new ConnectionFactory { HostName = _hostName, Port = _port, UserName = _userName, Password = _password }; _connection = factory.CreateConnection(); _channel = _connection.CreateModel(); _channel.ExchangeDeclare(_exchangeName, ExchangeType.Direct, durable: true); _channel.QueueDeclare(_queueName, durable: true, exclusive: false, autoDelete: false); _channel.QueueBind(_queueName, _exchangeName, _routingKey); } public void PublishMessage(string message) { var body = Encoding.UTF8.GetBytes(message); var properties = _channel.CreateBasicProperties(); properties.Persistent = true; _channel.BasicPublish(_exchangeName, _routingKey, properties, body); } public string ConsumeMessage() { var message = string.Empty; var consumer = new EventingBasicConsumer(_channel); consumer.Received += (model, ea) => { var body = ea.Body.ToArray(); message = Encoding.UTF8.GetString(body); }; _channel.BasicConsume(_queueName, true, consumer); return message; } public void CloseConnection() { _channel.Close(); _connection.Close(); } } } ``` 这个类有一个构造函数,需要传入 RabbitMQ 服务器的主机名、端口、用户名、密码、队列名、交换机名和路由键。然后,它会创建一个连接和一个通道,并使用这些参数声明交换机和队列,并将它们绑定在一起。`PublishMessage`方法可以用于发布消息,`ConsumeMessage`方法可以用于消费消息。最后,可以使用`CloseConnection`方法关闭连接。 使用示例: ```csharp using RabbitMQHelper; var rabbitMQHelper = new RabbitMQHelper("localhost", 5672, "guest", "guest", "my_queue", "my_exchange", "my_routing_key"); rabbitMQHelper.PublishMessage("Hello, RabbitMQ!"); var message = rabbitMQHelper.ConsumeMessage(); Console.WriteLine(message); rabbitMQHelper.CloseConnection(); ``` 这是一个简单的示例,你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值