[原创]怎样从两个列表之间传值??

博客展示了通过JavaScript实现列表选项移动的代码。包含两个多选列表,通过按钮和双击操作,调用moveOption函数,将选中选项从一个列表移至另一个列表,实现了列表选项的动态移动。

http://community.youkuaiyun.com/Expert/topic/3707/3707376.xml?temp=.3616754

<form name=form1>
    <select id=list1 multiple  size=8 ondblclick="moveOption(this, this.form.list2)">
      <option value=A>aaaaaaaaaa
      <option value=B>bbbbbbbbbb
      <option value=C>cccccccccc
      <option value=D>dddddddddd
      <option value=E>eeeeeeeeee
      <option value=F>ffffffffff
      <option value=G>gggggggggg
      <option value=H>hhhhhhhhhh
    </select>
    <input name=add type=button value=">>>" onclick="moveOption(this.form.list1, this.form.list2)">
    <input name=sub type=button value="<<<" onclick="moveOption(this.form.list2, this.form.list1)">
    <select id=list2  multiple  size=8 ondblclick="moveOption(this, this.form.list1)">
    </select>
</form>
<script language="JavaScript"><!--
function moveOption(e1, e2){
    try{
        var e = e1.options
        for(i=e.length-1;i>=0;i--){
           if(e[i].selected){
              e2.options.add(new Option(e[i].text, e[i].value));
              e1.options.remove(i);}}
    }   catch(e){}
}
//--></script>

在 `MVVM Light` 中,可以使用 `Messenger` 类来实现两个窗体之间的通信。`Messenger` 是 `MVVM Light` 框架提供的一种消息递机制,它能够让不同的对象之间进行通信,而不需要相互持有引用。以下是一个示例代码,用于在两个窗体之间递数据: 首先,在发送窗体中定义一个 `Message` 类型,并在构造函数中初始化该类型的对象: ```csharp public class MyMessage { public string Data { get; set; } } public partial class SenderWindow : Window { public SenderWindow() { InitializeComponent(); DataContext = this; // 初始化 Message 对象 var message = new MyMessage { Data = "Hello, World!" }; // 发送消息 Messenger.Default.Send(message); } } ``` 然后,在接收窗体中注册 `Messenger`,并在回调方法中处理接收到的消息: ```csharp public partial class ReceiverWindow : Window { public ReceiverWindow() { InitializeComponent(); DataContext = this; // 注册消息接收器 Messenger.Default.Register<MyMessage>(this, OnMessageReceived); } private void OnMessageReceived(MyMessage message) { // 处理接收到的消息 MessageBox.Show(message.Data); } } ``` 在上面的示例中,我们在发送窗体中创建了一个 `MyMessage` 对象,并通过 `Messenger` 发送了该对象。在接收窗体中,我们注册了一个接收器,用于接收 `MyMessage` 类型的消息。当发送窗体发送消息时,接收窗体中的 `OnMessageReceived` 方法会被回调,然后我们可以在该方法中处理接收到的消息。 需要注意的是,在接收窗体中注册 `Messenger` 时,需要在窗体关闭时注销接收器,以避免内存泄漏: ```csharp protected override void OnClosed(EventArgs e) { Messenger.Default.Unregister<MyMessage>(this); base.OnClosed(e); } ``` 以上是使用 `MVVM Light` 实现两个窗体之间的示例代码,希望能够对你有所帮助。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值