アットウィキロゴ

ミクラク

更新日:2011-03-05

ソーシャルネットワーク「mixi(ミクシー)」向けの便利な機能を提供する目的で、
「ミクラク」というアプリを開発しています。

「ミクラク」は、マイミク、足跡の情報を自動で一覧化し、メッセージを便利に
送る機能を提供します。

従来、複数人のマイミクにメッセージを送るとなると、リンクを何度もたどったり
と以外に面倒でした。「ミクラク」を使うと瞬時に複数の方にメッセージを送る
ことができます。

是非、一度お使い頂ければ幸いです!!
http://www.vector.co.jp/soft/winnt/net/se475613.html

開発ツール:Visual Studio 2008 Express
開発言語:WPF(C#)
DB:XML

ここでは、一部WPFのソースを紹介しています。
ご参考になれば幸いです!!

マイミクリスト画面


#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (src01.jpg)

DlgListMyMix.xaml


<UserControl
    x:Class="MixRaku.DlgListMyMix"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:cstm="clr-namespace:CstmControls;assembly=CstmControls"
    xmlns:local="clr-namespace:MixRaku"
    Height="600" 
    Width="1000" 
    Loaded="Window_Loaded">
 
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="DlgBase.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
 
    <UserControl.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="#FFE8E8E5" Offset="0"/>
            <GradientStop Color="#FFF6E1BF" Offset="1"/>
        </LinearGradientBrush>
    </UserControl.Background>
 
    <Grid x:Name="LayoutRoot" Height="600">
        <Button Style="{StaticResource BtnStyle}" TabIndex="8" Margin="30,103,0,0" Name="BtnView" Content="閲覧" Click="BtnView_Click" HorizontalAlignment="Left" Width="80" Height="30" VerticalAlignment="Top" />
        <Button Style="{StaticResource BtnStyle}" TabIndex="12" Margin="115,103,0,0" Name="BtnSend"  Content="送信" Click="BtnSend_Click" HorizontalAlignment="Left" Width="80" Height="30" VerticalAlignment="Top" />
        <Button Style="{StaticResource BtnStyle}" TabIndex="12" Margin="200,103,0,0" Name="BtnPrint"  Content="印刷" Click="BtnPrint_Click" HorizontalAlignment="Left" Width="80" Height="30" VerticalAlignment="Top" />
 
        <cstm:CstmListView TabIndex="13" FontSize="14" x:Name="listView" 
                  GridViewColumnHeader.Click="GridViewColumnHeader_Click" IsSynchronizedWithCurrentItem="True" 
                  Margin="20,139,0,20" Width="450" 
                  Loaded="listView_Loaded" 
                  ItemContainerStyle="{StaticResource LstStyle}"
                  HorizontalAlignment="Left">
            <ListView.View>
                <GridView>
                    <GridViewColumn HeaderStringFormat="Name" Header="名前" Width="200" CellTemplate="{StaticResource Name}"/>
                    <GridViewColumn HeaderStringFormat="Id" Header="ID" Width="80" CellTemplate="{StaticResource ID}"/>
                </GridView>
            </ListView.View>
        </cstm:CstmListView>
 
        <Label Style="{StaticResource LblStyle}" Margin="500,20,0,0" Content="件名"/>
        <Label Style="{StaticResource LblStyle}" Margin="500,60,0,0" Content="内容"/>
        <WindowsFormsHost Margin="500,266,50,20" Name="WindowsFormsHost" Loaded="WindowsFormsHost_Loaded" />
        <TextBox Style="{StaticResource TxtStyle}" TabIndex="14" Width ="400" Margin="550,20,0,0" Name="TxtSubject" />
        <TextBox Style="{StaticResource TxtStyle}" TabIndex="15" Width ="400" Height="200" Margin="550,60,0,178" Name="TxtMsg" TextWrapping="Wrap" AcceptsReturn="True" />
        <GroupBox Header="検索" Height="76" HorizontalAlignment="Left" Margin="12,12,0,0" Name="groupBox1" VerticalAlignment="Top" Width="458">
            <Grid>
                <Label HorizontalAlignment="Left" Margin="12,12,0,18" Name="lblSearchName" Style="{StaticResource LblStyle}" Width="60">名前</Label>
                <TextBox Margin="82,12,214,18" Name="TxtSearch" Style="{StaticResource TxtStyle}" TabIndex="1" />
                <Button HorizontalAlignment="Right" Margin="0,12,128,16" Name="BtnSearch" Style="{StaticResource BtnStyle}" TabIndex="2" Width="80" Click="BtnSearch_Click">検索</Button>
                <Button HorizontalAlignment="Right" Margin="0,12,42,16" Name="BtnClear" Style="{StaticResource BtnStyle}" TabIndex="3" Width="80" Click="BtnClear_Click">クリア</Button>
            </Grid>
        </GroupBox>
        <Label Height="29" HorizontalAlignment="Left" Margin="357,103,0,0" Name="lblCount" Style="{StaticResource LblStyle}" VerticalAlignment="Top" Width="110" HorizontalContentAlignment="Right">Label</Label>
    </Grid>
 
</UserControl>
 

ラベルコントロール


属性
Style リソース定義
Margin 表示位置
Content 表示名

<UserControl
   <Label Style="{StaticResource LblStyle}" Margin="500,20,0,0" Content="件名"/>
   <Label Style="{StaticResource LblStyle}" Margin="500,60,0,0" Content="内容"/>
</UserControl>
 

ボタンコントロール


属性
Style リソース定義
Margin 表示位置
Content 表示名
TabIndex タブの順序
Width
Height 高さ

<UserControl
   <Button Style="{StaticResource BtnStyle}" TabIndex="8" Margin="30,103,0,0" Name="BtnView" Content="閲覧" Click="BtnView_Click" HorizontalAlignment="Left" 
Width="80" Height="30" VerticalAlignment="Top" />
   <Button Style="{StaticResource BtnStyle}" TabIndex="12" Margin="115,103,0,0" Name="BtnSend"  Content="送信" Click="BtnSend_Click" HorizontalAlignment="Left" 
Width="80" Height="30" VerticalAlignment="Top" />
   <Button Style="{StaticResource BtnStyle}" TabIndex="12" Margin="200,103,0,0" Name="BtnPrint"  Content="印刷" Click="BtnPrint_Click" HorizontalAlignment="Left" Width="80" Height="30" VerticalAlignment="Top" />
</UserControl>
 

DlgListMyMix.xaml.cs


/*******************************************************************
 *
 * システム名        : ミクラク2
 * プロジェクト名    : MixRaku
 * ファイル名        : DlgListMyMix.xaml.cs
 * 機能名            : マイミクリスト画面クラス
 * 開発保守履歴      : 2010/06/08 新規作成(r-uchiyama)
 *
 ********************************************************************/
 
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Xml;
 
namespace MixRaku
{
    /// <summary>
    /// マイミクリスト画面クラス
    /// </summary>
    public partial class DlgListMyMix : UserControl
    {
        private XmlDocument m_xDoc = new XmlDocument();
        private XmlNodeList m_xNodeList = null;
        private ListUC m_Uc = new ListUC();
 
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public DlgListMyMix()
        {
            InitializeComponent();
        }
 
        /// <summary>
        /// 画面読み込み
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // XMLデータ受信
            m_Uc.GetMyMix();
 
            m_xDoc.Load("mymix.xml");
 
            listView.Items.Clear();
 
            // データ表示
            LoadData();
 
            // ボタン使用不可
            EnableControl(true);
        }
 
        /// <summary>
        /// コントロールを使用可能/不可に切替
        /// </summary>
        /// <param name="bFlag"></param>
        private void EnableControl(Boolean bFlag)
        {
            BtnSearch.IsEnabled = bFlag;
            BtnSend.IsEnabled = bFlag;
            BtnView.IsEnabled = bFlag;
        }
 
        /// <summary>
        /// リスト表示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView_Loaded(object sender, RoutedEventArgs e)
        {
            listView.SelectionMode = SelectionMode.Single;
        }
 
        /// <summary>
        /// データ表示
        /// </summary>
        private void LoadData()
        {
            listView.Items.Clear();
 
            XmlNamespaceManager xNM = new XmlNamespaceManager(m_xDoc.NameTable);
            xNM.AddNamespace("smpl", "http://www.w3.org/2005/Atom");
 
            m_xNodeList = m_xDoc.SelectNodes("smpl:feed/smpl:entry", xNM);
 
            for (int i = 0; i < m_xNodeList.Count; i++)
            {
 
                Member member = new Member();
                member.Name = m_xNodeList.Item(i).SelectSingleNode("smpl:title", xNM).InnerText;
 
                // 名前(前方一致)
                if ( !member.Name.StartsWith(this.TxtSearch.Text) )
                {
                    continue;
                }
 
                string strId = m_xNodeList.Item(i).SelectSingleNode("smpl:id", xNM).InnerText;
                member.Id = strId.Substring(33, strId.Length - 33);
 
                // メンバーID(10桁に整形)
                member.Id = String.Format("{0,10}", int.Parse(member.Id));
 
                listView.Items.Add(member);
 
            }
 
            // 件数
            this.lblCount.Content = listView.Items.Count + "件";
 
        }
 
        /// <summary>
        /// 検索ボタン
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnSearch_Click(object sender, RoutedEventArgs e)
        {
            // データ表示
            LoadData();
        }
 
        /// <summary>
        /// クリアボタン
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnClear_Click(object sender, RoutedEventArgs e)
        {
            this.TxtSearch.Clear();
 
            // データ表示
            LoadData();
        }
 
        /// <summary>
        /// 閲覧ボタン
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnView_Click(object sender, RoutedEventArgs e)
        {
            Member member = (Member)listView.SelectedItems[0];
 
            string id = int.Parse(member.Id).ToString();
            m_Uc.View(id);
        }
 
        /// <summary>
        /// 送信ボタン
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnSend_Click(object sender, RoutedEventArgs e)
        {
            Member member = (Member)listView.SelectedItems[0];
 
            string id = int.Parse(member.Id).ToString();
            m_Uc.Send(id, member.Name, TxtSubject.Text, TxtMsg.Text);
        }
 
        /// <summary>
        /// カラムヘッダークリック
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GridViewColumnHeader_Click(object sender, RoutedEventArgs e)
        {
            listView.GridViewColumnHeader_Click(sender, e);
        }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void WindowsFormsHost_Loaded(object sender, RoutedEventArgs e)
        {
            WindowsFormsHost.Child = m_Uc;
        }
 
        /// <summary>
        /// 印刷ボタン
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnPrint_Click(object sender, RoutedEventArgs e)
        {
            DlgPrint dlg = new DlgPrint(this.listView);
            dlg.ShowDialog();
        }
 
    }
 
}
最終更新:2011年03月05日 13:51
添付ファイル